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
- hibernate实现单个对象的增删改查,以及实现分页查询
- SpringBoot+Jpa实现增删改查以及分页查询
- MyBatis简单的增删改查以及简单的分页查询实现
- Thymeleaf+spring jpa+springmvc实现的增删改查以及分页查询
- Hibernate配置以及增删改查实现
- Hibernate实现增删改查以及和JDBC的关系
- strut2+hibernate实现的增删改查
- 实现hibernate的增删查改。
- Hibernate实现简单的增删改查
- Hibernate的增删查改(分页+其他查询)
- Hibernate实现增删改查
- Hibernate实现增删改查
- spring-data-jpa实现增删改查以及分页操作
- JDBC实现增删改查、模糊查询、分页查询、子查询以及体现单例设计模式连接数据库
- Ibatis调用存储过程实现增删改以及分页查询
- struts2+spring+mybatis datagrid增删改查以及分页的实现
- Spring与SpringMVC整合,以及实现数据库数据的增删查改和分页操作
- struts2+spring+mybatis datagrid增删改查以及分页的实现
- HTML+CSS基础篇(四)——编码规范
- 编写的windows程序,崩溃时产生crash dump文件的办法
- 直接改应用!Flipboard开源iOS应用内调试工具FLEX
- 写在开篇
- 常用虚拟化工具概述
- hibernate实现单个对象的增删改查,以及实现分页查询
- OpenGL立方体在世界坐标系中_缩放_旋转_平移_顶点片源着色器_光照作用
- 杭电4546
- 购物商城shopping连载(8)
- 【Data Algorithms_Recipes for Scaling up with Hadoop and Spark】Chapter 11 Smarter Email Marketing wit
- HDU1671Phone List
- 记毕设中遇到的菜鸡问题----2
- UIKit层面的动画
- 【JavaScript】基础知识整理(三)