hibernate搭建及其增删改查

一、jar包

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

  

二、数据库

1  t_user表
2      id  int  主键  自动增长
3      name varchar(20)

三、配置文件

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE hibernate-configuration PUBLIC
 3     "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 4     "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
 5 <hibernate-configuration>
 6     <session-factory>
 7         <!--  配置数据库信息 -->
 8         <property name="hibernate.connection.username">root</property>
 9         <property name="hibernate.connection.password">mysql123</property>
10         <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
11         <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_test</property>
12         <property name="hibernate.connection.autocommit">true</property>
13         
14         <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
15         <property name="hibernate.hbm2ddl.auto">update</property>
16         <!-- 显示生成的sql语句 -->
17         <property name="hibernate.show_sql">true</property>
18         
19         <mapping resource="cn/itcast/domain/User.hbm.xml"/>
20     </session-factory>
21 </hibernate-configuration>
hibernate.cfg.xml
 1 <?xml version="1.0"?>
 2 <!DOCTYPE hibernate-mapping PUBLIC
 3     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 4     "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
 5 <hibernate-mapping package="cn.itcast.domain">
 6     <class name="User" table="t_user">
 7         <id name="id" type="int">
 8             <generator class="native" />
 9         </id>
10         <property name="name" type="string"/>    
11     </class>
12 </hibernate-mapping>
Uesr.hbm.xml

