• 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
  • 相关阅读:
    POJ 3695 Rectangles
    POJ 2002 Squares
    linux 查看磁盘空间大小
    keymaster 快捷键管理器
    Pxloader
    as3数据类型检查写法(is/as/typeof/in/instanceof)用法介绍
    javascript的dom选择器
    javascript音频管理方案:SoundManager2
    Morris.js – 画折线图、面积图和环状图的统计图表库
    jsuri 让你方便的处理url
  • 原文地址:https://www.cnblogs.com/liuzhongfeng/p/6553252.html
Copyright © 2020-2023  润新知