您的位置:首页 > 其它

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

2016-03-30 20:19 627 查看
               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;
}
@Override
public 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工厂获取session
return 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){

//获取session
Session 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){
//获取session
Session 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

//获取session
Session 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();

@Test
public 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);
}
}

@Test
public void testDelete() {

dao.delete(4);
}

@Test
public void testGetById() {
System.out.println(dao.getById(1));
}

@Test
public void testUpdate() {
User user=(User) dao.getById(0);
user.setName("leigewudi");;
dao.update(user);

}

@Test
public void testFindAll() {
for(User user:dao.findAll())
System.out.println(user);
}

@Test
public void testFindByPage() {
PageBean<User> pageBean=dao.findByPage(3, 10);
for(User user:pageBean.getPageList())
System.out.println(user);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: