文档章节

hibernate简单增删改查

一个yuanbeth
 一个yuanbeth
发布于 2016/08/17 09:28
字数 592
阅读 27
收藏 0

一dao层

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();
    }
   }
}

二分页对象

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;
    }
}

三测试

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);
        }
    }

}

© 著作权归作者所有

共有 人打赏支持
一个yuanbeth
粉丝 81
博文 112
码字总数 68180
作品 0
深圳
程序员
私信 提问
整合hibernate4到spring4mvc框架

1.总体设计思路 写一个HibernateDao的公共接口HibernateCommonDao,实现基本的增删改查HibernateCommonDaoImpl,所有的具体业务类DaoImpl都继承自HibernateCommonDaoImpl并且implements它自己...

阿宇_
2015/09/15
617
0
来看看我能在帝都活下去吗

熟悉activeMQ 熟练cxf 熟悉memcached,redis 熟练struts,springmvc,hibernate,mybatis,ibatis,spring,dwr,JFinal ,spring secureity,shiro 熟练mssql,mysql,oracle 熟练html,css,javascript,b......

名字是什么能吃吗
2013/11/17
2.7K
26
BeetlSQL,Java Dao工具 - BeetlSQL

BeetlSQL 是一个全功能 DAO 工具,同时具有 Hibernate 优点 & Mybatis 优点功能,适用于承认以 SQL 为中心,同时又需求工具能自动能生成大量常用的 SQL 的应用。 BeetlSQL介绍 派别:SQL为中心...

闲大赋
2015/08/26
18.7K
15
Action、Dao、Service三层的功能划分

原文地址 Action是管理业务(Service)调度和管理跳转的。 Service是管理具体的功能的。 Action只负责管理,而Service负责实施。 DAO只完成增删改查,虽然可以1-n,n-n,1-1关联,模糊、动态...

木木侠
2017/05/14
0
0
hibernate中拦截器与事件监听器的区别

关于hibrenate中拦截器与事件监听器的介绍和使用的文章可以参看这篇文章: Hibernate拦截器(Interceptor)与事件监听器(Listener) 关于在hibernate中使用拦截器实现增删改查日志记录的文章可参...

z_jordon
2015/04/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

jquery通过id显示隐藏

var $div3 = $('#div3'); 显示 $div3.show(); 隐藏 $div3.hide();

yan_liu
今天
3
0
《乱世佳人》读书笔记及相关感悟3900字

《乱世佳人》读书笔记及相关感悟3900字: 之前一直听「荔枝」,后来不知怎的转向了「喜马拉雅」,一听就是三年。上班的时候听房产,买房了以后听装修,兴之所至时听旅行,分手后听亲密关系,...

原创小博客
今天
3
0
大数据教程(9.6)map端join实现

上一篇文章讲了mapreduce配合实现join,本节博主将讲述在map端的join实现; 一、需求 实现两个“表”的join操作,其中一个表数据量小,一个表很大,这种场景在实际中非常常见,比如“订单日志...

em_aaron
今天
3
0
cookie与session详解

session与cookie是什么? session与cookie属于一种会话控制技术.常用在身份识别,登录验证,数据传输等.举个例子,就像我们去超市买东西结账的时候,我们要拿出我们的会员卡才会获取优惠.这时...

士兵7
今天
3
0
十万个为什么之为什么大家都说dubbo

Dubbo是什么? 使用背景 dubbo为什么这么流行, 为什么大家都这么喜欢用dubbo; 通过了解分布式开发了解到, 为适应访问量暴增,业务拆分后, 子应用部署在多台服务器上,而多台服务器通过可以通过d...

尾生
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部