hibernate实现单个对象的增删改查,以及实现分页查询

来源:互联网 发布:修改照片拍摄时间软件 编辑:程序博客网 时间:2024/05/17 03:43

               hibernate实现单个对象的增删改查,以及实现分页查询,大家可以从这个小例子中感受到hibernate的魅力,如果和以前的jdbc实现相比,hibernate的实现就更加简单了

以下是实现流程:

1:创建一个对象实体User对应数据库的表user,以及创建映射文件,hibernate配置文件,这里就不在赘述了,大家可以参看,我写的如何创建第一个hibernate程序文章,这里不在讨论:

package com.leige.domain;import java.util.Date;public class User {    private int id;private String name;private Date birthday;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}@Overridepublic String toString() {return "User [id=" + id + ", name=" + name + ", birthday=" + birthday+ "]";}}

2:创建hibernate工具类(实现功能功能就是获取sesiionFactory和session):

package com.leige.domain;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;public class HibernateUtils {static SessionFactory sessionFactory=null;//加载配置方法static{//默认加载src下的/hibernate.cfg.xml,也可以指定其他文件sessionFactory=new Configuration().configure().buildSessionFactory();}public static SessionFactory  getSessionFactory(){//返回一个session工厂return sessionFactory;}public static Session getSession(){//从session工厂获取sessionreturn getSessionFactory().openSession();}}

3:创建UserDao操作user对象的增删改查以及分页操作:

(1)首先创建一个分页对象(用来存储分页的对象和所有记录条数):

package com.leige.dao;import java.util.List;public class PageBean<T> {private int count;private List<T> pageList;public int getCount() {return count;}public void setCount(int count) {this.count = count;}public List<T> getPageList() {return pageList;}public void setPageList(List<T> pageList) {this.pageList = pageList;}}
(2):创建UserDao操作类:


package com.leige.dao;import java.util.List;import org.hibernate.Session;import org.hibernate.Transaction;import com.leige.domain.HibernateUtils;import com.leige.domain.User;/** * @author 磊哥 * *//** * */public class UserDao {/** * @param 向数据库中添加对象 */public void add(Object user){//获取sessionSession session=HibernateUtils.getSession();//标准格式Transaction tx=null;try {//开启事务tx=session.beginTransaction();session.save(user);//保存对象tx.commit();//提交事务} catch (Exception e) {tx.rollback();throw e;}finally{if(session!=null)session.close();//关闭连接}}/** * 删除方法 */public void delete(int id){//获取sessionSession session=HibernateUtils.getSession();//标准格式Transaction tx=null;try {//开启事务tx=session.beginTransaction();Object obj=getById(id);     session.delete(obj);;//删除对象tx.commit();//提交事务} catch (Exception e) {tx.rollback();throw e;}finally{if(session!=null)session.close();//关闭连接}}  /** * 查找方法,根据id查找 * @return */public Object getById(int id) {// TODO Auto-generated method stub    //获取sessionSession session=HibernateUtils.getSession();//标准格式Transaction tx=null;
<pre code_snippet_id="1629549" snippet_file_name="blog_20160330_4_7417432" name="code" class="html">                   Object obj=null;
try {//开启事务tx=session.beginTransaction();obj=session.get(User.class, id);//查找对象tx.commit();//提交事务} catch (Exception e) {tx.rollback();throw e;}finally{if(session!=null)session.close();//关闭连接}
<pre code_snippet_id="1629549" snippet_file_name="blog_20160330_4_7417432" name="code" class="html">                      return obj;
}/** * @param 根据传入对象更新数据库中记录 */public void update(User user){ //获取sessionSession session=HibernateUtils.getSession();//标准格式Transaction tx=null;try {//开启事务tx=session.beginTransaction();session.update(user);//更新对象tx.commit();//提交事务} catch (Exception e) {tx.rollback();throw e;}finally{if(session!=null)session.close();//关闭连接}}/** * 查询所有对象 */public List<User> findAll(){ //获取sessionSession session=HibernateUtils.getSession();//标准格式Transaction tx=null;
                         <pre code_snippet_id="1629549" snippet_file_name="blog_20160330_4_7417432" name="code" class="html" style="font-size: 13.3333px;">                               List<User> list=null;
try {//开启事务tx=session.beginTransaction();list=session.createQuery("from User").list();//查询所有tx.commit();//提交事务} catch (Exception e) {tx.rollback();throw e;}finally{if(session!=null)session.close();//关闭连接}
<pre code_snippet_id="1629549" snippet_file_name="blog_20160330_4_7417432" name="code" class="html" style="font-size: 13.3333px;">                           return list;
}/** * 分页查找,传入页码pageCode,分页大小pageCount,返回页码所包含的内容 */public PageBean findByPage(int pageCode ,int pageCount){//获取sessionSession session=HibernateUtils.getSession();//标准格式Transaction tx=null;
<pre code_snippet_id="1629549" snippet_file_name="blog_20160330_4_7417432" name="code" class="html" style="font-size: 13.3333px;">                 PageBean< User> pageBean=null; 
try {//开启事务tx=session.beginTransaction();//根据页码计算要传入的参数int firstResult=(pageCode-1)*pageCount;//生成分页对象
pageBean=new PageBean<User>();List<User> list=session.createQuery("from User").setFirstResult(firstResult).setMaxResults(pageCount).list();//查询所有//查询总页数Long count=(Long) session.createQuery("select count(*) from User").uniqueResult();//设置内容pageBean.setCount(count.intValue());pageBean.setPageList(list);tx.commit();//提交事务} catch (Exception e) {tx.rollback();throw e;}finally{if(session!=null)session.close();//关闭连接}
                           <pre code_snippet_id="1629549" snippet_file_name="blog_20160330_4_7417432" name="code" class="html" style="font-size: 13.3333px;">                         return pageBean;
}}

4:创建测试类,UserDaoTest,这个可以用eclipse自动生成,具体的测试步骤还需要自己写:

package com.leige.dao;import static org.junit.Assert.fail;import java.util.Date;import org.junit.Test;import com.leige.domain.User;//测试方法public class UserDaoTest {UserDao dao=new UserDao();@Testpublic void testAdd() {User user=null;for(int i=5;i<23;i++){user=new User();user.setBirthday(new Date());user.setId(i);user.setName("leige"+i);dao.add(user);}}@Testpublic void testDelete() {dao.delete(4);}@Testpublic void testGetById() {System.out.println(dao.getById(1));}@Testpublic void testUpdate() {User user=(User) dao.getById(0);user.setName("leigewudi");;dao.update(user);}@Testpublic void testFindAll() {for(User user:dao.findAll())System.out.println(user);}@Testpublic void testFindByPage() {PageBean<User> pageBean=dao.findByPage(3, 10);for(User user:pageBean.getPageList())System.out.println(user);}}



0 0
原创粉丝点击