四、程序

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

 1 package cn.itcast.domain.dao;
 2 
 3 import org.hibernate.Session;
 4 import org.hibernate.SessionFactory;
 5 import org.hibernate.cfg.Configuration;
 6 
 7 public class HibernateUtils {
 8 
 9     private static SessionFactory sessionFactory;
10     static{
11         sessionFactory=new Configuration()
12                     .configure()
13                     .buildSessionFactory();
14     }
15     public static SessionFactory getSessionFactory(){
16         return sessionFactory;
17     }
18     public static Session openSession(){
19         return sessionFactory.openSession();
20     }
21 }
HibernateUtils.java

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

 1 package cn.itcast.domain.dao;
 2 
 3 import java.util.List;
 4 import cn.itcast.domain.User;
 5 
 6 public interface UserDao {
 7 
 8     public void save(User user);
 9     public void update(User user);
10     public void delete(int id);
11     public User getById(int id);
12     public List<User> findAll();
13     public QueryResult findAll(int firstNumber, int maxNumber);
14 }
UserDao.java

  3、对接口创建实现类

  1 package cn.itcast.domain.dao;
  2 
  3 import java.util.List;
  4 
  5 import org.hibernate.Session;
  6 import org.hibernate.Transaction;
  7 import cn.itcast.domain.User;
  8 
  9 public class UserDaoImpl implements UserDao {
 10 
 11     @Override
 12     public void save(User user) {
 13         // TODO Auto-generated method stub
 14         Session session = HibernateUtils.openSession();
 15         Transaction tx= null;
 16         try{    
 17             tx=session.beginTransaction();
 18             session.save(user);
 19             tx.commit();
 20         }catch(RuntimeException exception){
 21             tx.rollback();
 22             throw exception;
 23         }finally{
 24             session.close();
 25         }                    
 26     }
 27 
 28     @Override
 29     public void update(User user) {
 30         // TODO Auto-generated method stub
 31         Session session = HibernateUtils.openSession();
 32         Transaction tx=null;
 33         try{    
 34             tx=session.beginTransaction();
 35             session.update(user);
 36             tx.commit();
 37         }catch(RuntimeException exception){
 38             tx.rollback();
 39             throw exception;
 40         }finally{
 41             session.close();
 42         }            
 43     }
 44 
 45     @Override
 46     public void delete(int id) {
 47         // TODO Auto-generated method stub
 48         Session session = HibernateUtils.openSession();
 49         Transaction tx= null;
 50         try{        
 51             tx=session.beginTransaction();
 52             Object user = session.get(User.class, id);
 53             session.delete(user);
 54             tx.commit();
 55         }catch(RuntimeException exception){
 56             tx.rollback();
 57             throw exception;
 58         }finally{
 59             session.close();
 60         }    
 61     }
 62 
 63     @Override
 64     public User getById(int id) {
 65         // TODO Auto-generated method stub
 66         Session session = HibernateUtils.openSession();
 67         Transaction tx= null;
 68         try{        
 69             tx=session.beginTransaction();
 70             User user =(User) session.get(User.class, id);
 71             tx.commit();
 72             return user;
 73         }catch(RuntimeException exception){
 74             tx.rollback();
 75             throw exception;
 76         }finally{
 77             session.close();
 78         }        
 79     }
 80 
 81     @Override
 82     public List<User> findAll() {
 83         // TODO Auto-generated method stub
 84         Session session = HibernateUtils.openSession();
 85         Transaction tx= null;
 86         try{        
 87             tx=session.beginTransaction();
 88             List<User> user = session.createQuery(" FROM User").list();
 89             tx.commit();
 90             return user;
 91         }catch(RuntimeException exception){
 92             tx.rollback();
 93             throw exception;
 94         }finally{
 95             session.close();
 96         }    
 97     }
 98 
 99     /**
100      * 分页查询
101      */
102     @Override
103     public QueryResult findAll(int firstNumber, int maxNumber) {
104         // TODO Auto-generated method stub    
105         Session session = HibernateUtils.openSession();
106         Transaction tx= null;
107         try{        
108             tx=session.beginTransaction();
109             List<User> list = session.createQuery(" FROM User")
110                     .setFirstResult(firstNumber)
111                     .setMaxResults(maxNumber)
112                     .list();
113             
114             Long count = (Long) session.createQuery("SELECT COUNT(*) FROM User").uniqueResult();
115             tx.commit();
116             return new QueryResult(count.intValue(),list);
117         }catch(RuntimeException exception){
118             tx.rollback();
119             throw exception;
120         }finally{
121             session.close();
122         }    
123     }
124 
125 }
UserDaoImpl.java

  4、做一个测试类

 1 package cn.itcast.domain.dao;
 2 
 3 import java.util.List;
 4 
 5 import org.junit.Test;
 6 
 7 import cn.itcast.domain.User;
 8 
 9 public class TestUserDao {
10 
11     private UserDao userDao = new UserDaoImpl();
12 
13     @Test
14     public void testSave_1() {
15         User user = new User();
16         user.setName("张三");
17 
18         // 保存
19         userDao.save(user);
20     }
21 
22     @Test
23     public void testGetById() {
24         User user = userDao.getById(1);
25         System.out.println(user);
26     }
27 
28     @Test
29     public void testUpdate() {
30         // 从数据库获取一条存在的数据
31         User user = userDao.getById(1);
32         user.setName("李四");
33 
34         // 更新
35         userDao.update(user);
36     }
37 
38     @Test
39     public void testDelete() {
40         userDao.delete(1);
41     }
42 
43     // ------------
44 
45     @Test
46     public void testSave_25() {
47         for (int i = 1; i <= 25; i++) {
48             User user = new User();
49             user.setName("test_" + i);
50             userDao.save(user); // 保存
51         }
52     }
53 
54     @Test
55     public void testFindAll() {
56         List<User> list = userDao.findAll();
57         for (User user : list) {
58             System.out.println(user);
59         }
60     }
61 
62     @Test
63     public void testFindAllIntInt() {
64         // 查询
65         // QueryResult qr = userDao.findAll(0, 10); // 第1页,每页10条
66         // QueryResult qr = userDao.findAll(10, 10); // 第2页,每页10条
67         QueryResult qr = userDao.findAll(20, 10); // 第3页,每页10条
68 
69         // 显示结果
70         System.out.println("总记录数:" + qr.getCount());
71         for (User user : (List<User>) qr.getList()) {
72             System.out.println(user);
73         }
74     }
75 
76 }
TestUserDao.java

 

posted @ 2017-03-15 11:22  liurio  阅读(156)  评论(0编辑  收藏  举报