hibernate簡單增刪改查

一dao層java

package cn.itcast.b_dao;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

import cn.itcast.a_helloword.User;

public class UserDao {
    private static SessionFactory sessionFactory;
    
    static {
       //讀取配置文件並生成Session工廠對象
        Configuration cfg=new Configuration();
        cfg.configure("hibernate.cfg.xml");
        sessionFactory=cfg.buildSessionFactory();
    }
    
    /**
     * 保存用戶
     * @param user
     */

    public void save(User user){
        Session session=sessionFactory.openSession();
        Transaction tx = null;
        try {
            tx=session.beginTransaction();
            session.save(user);//更新
            tx.commit();
        } catch (RuntimeException e) {
            tx.rollback();
            throw e;
        } finally{
            session.close();
        }
    }
    
    /**
     * 更新用戶
     * @param user
     */

    public void update(User user){
        Session session=sessionFactory.openSession();
        Transaction tx = null;
        try {
            tx=session.beginTransaction();
            session.update(user);//保存
            tx.commit();
        } catch (RuntimeException e) {
            tx.rollback();
            throw e;
        } finally{
            session.close();
        }
    }
    
    /**
     *獲取指定id的對象
     * @param id
     * @return
     */

    public User getById(int id){
        Session session=sessionFactory.openSession();
        Transaction tx=null;
        try {
            tx=session.beginTransaction();
            User user = (User)session.get(User.class, id);//獲取
            tx.commit();
            return user;
        } catch (RuntimeException e) {
            tx.rollback();
            throw e;
        }finally{
            session.close();
        }
    }
    
    /**
     * 刪除指定id的用戶
     * 
     * @param id
     */

    public void delete(int id) {
        Session session = sessionFactory.openSession();
        Transaction tx = null;
        try {
            tx = session.beginTransaction();
            // -------------------------------------
            Object user = session.get(User.class, id); // 先從數據庫獲取對象
            session.delete(user); // 刪除的是實體對象
            // -------------------------------------
            tx.commit();
        } catch (RuntimeException e) {
            tx.rollback();
            throw e;
        } finally {
            session.close();
        }
    }
    
    /**
     * 查詢全部
     * @return
     */

   public List<User> findAll(){
       Session session = sessionFactory.openSession();
       Transaction tx = null;
       try {
        tx=session.beginTransaction();
        List<User> list = session.createQuery("FROM User").list();//使用H QL查詢
        tx.commit();
        return list;
    } catch (RuntimeException e) {
        tx.rollback();
        throw e;
    } finally{
        session.close();
    }
   }
   
   /**
    * 
    * @param firstResult
    *        開始獲取的記錄的索引
    * @param maxResult
    *        最多獲取多少條數據
    * @return 總記錄數+一段數據
    */

   public QueryResult<User> findAll(int firstResult,int maxResult){
       Session session = sessionFactory.openSession();
       Transaction tx = null;
       try {
        tx=session.beginTransaction();
        
        //1.查詢總記錄數
        Long count = (Long) session.createQuery(
                     "SELECT COUNT(*) FROM User")
                     .uniqueResult(); //執行查詢
        //2. 查詢一段數據
        Query query = session.createQuery("FROM User");
        query.setFirstResult(firstResult);
        query.setMaxResults(maxResult);
        List<User> list = query.list();
        tx.commit();
        return new QueryResult<User>(list, count);
    } catch (RuntimeException e) {
        tx.rollback();
        throw e;
    }finally{
        session.close();
    }
   }
}數據庫

二分頁對象session

package cn.itcast.b_dao;

import java.util.List;

public class QueryResult<T> {
    private List<T> list; //一段數據
    private Long count;  //總記錄數
    
    public QueryResult(List<T> list, Long count) {
        super();
        this.list = list;
        this.count = count;
    }
    
    public List<T> getList() {
        return list;
    }
    public void setList(List<T> list) {
        this.list = list;
    }
    public Long getCount() {
        return count;
    }
    public void setCount(Long count) {
        this.count = count;
    }
}測試

三測試ui

package cn.itcast.b_dao;

import static org.junit.Assert.*;

import java.util.List;

import org.junit.Test;

import cn.itcast.a_helloword.User;

public class UserDaoTest {

    private UserDao userDao=new UserDao();
    
    @Test
    public void testSave() {
        //準備對象
        User user=new User();
        user.setName("張三");
        
        //保存到數據庫
        userDao.save(user);
    }

    @Test
    public void testSave_25() {
        for(int i = 1; i <= 25; i++){
            User user=new User();
            user.setName("張三-"+i);
            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 testFindAll() {
        //查詢
        List<User> list = userDao.findAll();
        
        //顯示
        for(User user : list){
            System.out.println(user);
        }
    }

    @Test
    public void testFindAllIntInt() {
        //分頁的查詢
        QueryResult<User> qr= userDao.findAll(0,10000);
        
        //顯示
        System.out.println("總記錄的數量:"+qr.getCount());
        
        for(User user : qr.getList()){
            System.out.println(user);
        }
    }

}this

相關文章
相關標籤/搜索