一、jar包

  最基础的hibernatejar包,以及数据库驱动的jar包

  

二、数据库

  t_user表
id int 主键 自动增长
name varchar()

三、配置文件

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 配置数据库信息 -->
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">mysql123</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_test</property>
<property name="hibernate.connection.autocommit">true</property> <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- 显示生成的sql语句 -->
<property name="hibernate.show_sql">true</property> <mapping resource="cn/itcast/domain/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>

hibernate.cfg.xml

 <?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="cn.itcast.domain">
<class name="User" table="t_user">
<id name="id" type="int">
<generator class="native" />
</id>
<property name="name" type="string"/>
</class>
</hibernate-mapping>

Uesr.hbm.xml

四、程序

  1、主要是负责session的开启,属于模板代码

 package cn.itcast.domain.dao;

 import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration; public class HibernateUtils { private static SessionFactory sessionFactory;
static{
sessionFactory=new Configuration()
.configure()
.buildSessionFactory();
}
public static SessionFactory getSessionFactory(){
return sessionFactory;
}
public static Session openSession(){
return sessionFactory.openSession();
}
}

HibernateUtils.java

  2、定义一个接口,声明增删改查的方法

 package cn.itcast.domain.dao;

 import java.util.List;
import cn.itcast.domain.User; public interface UserDao { public void save(User user);
public void update(User user);
public void delete(int id);
public User getById(int id);
public List<User> findAll();
public QueryResult findAll(int firstNumber, int maxNumber);
}

UserDao.java

  3、对接口创建实现类

 package cn.itcast.domain.dao;

 import java.util.List;

 import org.hibernate.Session;
import org.hibernate.Transaction;
import cn.itcast.domain.User; public class UserDaoImpl implements UserDao { @Override
public void save(User user) {
// TODO Auto-generated method stub
Session session = HibernateUtils.openSession();
Transaction tx= null;
try{
tx=session.beginTransaction();
session.save(user);
tx.commit();
}catch(RuntimeException exception){
tx.rollback();
throw exception;
}finally{
session.close();
}
} @Override
public void update(User user) {
// TODO Auto-generated method stub
Session session = HibernateUtils.openSession();
Transaction tx=null;
try{
tx=session.beginTransaction();
session.update(user);
tx.commit();
}catch(RuntimeException exception){
tx.rollback();
throw exception;
}finally{
session.close();
}
} @Override
public void delete(int id) {
// TODO Auto-generated method stub
Session session = HibernateUtils.openSession();
Transaction tx= null;
try{
tx=session.beginTransaction();
Object user = session.get(User.class, id);
session.delete(user);
tx.commit();
}catch(RuntimeException exception){
tx.rollback();
throw exception;
}finally{
session.close();
}
} @Override
public User getById(int id) {
// TODO Auto-generated method stub
Session session = HibernateUtils.openSession();
Transaction tx= null;
try{
tx=session.beginTransaction();
User user =(User) session.get(User.class, id);
tx.commit();
return user;
}catch(RuntimeException exception){
tx.rollback();
throw exception;
}finally{
session.close();
}
} @Override
public List<User> findAll() {
// TODO Auto-generated method stub
Session session = HibernateUtils.openSession();
Transaction tx= null;
try{
tx=session.beginTransaction();
List<User> user = session.createQuery(" FROM User").list();
tx.commit();
return user;
}catch(RuntimeException exception){
tx.rollback();
throw exception;
}finally{
session.close();
}
} /**
* 分页查询
*/
@Override
public QueryResult findAll(int firstNumber, int maxNumber) {
// TODO Auto-generated method stub
Session session = HibernateUtils.openSession();
Transaction tx= null;
try{
tx=session.beginTransaction();
List<User> list = session.createQuery(" FROM User")
.setFirstResult(firstNumber)
.setMaxResults(maxNumber)
.list(); Long count = (Long) session.createQuery("SELECT COUNT(*) FROM User").uniqueResult();
tx.commit();
return new QueryResult(count.intValue(),list);
}catch(RuntimeException exception){
tx.rollback();
throw exception;
}finally{
session.close();
}
} }

UserDaoImpl.java

  4、做一个测试类

 package cn.itcast.domain.dao;

 import java.util.List;

 import org.junit.Test;

 import cn.itcast.domain.User;

 public class TestUserDao {

     private UserDao userDao = new UserDaoImpl();

     @Test
public void testSave_1() {
User user = new User();
user.setName("张三"); // 保存
userDao.save(user);
} @Test
public void testGetById() {
User user = userDao.getById(1);
System.out.println(user);
} @Test
public void testUpdate() {
// 从数据库获取一条存在的数据
User user = userDao.getById(1);
user.setName("李四"); // 更新
userDao.update(user);
} @Test
public void testDelete() {
userDao.delete(1);
} // ------------ @Test
public void testSave_25() {
for (int i = 1; i <= 25; i++) {
User user = new User();
user.setName("test_" + i);
userDao.save(user); // 保存
}
} @Test
public void testFindAll() {
List<User> list = userDao.findAll();
for (User user : list) {
System.out.println(user);
}
} @Test
public void testFindAllIntInt() {
// 查询
// QueryResult qr = userDao.findAll(0, 10); // 第1页,每页10条
// QueryResult qr = userDao.findAll(10, 10); // 第2页,每页10条
QueryResult qr = userDao.findAll(20, 10); // 第3页,每页10条 // 显示结果
System.out.println("总记录数:" + qr.getCount());
for (User user : (List<User>) qr.getList()) {
System.out.println(user);
}
} }

TestUserDao.java

hibernate搭建及其增删改查的更多相关文章

  1. Spring JdbcTemplate框架搭建及其增删改查使用指南

    Spring JdbcTemplate框架搭建及其增删改查使用指南 前言: 本文指在介绍spring框架中的JdbcTemplate类的使用方法,涉及基本的Spring反转控制的使用方法和JDBC的基 ...

  2. 肝 hibernate 配置and增删改查 and 测试

    已经通宵三天撸代码了,现在的我已经养成晚上修仙写代码的节奏了.....最近 刚刚复习到了 hibernate 谈谈 这篇文章就谈谈我对这货的理解吧. 在看这篇文章之前希望你 知道sessionfact ...

  3. Hibernate下的增删改查

    概述: 关系--对象映射的中间件,属于开源ORM框架,是我们业务逻辑层中的调用数据库的中间件 演变: jdbc---hibernater---mybatis hibernate和mybatis区别? ...

  4. bootstrap+Ajax+SSM(maven搭建)实现增删改查

    https://www.jianshu.com/p/d76316b48e3e 源码: https://github.com/Ching-Lee/crud 功能点: 分页 数据校验 ajax Rest风 ...

  5. Hibernate入门_增删改查

    一.Hibernate入门案例剖析:  ①创建实体类Student 并重写toString方法 public class Student { private Integer sid; private ...

  6. ssm项目框架搭建(增删改查案例实现)——(SpringMVC+Spring+mybatis项目整合)

    Spring 常用注解 内容 一.基本概念 1. Spring 2. SpringMVC 3. MyBatis 二.开发环境搭建 1. 创建 maven 项目 2. SSM整合 2.1 项目结构图 2 ...

  7. hibernate的配置, 增删改查

    路径:查找路径 实际上都是查找编译后的对应的路径,在bin文件夹中总 增删改必须开启事务才行 hibernate加载文件的两种方式 configure 1.引包 antlr-2.7.6.jar bac ...

  8. struts+hibernate 请求数据库增删改查(小项目实例)

      StudentAction.java package com.action; import java.util.ArrayList; import java.util.List; import j ...

  9. 5.Hibernate实现全套增删改查和ajax异步分页

    1.1 创建如下oracle数据库脚本 drop sequence seq_stu; create sequence SEQ_STU minvalue maxvalue start increment ...

随机推荐

  1. [Web 前端] 020 css 定位之绑定定位

    绑定定位 少废话,上例子 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  2. Kosaraju算法 有向图的强连通分量

    有向图的强连通分量即,在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected).如果有向图G的每两个顶点都强连通,称G是一个强连通图.非强连通图有向图的极 ...

  3. java _static 关键字

    • 在类中,用static声明的成员变量为静态成员变量 ,或者叫做: 类属性,类变量. • 它为该类的公用变量,属于类,被该类的所有实例共享,在类被载入时被显式初始化, • 对于该类的所有对象来说,s ...

  4. Python2中range 和xrange的区别??

    两者用法相同,不同的是range返回的结果是一个列表,而xrange的结果是一个生成器, 前者是直接开辟一块内存空间来保存列表,后者是边循环边使用,只有使用时才会开辟内存空间, 所以当列表很长时,使用 ...

  5. SCUT - 77 - 哈利波特与他的魔法杖 - 线段树

    https://scut.online/p/77 线段树的一种奇怪的应用,暴力区间更新,每次update直接pushdown到底部,然后从维护底部.这样下次update的时候假如提前遇到底部就很快返回 ...

  6. 用jquery制作的简单轮播图

    我也是进入H5前端的小菜鸟一枚,最近才进入jquery的学习,所以打算对自己的学习进行记录. 今天分享的是一个简单的轮播图,这个轮播图的特效很简单,能够进行图片的轮播以及点击相应图片,图片能够跳转到相 ...

  7. pg_dumpall - 抽出一个 PostgreSQL 数据库集群到脚本文件中

    SYNOPSIS pg_dumpall [ option...] DESCRIPTION 描述 pg_dumpall 是一个用于写出("转储")一个数据库集群里的所有 Postgr ...

  8. IC设计:CMOS器件及其电路

    作为一个微电子专业的IC learner,这个学期也有一门课:<微电子器件>,今天我就来聊聊基本的器件:CMOS器件及其电路.在后面会聊聊锁存器和触发器. ·MOS晶体管结构与工作原理简述 ...

  9. leetcode x进制数 python3

    不少题目都是实现吧10进制数转换成x进制数,实际上都是一个套路,下面是7进制的,想换成什么进制,把7替换成相应数字即可,输出的是字符串 16,32进制这种有特殊要求的转不了,其他的应该通用 class ...

  10. phpstorm 调试时浏览器显示The requested resource / was not found on this server

    1.进入thinkphp项目的public 目录运行以下命令即可 root@jiang:/var/www/tp5# php -S localhost:8080 router.php PHP 7.2.2 ...