- 浏览: 29270 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (24)
- JSP (0)
- struts (0)
- hibernate (0)
- struts2.0 (0)
- spring (1)
- Database (0)
- Jquery (2)
- 敏捷开发 (0)
- javascript (1)
- 项目规格设计 (0)
- Junit (0)
- 设计模式 (0)
- 算法 (0)
- webservice (0)
- 项目总结 (0)
- j2se (0)
- quartz任务 (0)
- dom4j (0)
- 简历 (0)
- 学习资料 (0)
- 英语 (1)
- junit测试 (0)
- ssh2整合 (0)
- web服务 (0)
- eclipse (1)
- ibaitis (0)
- 纯代码实现Quartz定时器(一) (0)
- 问题 (1)
最新评论
[/size][size=small][/size][size=x-small] 对HibernateDaoSupport进行二次封装:hibernate增删改查组件
本组件继承了HibernateDaoSupport,并完成对HibernateDaoSupport进行二次封装。提取平时开发常用的底层操作方法,并根据个
人习惯,定义自己的编码规范。根据sun官方的最新开发规范,使用了jdk的新特性——泛型。所有的操作对象以泛型指定。
定义接口规范:IBaseDao.java[/color][color=red]
package com.hoo.dao;
import java.io.Serializable;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.criterion.DetachedCriteria;
import org.springframework.orm.hibernate3.HibernateTemplate;
import com.hoo.entity.Page;
/***
* <b>function:</b> 增删改查组件规范接口
* @project NetWorkService
* @package com.hoo.dao
* @fileName IBaseDao.java
* @createDate 2010-8-2 下午05:28:03
* @author hoojo
* @email hoojo_@126.com
* @blog http://blog.csdn.net/IBM_hoojo
*/
public interface IBaseDao {
/**
* <b>function:</b> 增加一个entity对象,返回是否添加成功
* @createDate 2010-8-2 下午05:28:38
* @author hoojo
* @param <T> 对象类型
* @param entity 对象
* @return boolean true/false
* @throws Exception
*/
public <T> boolean add(T entity) throws Exception;
/**
* <b>function:</b> 添加一个entity对象,返回添加对象的Integer类型的主键
* @createDate 2010-8-2 下午05:29:39
* @author hoojo
* @param <T> 对象类型
* @param entity 将要添加的对象
* @return Integer 返回主键
* @throws Exception
*/
public <T> Integer addAndGetId4Integer(T entity) throws Exception;
/**
* <b>function:</b> 添加一个对象并且返回该对象的String类型的主键
* @createDate 2010-8-2 下午05:31:32
* @author hoojo
* @param <T> 对象类型
* @param entity 将要添加的对象
* @return String 返回的主键
* @throws Exception
*/ [/size]
public <T> String addAndGetId4String(T entity) throws Exception;
/**
* <b>function:</b> 传入hql语句执行
* @createDate 2010-8-2 下午04:42:26
* @author hoojo
* @param hql String hql语句
* @return int 影响行数
* @throws Exception
*/
public int executeByHql(String hql) throws Exception;
/**
* <b>function:</b> 传入hql语句执行查询,返回list集合
* @createDate 2010-8-3 上午10:00:34
* @author hoojo
* @param hql 查询的hql语句
* @return List集合
* @throws Exception
*/
public <T> List<T> findByHql(String hql) throws Exception;
/**
* <b>function:</b> 执行原生态的sql语句,添加、删除、修改语句
* @createDate 2010-8-2 下午05:33:42
* @author hoojo
* @param sql 将要执行的sql语句
* @return int [size=small][size=x-small][/size]
* @throws Exception
*/
public int executeBySql(String sql) throws Exception;
/**
* <b>function:</b> 传入sql语句执行查询,返回list集合
* @createDate 2010-8-3 上午10:00:34
* @author hoojo
* @param sql 查询的sql语句
* @return List集合
* @throws Exception
*/
public <T> List<T> findBySql(String sql) throws Exception;
/**
* <b>function:</b> 修改entity对象,返回是否修改成功
* @createDate 2010-8-2 下午05:35:47
* @author hoojo
* @param <T> 对象类型
* @param entity 将要修改的对象
* @return boolean true/false 是否修改成功
* @throws Exception
*/
public <T> boolean edit(T entity) throws Exception;
/**
* <b>function:</b> 传入hql语句执行修改,返回是否修改成功
* @createDate 2010-8-2 下午05:36:31
* @author hoojo
* @param hql 查询的hql语句
* @return boolean true/false 返回是否修改成功
* @throws Exception
*/
public boolean edit(String hql) throws Exception;
/**
* <b>function:</b> 执行修改的hql语句,返回修改的行数
* @createDate 2010-8-2 下午05:38:58
* @author hoojo
* @param hql 修改语句
* @return int 返回修改的行数
* @throws Exception
*/
public int editByHql(String hql) throws Exception;
/**
* <b>function:</b> 传入一个将要删除的entity对象,返回删除是否成功
* @createDate 2010-8-2 下午05:42:02
* @author hoojo
* @param <T> 传入对象类型
* @param entity 将要传入的对象
* @return boolean true/false
* @throws Exception
*/
public <T> boolean remove(T entity) throws Exception;
/**
* <b>function:</b> 传入一个entity对象Class和String型主键,返回该对象
* @createDate 2010-8-2 下午05:44:53
* @author hoojo
* @param <T> 返回、传入对象类型
* @param c 对象Class
* @param id 主键
* @return T 返回传入类型对象
* @throws Exception
*/
public <T> T getById(Class<T> c, String id) throws Exception;
/**
* <b>function:</b> 传入一个entity对象Class和Integer类型主键,返回该对象
* @createDate 2010-8-2 下午05:47:20
* @author hoojo
* @param <T> 返回、传入对象类型
* @param c 对象Class
* @param id 主键
* @return T 返回该类型的对象
* @throws Exception
*/
public <T> T getById(Class<T> c, Integer id) throws Exception;
/**
* <b>function:</b> 传入一个entity对象Class和Serializable类型主键,返回该对象
* @createDate 2010-8-2 下午05:48:36
* @author hoojo
* @param <T> 返回、传入对象类型
* @param c 对象Class
* @param id 主键
* @return T 返回该类型的对象
* @throws Exception
*/
public <T> T get(Class<T> c, Serializable id) throws Exception;
/**
* <b>function:</b> 传入hql语句,查询对象
* @createDate 2010-8-2 下午05:49:31
* @author hoojo
* @param <T> 返回对象类型
* @param hql 查询的hql语句
* @return 对象T
* @throws Exception
*/
public <T> T get(String hql) throws Exception;
/**
* <b>function:</b> 通过hql语句查询List集合
* @createDate 2010-8-2 下午05:51:05
* @author hoojo
* @param hql 查询hql语句
* @return List<?>
* @throws Exception
*/
public <T> List<T> getList(String hql) throws Exception;
/**
* <b>function:</b> 传入删除的hql语句,删除记录
* @createDate 2010-8-3 上午09:53:49
* @author hoojo
* @param hql 将要被执行删除的hql语句
* @return 是否删除成功
* @throws Exception
*/
public boolean remove(String hql) throws Exception;
/**
* <b>function:</b> 动态查询
* @createDate 2010-8-3 上午10:53:37
* @author hoojo
* @param <T> 查询类的类型
* @param c 动态查询组合对象
* @return list集合
* @throws Exception
*/
public <T> List<T> getList(Class<T> c) throws Exception;
/**
* <b>function:</b> 传入hql查询语句和object数组类型的参数,返回查询list集合
* @createDate 2010-8-2 下午05:52:36
* @author hoojo
* @param hql 查询的hql语句
* @param obj 查询参数
* @return 返回list集合
* @throws Exception
*/
public <T> List<T> getList(String hql, Object[] obj) throws Exception;
/**
* <b>function:</b> 传入查询语句和查询总条数(总记录)的hql语句、当前页数、每页显示调试数;返回查询后的list集合;
* list集合保存总记录调试和记录结果
* @createDate 2010-8-2 下午05:54:01
* @author hoojo
* @param queryHql 查询记录hql语句
* @param queryCountHql 查询记录条数hql语句
* @param firstResult 当前查询页
* @param maxResult 每页显示多少条
* @return List返回集合 集合0保存查询结果、集合1保存总记录条数
* @throws Exception
*/
public List<?> showPage(String queryHql, String queryCountHql, int firstResult, int maxResult) throws Exception;
/**
* <b>function:</b> 传入查询语句和查询总条数(总记录)的hql语句、page分页对象;返回查询后的list集合;
* @createDate 2010-8-3 上午11:16:59
* @author hoojo
* @param queryHql list集合结果查询
* @param queryCountHql 总记录调试查询
* @param page 分页对象
* @throws Exception
*/
public <T> void showPage(String queryHql, String queryCountHql, Page<T> page) throws Exception;
/**
* <b>function:</b> 分页查询,传入查询count的hql语句和DetachedCriteria动态查询条件进行查询分页
* @createDate 2010-8-3 上午11:04:39
* @author hoojo
* @param queryCountHql hql查询count语句总条数
* @param cResult DetachedCriteria 动态查询条件
* @param firstResult 起始
* @param maxResult 最大页数
* @return List<?> 查询集合
* @throws Exception
*/
public List<?> showPage(String queryCountHql, DetachedCriteria cResult, int firstResult, int maxResult) throws Exception;
/**
* <b>function:</b> 分页查询,传入查询的count的hql语句和动态查询DetachedCriteria类及page分页entity
* @createDate 2010-8-3 上午11:14:30
* @author hoojo
* @param queryCountHql 查询count语句
* @param cResult DetachedCriteria 动态查询组合类
* @param page Page分页实体类
* @throws Exception
*/
public <T> void showPage(String queryCountHql, DetachedCriteria cResult, Page<T> page) throws Exception;
/**
* <b>function:</b> 传入查询条件DetachedCriteria进行查询
* @createDate 2010-8-3 上午11:55:28
* @author hoojo
* @param <T> 类型
* @param dc DetachedCriteria动态条件查询
* @return List
* @throws Exception
*/
public <T> List<T> find(DetachedCriteria dc) throws Exception;
/**
* <b>function:</b> 暴露基类session供用户使用
* @createDate 2010-8-3 上午11:59:54
* @author hoojo
* @return Session
*/
public Session session();
/**
* <b>function:</b> 暴露HibernateTemplate模板,当基类(增删改查组件)方法不够用可以用模板进行操作
* @createDate 2010-8-3 上午11:58:51
* @author hoojo
* @return HibernateTemplate
*/
public HibernateTemplate getTemplate();
}
package com.hoo.dao;
import java.io.Serializable;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.criterion.DetachedCriteria;
import org.springframework.orm.hibernate3.HibernateTemplate;
import com.hoo.entity.Page;
/***
* <b>function:</b> 增删改查组件规范接口
* @project NetWorkService
* @package com.hoo.dao
* @fileName IBaseDao.java
* @createDate 2010-8-2 下午05:28:03
* @author hoojo
* @email hoojo_@126.com
* @blog http://blog.csdn.net/IBM_hoojo
*/
public interface IBaseDao {
/**
* <b>function:</b> 增加一个entity对象,返回是否添加成功
* @createDate 2010-8-2 下午05:28:38
* @author hoojo
* @param <T> 对象类型
* @param entity 对象
* @return boolean true/false
* @throws Exception
*/
public <T> boolean add(T entity) throws Exception;
/**
* <b>function:</b> 添加一个entity对象,返回添加对象的Integer类型的主键
* @createDate 2010-8-2 下午05:29:39
* @author hoojo
* @param <T> 对象类型
* @param entity 将要添加的对象
* @return Integer 返回主键
* @throws Exception
*/
public <T> Integer addAndGetId4Integer(T entity) throws Exception;
/**
* <b>function:</b> 添加一个对象并且返回该对象的String类型的主键
* @createDate 2010-8-2 下午05:31:32
* @author hoojo
* @param <T> 对象类型
* @param entity 将要添加的对象
* @return String 返回的主键
* @throws Exception
*/
public <T> String addAndGetId4String(T entity) throws Exception;
/**
* <b>function:</b> 传入hql语句执行
* @createDate 2010-8-2 下午04:42:26
* @author hoojo
* @param hql String hql语句
* @return int 影响行数
* @throws Exception
*/
public int executeByHql(String hql) throws Exception;
/**
* <b>function:</b> 传入hql语句执行查询,返回list集合
* @createDate 2010-8-3 上午10:00:34
* @author hoojo
* @param hql 查询的hql语句
* @return List集合
* @throws Exception
*/
public <T> List<T> findByHql(String hql) throws Exception;
/**
* <b>function:</b> 执行原生态的sql语句,添加、删除、修改语句
* @createDate 2010-8-2 下午05:33:42
* @author hoojo
* @param sql 将要执行的sql语句
* @return int
* @throws Exception
*/
public int executeBySql(String sql) throws Exception;
/**
* <b>function:</b> 传入sql语句执行查询,返回list集合
* @createDate 2010-8-3 上午10:00:34
* @author hoojo
* @param sql 查询的sql语句
* @return List集合
* @throws Exception
*/
public <T> List<T> findBySql(String sql) throws Exception;
/**
* <b>function:</b> 修改entity对象,返回是否修改成功
* @createDate 2010-8-2 下午05:35:47
* @author hoojo
* @param <T> 对象类型
* @param entity 将要修改的对象
* @return boolean true/false 是否修改成功
* @throws Exception
*/
public <T> boolean edit(T entity) throws Exception;
/**
* <b>function:</b> 传入hql语句执行修改,返回是否修改成功
* @createDate 2010-8-2 下午05:36:31
* @author hoojo
* @param hql 查询的hql语句
* @return boolean true/false 返回是否修改成功
* @throws Exception
*/
public boolean edit(String hql) throws Exception;
/**
* <b>function:</b> 执行修改的hql语句,返回修改的行数
* @createDate 2010-8-2 下午05:38:58
* @author hoojo
* @param hql 修改语句
* @return int 返回修改的行数
* @throws Exception
*/
public int editByHql(String hql) throws Exception;
/**
* <b>function:</b> 传入一个将要删除的entity对象,返回删除是否成功
* @createDate 2010-8-2 下午05:42:02
* @author hoojo
* @param <T> 传入对象类型
* @param entity 将要传入的对象
* @return boolean true/false
* @throws Exception
*/
public <T> boolean remove(T entity) throws Exception;
/**
* <b>function:</b> 传入一个entity对象Class和String型主键,返回该对象
* @createDate 2010-8-2 下午05:44:53
* @author hoojo
* @param <T> 返回、传入对象类型
* @param c 对象Class
* @param id 主键
* @return T 返回传入类型对象
* @throws Exception
*/
public <T> T getById(Class<T> c, String id) throws Exception;
/**
* <b>function:</b> 传入一个entity对象Class和Integer类型主键,返回该对象
* @createDate 2010-8-2 下午05:47:20
* @author hoojo
* @param <T> 返回、传入对象类型
* @param c 对象Class
* @param id 主键
* @return T 返回该类型的对象
* @throws Exception
*/
public <T> T getById(Class<T> c, Integer id) throws Exception;
/**
* <b>function:</b> 传入一个entity对象Class和Serializable类型主键,返回该对象
* @createDate 2010-8-2 下午05:48:36
* @author hoojo
* @param <T> 返回、传入对象类型
* @param c 对象Class
* @param id 主键
* @return T 返回该类型的对象
* @throws Exception
*/
public <T> T get(Class<T> c, Serializable id) throws Exception;
/**
* <b>function:</b> 传入hql语句,查询对象
* @createDate 2010-8-2 下午05:49:31
* @author hoojo
* @param <T> 返回对象类型
* @param hql 查询的hql语句
* @return 对象T
* @throws Exception
*/
public <T> T get(String hql) throws Exception;
/**
* <b>function:</b> 通过hql语句查询List集合
* @createDate 2010-8-2 下午05:51:05
* @author hoojo
* @param hql 查询hql语句
* @return List<?>
* @throws Exception
*/
public <T> List<T> getList(String hql) throws Exception;
/**
* <b>function:</b> 传入删除的hql语句,删除记录
* @createDate 2010-8-3 上午09:53:49
* @author hoojo
* @param hql 将要被执行删除的hql语句
* @return 是否删除成功
* @throws Exception
*/
public boolean remove(String hql) throws Exception;
/**
* <b>function:</b> 动态查询
* @createDate 2010-8-3 上午10:53:37
* @author hoojo
* @param <T> 查询类的类型
* @param c 动态查询组合对象
* @return list集合
* @throws Exception
*/
public <T> List<T> getList(Class<T> c) throws Exception;
/**
* <b>function:</b> 传入hql查询语句和object数组类型的参数,返回查询list集合
* @createDate 2010-8-2 下午05:52:36
* @author hoojo
* @param hql 查询的hql语句
* @param obj 查询参数
* @return 返回list集合
* @throws Exception
*/
public <T> List<T> getList(String hql, Object[] obj) throws Exception;
/**
* <b>function:</b> 传入查询语句和查询总条数(总记录)的hql语句、当前页数、每页显示调试数;返回查询后的list集合;
* list集合保存总记录调试和记录结果
* @createDate 2010-8-2 下午05:54:01
* @author hoojo
* @param queryHql 查询记录hql语句
* @param queryCountHql 查询记录条数hql语句
* @param firstResult 当前查询页
* @param maxResult 每页显示多少条
* @return List返回集合 集合0保存查询结果、集合1保存总记录条数
* @throws Exception
*/
public List<?> showPage(String queryHql, String queryCountHql, int firstResult, int maxResult) throws Exception;
/**
* <b>function:</b> 传入查询语句和查询总条数(总记录)的hql语句、page分页对象;返回查询后的list集合;
* @createDate 2010-8-3 上午11:16:59
* @author hoojo
* @param queryHql list集合结果查询
* @param queryCountHql 总记录调试查询
* @param page 分页对象
* @throws Exception
*/
public <T> void showPage(String queryHql, String queryCountHql, Page<T> page) throws Exception;
/**
* <b>function:</b> 分页查询,传入查询count的hql语句和DetachedCriteria动态查询条件进行查询分页
* @createDate 2010-8-3 上午11:04:39
* @author hoojo
* @param queryCountHql hql查询count语句总条数
* @param cResult DetachedCriteria 动态查询条件
* @param firstResult 起始
* @param maxResult 最大页数
* @return List<?> 查询集合
* @throws Exception
*/
public List<?> showPage(String queryCountHql, DetachedCriteria cResult, int firstResult, int maxResult) throws Exception;
/**
* <b>function:</b> 分页查询,传入查询的count的hql语句和动态查询DetachedCriteria类及page分页entity
* @createDate 2010-8-3 上午11:14:30
* @author hoojo
* @param queryCountHql 查询count语句
* @param cResult DetachedCriteria 动态查询组合类
* @param page Page分页实体类
* @throws Exception
*/
public <T> void showPage(String queryCountHql, DetachedCriteria cResult, Page<T> page) throws Exception;
/**
* <b>function:</b> 传入查询条件DetachedCriteria进行查询
* @createDate 2010-8-3 上午11:55:28
* @author hoojo
* @param <T> 类型
* @param dc DetachedCriteria动态条件查询
* @return List
* @throws Exception
*/
public <T> List<T> find(DetachedCriteria dc) throws Exception;
/**
* <b>function:</b> 暴露基类session供用户使用
* @createDate 2010-8-3 上午11:59:54
* @author hoojo
* @return Session
*/
public Session session();
/**
* <b>function:</b> 暴露HibernateTemplate模板,当基类(增删改查组件)方法不够用可以用模板进行操作
* @createDate 2010-8-3 上午11:58:51
* @author hoojo
* @return HibernateTemplate
*/
public HibernateTemplate getTemplate();
}
下面是实现IBaseDao接口的代码BaseDaoImpl.java:
package com.hoo.dao.impl;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.criterion.DetachedCriteria;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.hoo.dao.IBaseDao;
import com.hoo.entity.Page;
/**
* <b>function:</b> 删除改查组件实现类
* @project NetWorkService
* @package com.hhh.dao
* @fileName BaseDAOImpl.java
* @createDate 2010-8-2 下午05:58:45
* @author hoojo
* @email hoojo_@126.com
* @blog http://blog.csdn.net/IBM_hoojo
*/
@SuppressWarnings("unchecked")
public class BaseDaoImpl extends HibernateDaoSupport implements IBaseDao {
/**
* <b>function:</b> 增加一个entity对象,返回是否添加成功
* @createDate 2010-8-2 下午05:28:38
* @author hoojo
* @param <T> 对象类型
* @param entity 对象
* @return boolean true/false
* @throws Exception
*/
public <T> boolean add(T entity) throws Exception {
boolean bo = false;
try {
Serializable io = this.getHibernateTemplate().save(entity);
if (io != null) {
bo = true;
}
} catch (Exception e) {
bo = false;
throw new RuntimeException(e);
}
return bo;
}
/**
* <b>function:</b> 添加一个entity对象,返回添加对象的Integer类型的主键
* @createDate 2010-8-2 下午05:29:39
* @author hoojo
* @param <T> 对象类型
* @param entity 将要添加的对象
* @return Integer 返回主键
* @throws Exception
*/
public <T> Integer addAndGetId4Integer(T entity) throws Exception {
Integer id = null;
try {
id = (Integer) this.getHibernateTemplate().save(entity);
} catch (Exception e) {
throw new RuntimeException(e);
}
return id;
}
/**
* <b>function:</b> 添加一个对象并且返回该对象的String类型的主键
* @createDate 2010-8-2 下午05:31:32
* @author hoojo
* @param <T> 对象类型
* @param entity 将要添加的对象
* @return String 返回的主键
* @throws Exception
*/
public <T> String addAndGetId4String(T entity) throws Exception {
String id = null;
try {
id = (String) this.getHibernateTemplate().save(entity);
} catch (Exception e) {
throw new RuntimeException(e);
}
return id;
}
/**
* <b>function:</b> 修改entity对象,返回是否修改成功
* @createDate 2010-8-2 下午05:35:47
* @author hoojo
* @param <T> 对象类型
* @param entity 将要修改的对象
* @return boolean true/false 是否修改成功
* @throws Exception
*/
public <T> boolean edit(T entity) throws Exception {
boolean bo = false;
try {
this.getHibernateTemplate().update(entity);
bo = true;
} catch (Exception e) {
bo = false;
throw new RuntimeException(e);
}
return bo;
}
/**
* <b>function:</b> 传入hql语句执行修改,返回是否修改成功
* @createDate 2010-8-2 下午05:36:31
* @author hoojo
* @param hql 查询的hql语句
* @return boolean true/false 返回是否修改成功
* @throws Exception
*/
public boolean edit(String hql) throws Exception {
boolean bo = false;
try {
int count = this.getHibernateTemplate().bulkUpdate(hql);
bo = count > 0 ? true : false;
} catch (Exception e) {
bo = false;
throw new RuntimeException(e);
}
return bo;
}
/**
* <b>function:</b> 执行修改的hql语句,返回修改的行数
* @createDate 2010-8-2 下午05:38:58
* @author hoojo
* @param hql 修改语句
* @return int 返回修改的行数
* @throws Exception
*/
public int editByHql(String hql) throws Exception {
int count = 0;
try {
count = this.getHibernateTemplate().bulkUpdate(hql);
} catch (Exception e) {
throw new RuntimeException(e);
}
return count;
}
/**
* <b>function:</b> 传入hql语句执行
* @createDate 2010-8-2 下午04:42:26
* @author hoojo
* @param hql String hql语句
* @return int 影响行数
* @throws Exception
*/
public int executeByHql(String hql) throws Exception {
try {
return this.getHibernateTemplate().bulkUpdate(hql);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* <b>function:</b> 传入hql语句执行查询,返回list集合
* @createDate 2010-8-3 上午10:00:34
* @author hoojo
* @param hql 查询的hql语句
* @return List集合
* @throws Exception
*/
public <T> List<T> findByHql(String hql) throws Exception {
List list = null;
try {
list = (List<T>) this.getHibernateTemplate().find(hql);
} catch (Exception e) {
throw new RuntimeException(e);
}
return list;
}
/**
* <b>function:</b> 执行原生态的sql语句,添加、删除、修改语句
* @createDate 2010-8-2 下午05:33:42
* @author hoojo
* @param sql 将要执行的sql语句
* @return int
* @throws Exception
*/
public int executeBySql(String sql) throws Exception {
try {
return this.getSession().createSQLQuery(sql).executeUpdate();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* <b>function:</b> 传入sql语句执行查询,返回list集合
* @createDate 2010-8-3 上午10:00:34
* @author hoojo
* @param sql 查询的sql语句
* @return List集合
* @throws Exception
*/
public <T> List<T> findBySql(String sql) throws Exception {
List list = null;
try {
list = (List<T>) this.getSession().createSQLQuery(sql).list();
} catch (Exception e) {
throw new RuntimeException(e);
}
return list;
}
/**
* <b>function:</b> 传入一个entity对象Class和Serializable类型主键,返回该对象
* @createDate 2010-8-2 下午05:48:36
* @author hoojo
* @param <T> 返回、传入对象类型
* @param c 对象Class
* @param id 主键
* @return T 返回该类型的对象
* @throws Exception
*/
public <T> T get(Class<T> c, Serializable id) throws Exception {
T ety = null;
try {
ety = (T) this.getHibernateTemplate().get(c, id);
} catch (Exception e) {
throw new RuntimeException(e);
}
return ety;
}
/**
* <b>function:</b> 传入hql语句,查询对象
* @createDate 2010-8-2 下午05:49:31
* @author hoojo
* @param <T> 返回对象类型
* @param hql 查询的hql语句
* @return 对象T
* @throws Exception
*/
public <T> T get(String hql) throws Exception {
T ety = null;
try {
ety = (T) this.getSession().createQuery(hql).setMaxResults(1).uniqueResult();
} catch (Exception e) {
throw new RuntimeException(e);
}
return ety;
}
/**
* <b>function:</b> 通过hql语句查询List集合
* @createDate 2010-8-2 下午05:51:05
* @author hoojo
* @param hql 查询hql语句
* @return List<?>
* @throws Exception
*/
public <T> List<T> getList(String hql) throws Exception {
List<T> list = null;
try {
list = (List<T>) this.getHibernateTemplate().find(hql);
} catch (Exception e) {
throw new RuntimeException(e);
}
return list;
}
/**
* <b>function:</b> 传入一个entity对象Class和Integer类型主键,返回该对象
* @createDate 2010-8-2 下午05:47:20
* @author hoojo
* @param <T> 返回、传入对象类型
* @param c 对象Class
* @param id 主键
* @return T 返回该类型的对象
* @throws Exception
*/
public <T> T getById(Class<T> c, Integer id) throws Exception {
T ety = null;
try {
ety = (T) this.getHibernateTemplate().get(c, id);
} catch (Exception e) {
throw new RuntimeException(e);
}
return ety;
}
/**
* <b>function:</b> 传入一个entity对象Class和String型主键,返回该对象
* @createDate 2010-8-2 下午05:44:53
* @author hoojo
* @param <T> 返回、传入对象类型
* @param c 对象Class
* @param id 主键
* @return T 返回传入类型对象
* @throws Exception
*/
public <T> T getById(Class<T> c, String id) throws Exception {
T ety = null;
try {
ety = (T) this.getHibernateTemplate().get(c, id);
} catch (Exception e) {
throw new RuntimeException(e);
}
return ety;
}
/**
* <b>function:</b> 传入hql查询语句和object数组类型的参数,返回查询list集合
* @createDate 2010-8-2 下午05:52:36
* @author hoojo
* @param hql 查询的hql语句
* @param obj 查询参数
* @return 返回list集合
* @throws Exception
*/
public <T> List<T> getList(String hql, Object[] obj) throws Exception {
List<T> list = null;
try {
list = (List<T>) this.getHibernateTemplate().find(hql, obj);
} catch (Exception e) {
throw new RuntimeException(e);
}
return list;
}
/**
* <b>function:</b> 传入一个将要删除的entity对象,返回删除是否成功
* @createDate 2010-8-2 下午05:42:02
* @author hoojo
* @param <T> 传入对象类型
* @param entity 将要传入的对象
* @return boolean true/false
* @throws Exception
*/
public <T> boolean remove(T entity) throws Exception {
boolean bo = false;
try {
this.getHibernateTemplate().delete(entity);
bo = true;
} catch (Exception e) {
bo = false;
throw new RuntimeException(e);
}
return bo;
}
/**
* <b>function:</b> 传入删除的hql语句,删除记录
* @createDate 2010-8-3 上午09:53:49
* @author hoojo
* @param hql 将要被执行删除的hql语句
* @return 是否删除成功
* @throws Exception
*/
public boolean remove(String hql) throws Exception {
try {
return this.executeByHql(hql) > 0 ? true : false;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* <b>function:</b> 动态查询
* @createDate 2010-8-3 上午10:53:37
* @author hoojo
* @param <T> 查询类的类型
* @param c 动态查询组合对象
* @return list集合
* @throws Exception
*/
public <T> List<T> getList(Class<T> c) throws Exception {
List<T> list = null;
try {
this.getHibernateTemplate().findByCriteria(DetachedCriteria.forClass(c));
} catch (Exception e) {
throw new RuntimeException(e);
}
return list;
}
/**
* <b>function:</b> 传入查询语句和查询总条数(总记录)的hql语句、当前页数、每页显示调试数;返回查询后的list集合;
* list集合保存总记录调试和记录结果
* @createDate 2010-8-2 下午05:54:01
* @author hoojo
* @param queryHql 查询记录hql语句
* @param queryCountHql 查询记录条数hql语句
* @param firstResult 当前查询页
* @param maxResult 每页显示多少条
* @return List返回集合 集合0保存查询结果、集合1保存总记录条数
* @throws Exception
*/
public List<?> showPage(String queryHql, String queryCountHql, int firstResult, int maxResult) throws Exception {
List<Object> list = new ArrayList<Object>();
try {
Session session = this.getSession();
list.add(session.createQuery(queryHql)
.setFirstResult(firstResult).setMaxResults(maxResult).list());
list.add(session.createQuery(queryCountHql).setMaxResults(1).uniqueResult());
} catch (Exception e) {
throw new RuntimeException(e);
}
return list;
}
/**
* <b>function:</b> 传入查询语句和查询总条数(总记录)的hql语句、page分页对象;返回查询后的list集合;
* @createDate 2010-8-3 上午11:16:59
* @author hoojo
* @param queryHql list集合结果查询
* @param queryCountHql 总记录调试查询
* @param page 分页对象
* @throws Exception
*/
public <T> void showPage(String queryHql, String queryCountHql, Page<T> page) throws Exception {
try {
Session session = this.getSession();
page.setResult(session.createQuery(queryHql)
.setFirstResult(page.getCurrentPage()).setMaxResults(page.getPageSize()).list());
page.setTotalsCount(Integer.parseInt(session.createQuery(queryCountHql).setMaxResults(1).uniqueResult().toString()));
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* <b>function:</b> 分页查询,传入查询count的hql语句和DetachedCriteria动态查询条件进行查询分页
* @createDate 2010-8-3 上午11:04:39
* @author hoojo
* @param queryCountHql hql查询count语句总条数
* @param cResult DetachedCriteria 动态查询条件
* @param firstResult 起始
* @param maxResult 最大页数
* @return List<?> 查询集合
* @throws Exception
*/
public List<?> showPage(String queryCountHql, DetachedCriteria cResult, int firstResult, int maxResult) throws Exception {
List<Object> list = new ArrayList<Object>();
try {
Session session = this.getSession();
list.add(this.getHibernateTemplate().findByCriteria(cResult, firstResult, maxResult));
list.add(session.createQuery(queryCountHql).setMaxResults(1).uniqueResult());
} catch (Exception e) {
throw new RuntimeException(e);
}
return list;
}
/**
* <b>function:</b> 分页查询,传入查询的count的hql语句和动态查询DetachedCriteria类及page分页entity
* @createDate 2010-8-3 上午11:14:30
* @author hoojo
* @param queryCountHql 查询count语句
* @param cResult DetachedCriteria 动态查询组合类
* @param page Page分页实体类
* @throws Exception
*/
public <T> void showPage(String queryCountHql, DetachedCriteria cResult, Page<T> page) throws Exception {
try {
Session session = this.getSession();
page.setResult(this.getHibernateTemplate().findByCriteria(cResult, page.getCurrentPage(), page.getPageSize()));
page.setTotalsCount(Integer.parseInt(session.createQuery(queryCountHql).setMaxResults(1).uniqueResult().toString()));
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* <b>function:</b> 传入查询条件DetachedCriteria进行查询
* @createDate 2010-8-3 上午11:55:28
* @author hoojo
* @param <T> 类型
* @param dc DetachedCriteria动态条件查询
* @return List
* @throws Exception
*/
public <T> List<T> find(DetachedCriteria dc) throws Exception {
List<T> list = new ArrayList<T>();
try {
list = (List<T>) this.getHibernateTemplate().findByCriteria(dc);
} catch (Exception e) {
throw new RuntimeException(e);
}
return list;
}
/**
* <b>function:</b> 暴露基类session供用户使用
* @createDate 2010-8-3 上午11:59:54
* @author hoojo
* @return Session
*/
public Session session() {
return this.getSession();
}
/**
* <b>function:</b> 暴露HibernateTemplate模板,当基类(增删改查组件)方法不够用可以用模板进行操作
* @createDate 2010-8-3 上午11:58:51
* @author hoojo
* @return HibernateTemplate
*/
public HibernateTemplate getTemplate() {
return this.getHibernateTemplate();
}
}
package com.hoo.dao.impl;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.criterion.DetachedCriteria;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.hoo.dao.IBaseDao;
import com.hoo.entity.Page;
/**
* <b>function:</b> 删除改查组件实现类
* @project NetWorkService
* @package com.hhh.dao
* @fileName BaseDAOImpl.java
* @createDate 2010-8-2 下午05:58:45
* @author hoojo
* @email hoojo_@126.com
* @blog http://blog.csdn.net/IBM_hoojo
*/
@SuppressWarnings("unchecked")
public class BaseDaoImpl extends HibernateDaoSupport implements IBaseDao {
/**
* <b>function:</b> 增加一个entity对象,返回是否添加成功
* @createDate 2010-8-2 下午05:28:38
* @author hoojo
* @param <T> 对象类型
* @param entity 对象
* @return boolean true/false
* @throws Exception
*/
public <T> boolean add(T entity) throws Exception {
boolean bo = false;
try {
Serializable io = this.getHibernateTemplate().save(entity);
if (io != null) {
bo = true;
}
} catch (Exception e) {
bo = false;
throw new RuntimeException(e);
}
return bo;
}
/**
* <b>function:</b> 添加一个entity对象,返回添加对象的Integer类型的主键
* @createDate 2010-8-2 下午05:29:39
* @author hoojo
* @param <T> 对象类型
* @param entity 将要添加的对象
* @return Integer 返回主键
* @throws Exception
*/
public <T> Integer addAndGetId4Integer(T entity) throws Exception {
Integer id = null;
try {
id = (Integer) this.getHibernateTemplate().save(entity);
} catch (Exception e) {
throw new RuntimeException(e);
}
return id;
}
/**
* <b>function:</b> 添加一个对象并且返回该对象的String类型的主键
* @createDate 2010-8-2 下午05:31:32
* @author hoojo
* @param <T> 对象类型
* @param entity 将要添加的对象
* @return String 返回的主键
* @throws Exception
*/
public <T> String addAndGetId4String(T entity) throws Exception {
String id = null;
try {
id = (String) this.getHibernateTemplate().save(entity);
} catch (Exception e) {
throw new RuntimeException(e);
}
return id;
}
/**
* <b>function:</b> 修改entity对象,返回是否修改成功
* @createDate 2010-8-2 下午05:35:47
* @author hoojo
* @param <T> 对象类型
* @param entity 将要修改的对象
* @return boolean true/false 是否修改成功
* @throws Exception
*/
public <T> boolean edit(T entity) throws Exception {
boolean bo = false;
try {
this.getHibernateTemplate().update(entity);
bo = true;
} catch (Exception e) {
bo = false;
throw new RuntimeException(e);
}
return bo;
}
/**
* <b>function:</b> 传入hql语句执行修改,返回是否修改成功
* @createDate 2010-8-2 下午05:36:31
* @author hoojo
* @param hql 查询的hql语句
* @return boolean true/false 返回是否修改成功
* @throws Exception
*/
public boolean edit(String hql) throws Exception {
boolean bo = false;
try {
int count = this.getHibernateTemplate().bulkUpdate(hql);
bo = count > 0 ? true : false;
} catch (Exception e) {
bo = false;
throw new RuntimeException(e);
}
return bo;
}
/**
* <b>function:</b> 执行修改的hql语句,返回修改的行数
* @createDate 2010-8-2 下午05:38:58
* @author hoojo
* @param hql 修改语句
* @return int 返回修改的行数
* @throws Exception
*/
public int editByHql(String hql) throws Exception {
int count = 0;
try {
count = this.getHibernateTemplate().bulkUpdate(hql);
} catch (Exception e) {
throw new RuntimeException(e);
}
return count;
}
/**
* <b>function:</b> 传入hql语句执行
* @createDate 2010-8-2 下午04:42:26
* @author hoojo
* @param hql String hql语句
* @return int 影响行数
* @throws Exception
*/
public int executeByHql(String hql) throws Exception {
try {
return this.getHibernateTemplate().bulkUpdate(hql);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* <b>function:</b> 传入hql语句执行查询,返回list集合
* @createDate 2010-8-3 上午10:00:34
* @author hoojo
* @param hql 查询的hql语句
* @return List集合
* @throws Exception
*/
public <T> List<T> findByHql(String hql) throws Exception {
List list = null;
try {
list = (List<T>) this.getHibernateTemplate().find(hql);
} catch (Exception e) {
throw new RuntimeException(e);
}
return list;
}
/**
* <b>function:</b> 执行原生态的sql语句,添加、删除、修改语句
* @createDate 2010-8-2 下午05:33:42
* @author hoojo
* @param sql 将要执行的sql语句
* @return int
* @throws Exception
*/
public int executeBySql(String sql) throws Exception {
try {
return this.getSession().createSQLQuery(sql).executeUpdate();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* <b>function:</b> 传入sql语句执行查询,返回list集合
* @createDate 2010-8-3 上午10:00:34
* @author hoojo
* @param sql 查询的sql语句
* @return List集合
* @throws Exception
*/
public <T> List<T> findBySql(String sql) throws Exception {
List list = null;
try {
list = (List<T>) this.getSession().createSQLQuery(sql).list();
} catch (Exception e) {
throw new RuntimeException(e);
}
return list;
}
/**
* <b>function:</b> 传入一个entity对象Class和Serializable类型主键,返回该对象
* @createDate 2010-8-2 下午05:48:36
* @author hoojo
* @param <T> 返回、传入对象类型
* @param c 对象Class
* @param id 主键
* @return T 返回该类型的对象
* @throws Exception
*/
public <T> T get(Class<T> c, Serializable id) throws Exception {
T ety = null;
try {
ety = (T) this.getHibernateTemplate().get(c, id);
} catch (Exception e) {
throw new RuntimeException(e);
}
return ety;
}
/**
* <b>function:</b> 传入hql语句,查询对象
* @createDate 2010-8-2 下午05:49:31
* @author hoojo
* @param <T> 返回对象类型
* @param hql 查询的hql语句
* @return 对象T
* @throws Exception
*/
public <T> T get(String hql) throws Exception {
T ety = null;
try {
ety = (T) this.getSession().createQuery(hql).setMaxResults(1).uniqueResult();
} catch (Exception e) {
throw new RuntimeException(e);
}
return ety;
}
/**
* <b>function:</b> 通过hql语句查询List集合
* @createDate 2010-8-2 下午05:51:05
* @author hoojo
* @param hql 查询hql语句
* @return List<?>
* @throws Exception
*/
public <T> List<T> getList(String hql) throws Exception {
List<T> list = null;
try {
list = (List<T>) this.getHibernateTemplate().find(hql);
} catch (Exception e) {
throw new RuntimeException(e);
}
return list;
}
/**
* <b>function:</b> 传入一个entity对象Class和Integer类型主键,返回该对象
* @createDate 2010-8-2 下午05:47:20
* @author hoojo
* @param <T> 返回、传入对象类型
* @param c 对象Class
* @param id 主键
* @return T 返回该类型的对象
* @throws Exception
*/
public <T> T getById(Class<T> c, Integer id) throws Exception {
T ety = null;
try {
ety = (T) this.getHibernateTemplate().get(c, id);
} catch (Exception e) {
throw new RuntimeException(e);
}
return ety;
}
/**
* <b>function:</b> 传入一个entity对象Class和String型主键,返回该对象
* @createDate 2010-8-2 下午05:44:53
* @author hoojo
* @param <T> 返回、传入对象类型
* @param c 对象Class
* @param id 主键
* @return T 返回传入类型对象
* @throws Exception
*/
public <T> T getById(Class<T> c, String id) throws Exception {
T ety = null;
try {
ety = (T) this.getHibernateTemplate().get(c, id);
} catch (Exception e) {
throw new RuntimeException(e);
}
return ety;
}
/**
* <b>function:</b> 传入hql查询语句和object数组类型的参数,返回查询list集合
* @createDate 2010-8-2 下午05:52:36
* @author hoojo
* @param hql 查询的hql语句
* @param obj 查询参数
* @return 返回list集合
* @throws Exception
*/
public <T> List<T> getList(String hql, Object[] obj) throws Exception {
List<T> list = null;
try {
list = (List<T>) this.getHibernateTemplate().find(hql, obj);
} catch (Exception e) {
throw new RuntimeException(e);
}
return list;
}
/**
* <b>function:</b> 传入一个将要删除的entity对象,返回删除是否成功
* @createDate 2010-8-2 下午05:42:02
* @author hoojo
* @param <T> 传入对象类型
* @param entity 将要传入的对象
* @return boolean true/false
* @throws Exception
*/
public <T> boolean remove(T entity) throws Exception {
boolean bo = false;
try {
this.getHibernateTemplate().delete(entity);
bo = true;
} catch (Exception e) {
bo = false;
throw new RuntimeException(e);
}
return bo;
}
/**
* <b>function:</b> 传入删除的hql语句,删除记录
* @createDate 2010-8-3 上午09:53:49
* @author hoojo
* @param hql 将要被执行删除的hql语句
* @return 是否删除成功
* @throws Exception
*/
public boolean remove(String hql) throws Exception {
try {
return this.executeByHql(hql) > 0 ? true : false;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* <b>function:</b> 动态查询
* @createDate 2010-8-3 上午10:53:37
* @author hoojo
* @param <T> 查询类的类型
* @param c 动态查询组合对象
* @return list集合
* @throws Exception
*/
public <T> List<T> getList(Class<T> c) throws Exception {
List<T> list = null;
try {
this.getHibernateTemplate().findByCriteria(DetachedCriteria.forClass(c));
} catch (Exception e) {
throw new RuntimeException(e);
}
return list;
}
/**
* <b>function:</b> 传入查询语句和查询总条数(总记录)的hql语句、当前页数、每页显示调试数;返回查询后的list集合;
* list集合保存总记录调试和记录结果
* @createDate 2010-8-2 下午05:54:01
* @author hoojo
* @param queryHql 查询记录hql语句
* @param queryCountHql 查询记录条数hql语句
* @param firstResult 当前查询页
* @param maxResult 每页显示多少条
* @return List返回集合 集合0保存查询结果、集合1保存总记录条数
* @throws Exception
*/
public List<?> showPage(String queryHql, String queryCountHql, int firstResult, int maxResult) throws Exception {
List<Object> list = new ArrayList<Object>();
try {
Session session = this.getSession();
list.add(session.createQuery(queryHql)
.setFirstResult(firstResult).setMaxResults(maxResult).list());
list.add(session.createQuery(queryCountHql).setMaxResults(1).uniqueResult());
} catch (Exception e) {
throw new RuntimeException(e);
}
return list;
}
/**
* <b>function:</b> 传入查询语句和查询总条数(总记录)的hql语句、page分页对象;返回查询后的list集合;
* @createDate 2010-8-3 上午11:16:59
* @author hoojo
* @param queryHql list集合结果查询
* @param queryCountHql 总记录调试查询
* @param page 分页对象
* @throws Exception
*/
public <T> void showPage(String queryHql, String queryCountHql, Page<T> page) throws Exception {
try {
Session session = this.getSession();
page.setResult(session.createQuery(queryHql)
.setFirstResult(page.getCurrentPage()).setMaxResults(page.getPageSize()).list());
page.setTotalsCount(Integer.parseInt(session.createQuery(queryCountHql).setMaxResults(1).uniqueResult().toString()));
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* <b>function:</b> 分页查询,传入查询count的hql语句和DetachedCriteria动态查询条件进行查询分页
* @createDate 2010-8-3 上午11:04:39
* @author hoojo
* @param queryCountHql hql查询count语句总条数
* @param cResult DetachedCriteria 动态查询条件
* @param firstResult 起始
* @param maxResult 最大页数
* @return List<?> 查询集合
* @throws Exception
*/
public List<?> showPage(String queryCountHql, DetachedCriteria cResult, int firstResult, int maxResult) throws Exception {
List<Object> list = new ArrayList<Object>();
try {
Session session = this.getSession();
list.add(this.getHibernateTemplate().findByCriteria(cResult, firstResult, maxResult));
list.add(session.createQuery(queryCountHql).setMaxResults(1).uniqueResult());
} catch (Exception e) {
throw new RuntimeException(e);
}
return list;
}
/**
* <b>function:</b> 分页查询,传入查询的count的hql语句和动态查询DetachedCriteria类及page分页entity
* @createDate 2010-8-3 上午11:14:30
* @author hoojo
* @param queryCountHql 查询count语句
* @param cResult DetachedCriteria 动态查询组合类
* @param page Page分页实体类
* @throws Exception
*/
public <T> void showPage(String queryCountHql, DetachedCriteria cResult, Page<T> page) throws Exception {
try {
Session session = this.getSession();
page.setResult(this.getHibernateTemplate().findByCriteria(cResult, page.getCurrentPage(), page.getPageSize()));
page.setTotalsCount(Integer.parseInt(session.createQuery(queryCountHql).setMaxResults(1).uniqueResult().toString()));
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* <b>function:</b> 传入查询条件DetachedCriteria进行查询
* @createDate 2010-8-3 上午11:55:28
* @author hoojo
* @param <T> 类型
* @param dc DetachedCriteria动态条件查询
* @return List
* @throws Exception
*/
public <T> List<T> find(DetachedCriteria dc) throws Exception {
List<T> list = new ArrayList<T>();
try {
list = (List<T>) this.getHibernateTemplate().findByCriteria(dc);
} catch (Exception e) {
throw new RuntimeException(e);
}
return list;
}
/**
* <b>function:</b> 暴露基类session供用户使用
* @createDate 2010-8-3 上午11:59:54
* @author hoojo
* @return Session
*/
public Session session() {
return this.getSession();
}
/**
* <b>function:</b> 暴露HibernateTemplate模板,当基类(增删改查组件)方法不够用可以用模板进行操作
* @createDate 2010-8-3 上午11:58:51
* @author hoojo
* @return HibernateTemplate
*/
public HibernateTemplate getTemplate() {
return this.getHibernateTemplate();
}
}
分页对象Page.java:
package com.hoo.entity;
import java.util.ArrayList;
import java.util.List;
/**
* <b>function:</b> 分页entity,封装分页数据
* @project NetWorkService
* @package com.hoo.entity
* @fileName Page.java
* @createDate 2010-8-3 上午10:32:03
* @author hoojo
* @email hoojo_@126.com
* @blog http://blog.csdn.net/IBM_hoojo
*/
public class Page<T> {
//当前页数
private int currentPage;
//总页数
private int totalsPage;
//每页显示记录条数
private int pageSize;
//总记录条数
private int totalsCount;
//查询返回结果
private List<T> result = new ArrayList<T>();
//分页链接
private String uri;
public String getUri() {
return uri;
}
public void setUri(String uri) {
this.uri = uri;
}
public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) throws Exception {
if (currentPage < 0) {
currentPage = 0;
}
this.currentPage = currentPage;
}
public int getTotalsPage() {
try {
if (totalsCount % pageSize == 0) {
totalsPage = totalsCount / pageSize;
} else {
totalsPage = (totalsCount / pageSize) + 1;
}
} catch (Exception e) {
throw new RuntimeException(e);
}
return totalsPage;
}
public void setTotalsPage(int totalsPage) {
if (totalsPage < 0) {
totalsPage = 0;
}
this.totalsPage = totalsPage;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
if (pageSize <= 0) {
pageSize = 20;
}
this.pageSize = pageSize;
}
public int getTotalsCount() {
return totalsCount;
}
public void setTotalsCount(int totalsCount) {
if (totalsCount < 0) {
totalsCount = 0;
}
this.totalsCount = totalsCount;
}
public List<T> getResult() {
return result;
}
public void setResult(List<T> result) {
this.result = result;
}
}
package com.hoo.entity;
import java.util.ArrayList;
import java.util.List;
/**
* <b>function:</b> 分页entity,封装分页数据
* @project NetWorkService
* @package com.hoo.entity
* @fileName Page.java
* @createDate 2010-8-3 上午10:32:03
* @author hoojo
* @email hoojo_@126.com
* @blog http://blog.csdn.net/IBM_hoojo
*/
public class Page<T> {
//当前页数
private int currentPage;
//总页数
private int totalsPage;
//每页显示记录条数
private int pageSize;
//总记录条数
private int totalsCount;
//查询返回结果
private List<T> result = new ArrayList<T>();
//分页链接
private String uri;
public String getUri() {
return uri;
}
public void setUri(String uri) {
this.uri = uri;
}
public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) throws Exception {
if (currentPage < 0) {
currentPage = 0;
}
this.currentPage = currentPage;
}
public int getTotalsPage() {
try {
if (totalsCount % pageSize == 0) {
totalsPage = totalsCount / pageSize;
} else {
totalsPage = (totalsCount / pageSize) + 1;
}
} catch (Exception e) {
throw new RuntimeException(e);
}
return totalsPage;
}
public void setTotalsPage(int totalsPage) {
if (totalsPage < 0) {
totalsPage = 0;
}
this.totalsPage = totalsPage;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
if (pageSize <= 0) {
pageSize = 20;
}
this.pageSize = pageSize;
}
public int getTotalsCount() {
return totalsCount;
}
public void setTotalsCount(int totalsCount) {
if (totalsCount < 0) {
totalsCount = 0;
}
this.totalsCount = totalsCount;
}
public List<T> getResult() {
return result;
}
public void setResult(List<T> result) {
this.result = result;
}
}
增删改查简单示例:
package com.hoo.dao.impl;
import java.util.List;
import com.hoo.dao.IBaseDao;
import com.hoo.entity.UserInfo;
public class TestDaoImpl<T extends UserInfo> implements ITestDao<T> {
private IBaseDao dao;
//setter方法注入dao
public void setDao(IBaseDao dao) {
this.dao = dao;
}
//查询
public <T extends UserInfo> List<T> getSortListByParentId(T entity) throws Exception {
String hql = "....";
if (entity == null || entity.getUserName() == null || "".equals(entity.getId())) {
hql += " ...";
} else {
hql += " ...";
}
return dao.getList(hql);
}
//添加
public boolean addUser(T entity) {
return dao.add(entity);
}
//删除
public boolean removeUser(T entity) {
return dao.remove(entity);
}
//修改
public boolean editUser(T entity) {
return dao.edit(entity);
}
}
package com.hoo.dao.impl;
import java.util.List;
import com.hoo.dao.IBaseDao;
import com.hoo.entity.UserInfo;
public class TestDaoImpl<T extends UserInfo> implements ITestDao<T> {
private IBaseDao dao;
//setter方法注入dao
public void setDao(IBaseDao dao) {
this.dao = dao;
}
//查询
public <T extends UserInfo> List<T> getSortListByParentId(T entity) throws Exception {
String hql = "....";
if (entity == null || entity.getUserName() == null || "".equals(entity.getId())) {
hql += " ...";
} else {
hql += " ...";
}
return dao.getList(hql);
}
//添加
public boolean addUser(T entity) {
return dao.add(entity);
}
//删除
public boolean removeUser(T entity) {
return dao.remove(entity);
}
//修改
public boolean editUser(T entity) {
return dao.edit(entity);
}
}
为TestDaoImpl注入BaseDao即可
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~dao 注入~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- 数据库操作基类,所有的类要注入基类 -->
<bean id="baseDao" class="com.hhh.dao.impl.BaseDaoImpl">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<!-- TestDao实现 -->
<bean id="testDao" class="com.hhh.dao.impl.TestDaoImpl">
<!-- 注入基类BaseDaoImpl -->
<property name="dao" ref="baseDao"/>
</bean
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/IBM_hoojo/archive/2010/09/28/5912368.aspx
本组件继承了HibernateDaoSupport,并完成对HibernateDaoSupport进行二次封装。提取平时开发常用的底层操作方法,并根据个
人习惯,定义自己的编码规范。根据sun官方的最新开发规范,使用了jdk的新特性——泛型。所有的操作对象以泛型指定。
定义接口规范:IBaseDao.java[/color][color=red]
package com.hoo.dao;
import java.io.Serializable;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.criterion.DetachedCriteria;
import org.springframework.orm.hibernate3.HibernateTemplate;
import com.hoo.entity.Page;
/***
* <b>function:</b> 增删改查组件规范接口
* @project NetWorkService
* @package com.hoo.dao
* @fileName IBaseDao.java
* @createDate 2010-8-2 下午05:28:03
* @author hoojo
* @email hoojo_@126.com
* @blog http://blog.csdn.net/IBM_hoojo
*/
public interface IBaseDao {
/**
* <b>function:</b> 增加一个entity对象,返回是否添加成功
* @createDate 2010-8-2 下午05:28:38
* @author hoojo
* @param <T> 对象类型
* @param entity 对象
* @return boolean true/false
* @throws Exception
*/
public <T> boolean add(T entity) throws Exception;
/**
* <b>function:</b> 添加一个entity对象,返回添加对象的Integer类型的主键
* @createDate 2010-8-2 下午05:29:39
* @author hoojo
* @param <T> 对象类型
* @param entity 将要添加的对象
* @return Integer 返回主键
* @throws Exception
*/
public <T> Integer addAndGetId4Integer(T entity) throws Exception;
/**
* <b>function:</b> 添加一个对象并且返回该对象的String类型的主键
* @createDate 2010-8-2 下午05:31:32
* @author hoojo
* @param <T> 对象类型
* @param entity 将要添加的对象
* @return String 返回的主键
* @throws Exception
*/ [/size]
public <T> String addAndGetId4String(T entity) throws Exception;
/**
* <b>function:</b> 传入hql语句执行
* @createDate 2010-8-2 下午04:42:26
* @author hoojo
* @param hql String hql语句
* @return int 影响行数
* @throws Exception
*/
public int executeByHql(String hql) throws Exception;
/**
* <b>function:</b> 传入hql语句执行查询,返回list集合
* @createDate 2010-8-3 上午10:00:34
* @author hoojo
* @param hql 查询的hql语句
* @return List集合
* @throws Exception
*/
public <T> List<T> findByHql(String hql) throws Exception;
/**
* <b>function:</b> 执行原生态的sql语句,添加、删除、修改语句
* @createDate 2010-8-2 下午05:33:42
* @author hoojo
* @param sql 将要执行的sql语句
* @return int [size=small][size=x-small][/size]
* @throws Exception
*/
public int executeBySql(String sql) throws Exception;
/**
* <b>function:</b> 传入sql语句执行查询,返回list集合
* @createDate 2010-8-3 上午10:00:34
* @author hoojo
* @param sql 查询的sql语句
* @return List集合
* @throws Exception
*/
public <T> List<T> findBySql(String sql) throws Exception;
/**
* <b>function:</b> 修改entity对象,返回是否修改成功
* @createDate 2010-8-2 下午05:35:47
* @author hoojo
* @param <T> 对象类型
* @param entity 将要修改的对象
* @return boolean true/false 是否修改成功
* @throws Exception
*/
public <T> boolean edit(T entity) throws Exception;
/**
* <b>function:</b> 传入hql语句执行修改,返回是否修改成功
* @createDate 2010-8-2 下午05:36:31
* @author hoojo
* @param hql 查询的hql语句
* @return boolean true/false 返回是否修改成功
* @throws Exception
*/
public boolean edit(String hql) throws Exception;
/**
* <b>function:</b> 执行修改的hql语句,返回修改的行数
* @createDate 2010-8-2 下午05:38:58
* @author hoojo
* @param hql 修改语句
* @return int 返回修改的行数
* @throws Exception
*/
public int editByHql(String hql) throws Exception;
/**
* <b>function:</b> 传入一个将要删除的entity对象,返回删除是否成功
* @createDate 2010-8-2 下午05:42:02
* @author hoojo
* @param <T> 传入对象类型
* @param entity 将要传入的对象
* @return boolean true/false
* @throws Exception
*/
public <T> boolean remove(T entity) throws Exception;
/**
* <b>function:</b> 传入一个entity对象Class和String型主键,返回该对象
* @createDate 2010-8-2 下午05:44:53
* @author hoojo
* @param <T> 返回、传入对象类型
* @param c 对象Class
* @param id 主键
* @return T 返回传入类型对象
* @throws Exception
*/
public <T> T getById(Class<T> c, String id) throws Exception;
/**
* <b>function:</b> 传入一个entity对象Class和Integer类型主键,返回该对象
* @createDate 2010-8-2 下午05:47:20
* @author hoojo
* @param <T> 返回、传入对象类型
* @param c 对象Class
* @param id 主键
* @return T 返回该类型的对象
* @throws Exception
*/
public <T> T getById(Class<T> c, Integer id) throws Exception;
/**
* <b>function:</b> 传入一个entity对象Class和Serializable类型主键,返回该对象
* @createDate 2010-8-2 下午05:48:36
* @author hoojo
* @param <T> 返回、传入对象类型
* @param c 对象Class
* @param id 主键
* @return T 返回该类型的对象
* @throws Exception
*/
public <T> T get(Class<T> c, Serializable id) throws Exception;
/**
* <b>function:</b> 传入hql语句,查询对象
* @createDate 2010-8-2 下午05:49:31
* @author hoojo
* @param <T> 返回对象类型
* @param hql 查询的hql语句
* @return 对象T
* @throws Exception
*/
public <T> T get(String hql) throws Exception;
/**
* <b>function:</b> 通过hql语句查询List集合
* @createDate 2010-8-2 下午05:51:05
* @author hoojo
* @param hql 查询hql语句
* @return List<?>
* @throws Exception
*/
public <T> List<T> getList(String hql) throws Exception;
/**
* <b>function:</b> 传入删除的hql语句,删除记录
* @createDate 2010-8-3 上午09:53:49
* @author hoojo
* @param hql 将要被执行删除的hql语句
* @return 是否删除成功
* @throws Exception
*/
public boolean remove(String hql) throws Exception;
/**
* <b>function:</b> 动态查询
* @createDate 2010-8-3 上午10:53:37
* @author hoojo
* @param <T> 查询类的类型
* @param c 动态查询组合对象
* @return list集合
* @throws Exception
*/
public <T> List<T> getList(Class<T> c) throws Exception;
/**
* <b>function:</b> 传入hql查询语句和object数组类型的参数,返回查询list集合
* @createDate 2010-8-2 下午05:52:36
* @author hoojo
* @param hql 查询的hql语句
* @param obj 查询参数
* @return 返回list集合
* @throws Exception
*/
public <T> List<T> getList(String hql, Object[] obj) throws Exception;
/**
* <b>function:</b> 传入查询语句和查询总条数(总记录)的hql语句、当前页数、每页显示调试数;返回查询后的list集合;
* list集合保存总记录调试和记录结果
* @createDate 2010-8-2 下午05:54:01
* @author hoojo
* @param queryHql 查询记录hql语句
* @param queryCountHql 查询记录条数hql语句
* @param firstResult 当前查询页
* @param maxResult 每页显示多少条
* @return List返回集合 集合0保存查询结果、集合1保存总记录条数
* @throws Exception
*/
public List<?> showPage(String queryHql, String queryCountHql, int firstResult, int maxResult) throws Exception;
/**
* <b>function:</b> 传入查询语句和查询总条数(总记录)的hql语句、page分页对象;返回查询后的list集合;
* @createDate 2010-8-3 上午11:16:59
* @author hoojo
* @param queryHql list集合结果查询
* @param queryCountHql 总记录调试查询
* @param page 分页对象
* @throws Exception
*/
public <T> void showPage(String queryHql, String queryCountHql, Page<T> page) throws Exception;
/**
* <b>function:</b> 分页查询,传入查询count的hql语句和DetachedCriteria动态查询条件进行查询分页
* @createDate 2010-8-3 上午11:04:39
* @author hoojo
* @param queryCountHql hql查询count语句总条数
* @param cResult DetachedCriteria 动态查询条件
* @param firstResult 起始
* @param maxResult 最大页数
* @return List<?> 查询集合
* @throws Exception
*/
public List<?> showPage(String queryCountHql, DetachedCriteria cResult, int firstResult, int maxResult) throws Exception;
/**
* <b>function:</b> 分页查询,传入查询的count的hql语句和动态查询DetachedCriteria类及page分页entity
* @createDate 2010-8-3 上午11:14:30
* @author hoojo
* @param queryCountHql 查询count语句
* @param cResult DetachedCriteria 动态查询组合类
* @param page Page分页实体类
* @throws Exception
*/
public <T> void showPage(String queryCountHql, DetachedCriteria cResult, Page<T> page) throws Exception;
/**
* <b>function:</b> 传入查询条件DetachedCriteria进行查询
* @createDate 2010-8-3 上午11:55:28
* @author hoojo
* @param <T> 类型
* @param dc DetachedCriteria动态条件查询
* @return List
* @throws Exception
*/
public <T> List<T> find(DetachedCriteria dc) throws Exception;
/**
* <b>function:</b> 暴露基类session供用户使用
* @createDate 2010-8-3 上午11:59:54
* @author hoojo
* @return Session
*/
public Session session();
/**
* <b>function:</b> 暴露HibernateTemplate模板,当基类(增删改查组件)方法不够用可以用模板进行操作
* @createDate 2010-8-3 上午11:58:51
* @author hoojo
* @return HibernateTemplate
*/
public HibernateTemplate getTemplate();
}
package com.hoo.dao;
import java.io.Serializable;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.criterion.DetachedCriteria;
import org.springframework.orm.hibernate3.HibernateTemplate;
import com.hoo.entity.Page;
/***
* <b>function:</b> 增删改查组件规范接口
* @project NetWorkService
* @package com.hoo.dao
* @fileName IBaseDao.java
* @createDate 2010-8-2 下午05:28:03
* @author hoojo
* @email hoojo_@126.com
* @blog http://blog.csdn.net/IBM_hoojo
*/
public interface IBaseDao {
/**
* <b>function:</b> 增加一个entity对象,返回是否添加成功
* @createDate 2010-8-2 下午05:28:38
* @author hoojo
* @param <T> 对象类型
* @param entity 对象
* @return boolean true/false
* @throws Exception
*/
public <T> boolean add(T entity) throws Exception;
/**
* <b>function:</b> 添加一个entity对象,返回添加对象的Integer类型的主键
* @createDate 2010-8-2 下午05:29:39
* @author hoojo
* @param <T> 对象类型
* @param entity 将要添加的对象
* @return Integer 返回主键
* @throws Exception
*/
public <T> Integer addAndGetId4Integer(T entity) throws Exception;
/**
* <b>function:</b> 添加一个对象并且返回该对象的String类型的主键
* @createDate 2010-8-2 下午05:31:32
* @author hoojo
* @param <T> 对象类型
* @param entity 将要添加的对象
* @return String 返回的主键
* @throws Exception
*/
public <T> String addAndGetId4String(T entity) throws Exception;
/**
* <b>function:</b> 传入hql语句执行
* @createDate 2010-8-2 下午04:42:26
* @author hoojo
* @param hql String hql语句
* @return int 影响行数
* @throws Exception
*/
public int executeByHql(String hql) throws Exception;
/**
* <b>function:</b> 传入hql语句执行查询,返回list集合
* @createDate 2010-8-3 上午10:00:34
* @author hoojo
* @param hql 查询的hql语句
* @return List集合
* @throws Exception
*/
public <T> List<T> findByHql(String hql) throws Exception;
/**
* <b>function:</b> 执行原生态的sql语句,添加、删除、修改语句
* @createDate 2010-8-2 下午05:33:42
* @author hoojo
* @param sql 将要执行的sql语句
* @return int
* @throws Exception
*/
public int executeBySql(String sql) throws Exception;
/**
* <b>function:</b> 传入sql语句执行查询,返回list集合
* @createDate 2010-8-3 上午10:00:34
* @author hoojo
* @param sql 查询的sql语句
* @return List集合
* @throws Exception
*/
public <T> List<T> findBySql(String sql) throws Exception;
/**
* <b>function:</b> 修改entity对象,返回是否修改成功
* @createDate 2010-8-2 下午05:35:47
* @author hoojo
* @param <T> 对象类型
* @param entity 将要修改的对象
* @return boolean true/false 是否修改成功
* @throws Exception
*/
public <T> boolean edit(T entity) throws Exception;
/**
* <b>function:</b> 传入hql语句执行修改,返回是否修改成功
* @createDate 2010-8-2 下午05:36:31
* @author hoojo
* @param hql 查询的hql语句
* @return boolean true/false 返回是否修改成功
* @throws Exception
*/
public boolean edit(String hql) throws Exception;
/**
* <b>function:</b> 执行修改的hql语句,返回修改的行数
* @createDate 2010-8-2 下午05:38:58
* @author hoojo
* @param hql 修改语句
* @return int 返回修改的行数
* @throws Exception
*/
public int editByHql(String hql) throws Exception;
/**
* <b>function:</b> 传入一个将要删除的entity对象,返回删除是否成功
* @createDate 2010-8-2 下午05:42:02
* @author hoojo
* @param <T> 传入对象类型
* @param entity 将要传入的对象
* @return boolean true/false
* @throws Exception
*/
public <T> boolean remove(T entity) throws Exception;
/**
* <b>function:</b> 传入一个entity对象Class和String型主键,返回该对象
* @createDate 2010-8-2 下午05:44:53
* @author hoojo
* @param <T> 返回、传入对象类型
* @param c 对象Class
* @param id 主键
* @return T 返回传入类型对象
* @throws Exception
*/
public <T> T getById(Class<T> c, String id) throws Exception;
/**
* <b>function:</b> 传入一个entity对象Class和Integer类型主键,返回该对象
* @createDate 2010-8-2 下午05:47:20
* @author hoojo
* @param <T> 返回、传入对象类型
* @param c 对象Class
* @param id 主键
* @return T 返回该类型的对象
* @throws Exception
*/
public <T> T getById(Class<T> c, Integer id) throws Exception;
/**
* <b>function:</b> 传入一个entity对象Class和Serializable类型主键,返回该对象
* @createDate 2010-8-2 下午05:48:36
* @author hoojo
* @param <T> 返回、传入对象类型
* @param c 对象Class
* @param id 主键
* @return T 返回该类型的对象
* @throws Exception
*/
public <T> T get(Class<T> c, Serializable id) throws Exception;
/**
* <b>function:</b> 传入hql语句,查询对象
* @createDate 2010-8-2 下午05:49:31
* @author hoojo
* @param <T> 返回对象类型
* @param hql 查询的hql语句
* @return 对象T
* @throws Exception
*/
public <T> T get(String hql) throws Exception;
/**
* <b>function:</b> 通过hql语句查询List集合
* @createDate 2010-8-2 下午05:51:05
* @author hoojo
* @param hql 查询hql语句
* @return List<?>
* @throws Exception
*/
public <T> List<T> getList(String hql) throws Exception;
/**
* <b>function:</b> 传入删除的hql语句,删除记录
* @createDate 2010-8-3 上午09:53:49
* @author hoojo
* @param hql 将要被执行删除的hql语句
* @return 是否删除成功
* @throws Exception
*/
public boolean remove(String hql) throws Exception;
/**
* <b>function:</b> 动态查询
* @createDate 2010-8-3 上午10:53:37
* @author hoojo
* @param <T> 查询类的类型
* @param c 动态查询组合对象
* @return list集合
* @throws Exception
*/
public <T> List<T> getList(Class<T> c) throws Exception;
/**
* <b>function:</b> 传入hql查询语句和object数组类型的参数,返回查询list集合
* @createDate 2010-8-2 下午05:52:36
* @author hoojo
* @param hql 查询的hql语句
* @param obj 查询参数
* @return 返回list集合
* @throws Exception
*/
public <T> List<T> getList(String hql, Object[] obj) throws Exception;
/**
* <b>function:</b> 传入查询语句和查询总条数(总记录)的hql语句、当前页数、每页显示调试数;返回查询后的list集合;
* list集合保存总记录调试和记录结果
* @createDate 2010-8-2 下午05:54:01
* @author hoojo
* @param queryHql 查询记录hql语句
* @param queryCountHql 查询记录条数hql语句
* @param firstResult 当前查询页
* @param maxResult 每页显示多少条
* @return List返回集合 集合0保存查询结果、集合1保存总记录条数
* @throws Exception
*/
public List<?> showPage(String queryHql, String queryCountHql, int firstResult, int maxResult) throws Exception;
/**
* <b>function:</b> 传入查询语句和查询总条数(总记录)的hql语句、page分页对象;返回查询后的list集合;
* @createDate 2010-8-3 上午11:16:59
* @author hoojo
* @param queryHql list集合结果查询
* @param queryCountHql 总记录调试查询
* @param page 分页对象
* @throws Exception
*/
public <T> void showPage(String queryHql, String queryCountHql, Page<T> page) throws Exception;
/**
* <b>function:</b> 分页查询,传入查询count的hql语句和DetachedCriteria动态查询条件进行查询分页
* @createDate 2010-8-3 上午11:04:39
* @author hoojo
* @param queryCountHql hql查询count语句总条数
* @param cResult DetachedCriteria 动态查询条件
* @param firstResult 起始
* @param maxResult 最大页数
* @return List<?> 查询集合
* @throws Exception
*/
public List<?> showPage(String queryCountHql, DetachedCriteria cResult, int firstResult, int maxResult) throws Exception;
/**
* <b>function:</b> 分页查询,传入查询的count的hql语句和动态查询DetachedCriteria类及page分页entity
* @createDate 2010-8-3 上午11:14:30
* @author hoojo
* @param queryCountHql 查询count语句
* @param cResult DetachedCriteria 动态查询组合类
* @param page Page分页实体类
* @throws Exception
*/
public <T> void showPage(String queryCountHql, DetachedCriteria cResult, Page<T> page) throws Exception;
/**
* <b>function:</b> 传入查询条件DetachedCriteria进行查询
* @createDate 2010-8-3 上午11:55:28
* @author hoojo
* @param <T> 类型
* @param dc DetachedCriteria动态条件查询
* @return List
* @throws Exception
*/
public <T> List<T> find(DetachedCriteria dc) throws Exception;
/**
* <b>function:</b> 暴露基类session供用户使用
* @createDate 2010-8-3 上午11:59:54
* @author hoojo
* @return Session
*/
public Session session();
/**
* <b>function:</b> 暴露HibernateTemplate模板,当基类(增删改查组件)方法不够用可以用模板进行操作
* @createDate 2010-8-3 上午11:58:51
* @author hoojo
* @return HibernateTemplate
*/
public HibernateTemplate getTemplate();
}
下面是实现IBaseDao接口的代码BaseDaoImpl.java:
package com.hoo.dao.impl;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.criterion.DetachedCriteria;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.hoo.dao.IBaseDao;
import com.hoo.entity.Page;
/**
* <b>function:</b> 删除改查组件实现类
* @project NetWorkService
* @package com.hhh.dao
* @fileName BaseDAOImpl.java
* @createDate 2010-8-2 下午05:58:45
* @author hoojo
* @email hoojo_@126.com
* @blog http://blog.csdn.net/IBM_hoojo
*/
@SuppressWarnings("unchecked")
public class BaseDaoImpl extends HibernateDaoSupport implements IBaseDao {
/**
* <b>function:</b> 增加一个entity对象,返回是否添加成功
* @createDate 2010-8-2 下午05:28:38
* @author hoojo
* @param <T> 对象类型
* @param entity 对象
* @return boolean true/false
* @throws Exception
*/
public <T> boolean add(T entity) throws Exception {
boolean bo = false;
try {
Serializable io = this.getHibernateTemplate().save(entity);
if (io != null) {
bo = true;
}
} catch (Exception e) {
bo = false;
throw new RuntimeException(e);
}
return bo;
}
/**
* <b>function:</b> 添加一个entity对象,返回添加对象的Integer类型的主键
* @createDate 2010-8-2 下午05:29:39
* @author hoojo
* @param <T> 对象类型
* @param entity 将要添加的对象
* @return Integer 返回主键
* @throws Exception
*/
public <T> Integer addAndGetId4Integer(T entity) throws Exception {
Integer id = null;
try {
id = (Integer) this.getHibernateTemplate().save(entity);
} catch (Exception e) {
throw new RuntimeException(e);
}
return id;
}
/**
* <b>function:</b> 添加一个对象并且返回该对象的String类型的主键
* @createDate 2010-8-2 下午05:31:32
* @author hoojo
* @param <T> 对象类型
* @param entity 将要添加的对象
* @return String 返回的主键
* @throws Exception
*/
public <T> String addAndGetId4String(T entity) throws Exception {
String id = null;
try {
id = (String) this.getHibernateTemplate().save(entity);
} catch (Exception e) {
throw new RuntimeException(e);
}
return id;
}
/**
* <b>function:</b> 修改entity对象,返回是否修改成功
* @createDate 2010-8-2 下午05:35:47
* @author hoojo
* @param <T> 对象类型
* @param entity 将要修改的对象
* @return boolean true/false 是否修改成功
* @throws Exception
*/
public <T> boolean edit(T entity) throws Exception {
boolean bo = false;
try {
this.getHibernateTemplate().update(entity);
bo = true;
} catch (Exception e) {
bo = false;
throw new RuntimeException(e);
}
return bo;
}
/**
* <b>function:</b> 传入hql语句执行修改,返回是否修改成功
* @createDate 2010-8-2 下午05:36:31
* @author hoojo
* @param hql 查询的hql语句
* @return boolean true/false 返回是否修改成功
* @throws Exception
*/
public boolean edit(String hql) throws Exception {
boolean bo = false;
try {
int count = this.getHibernateTemplate().bulkUpdate(hql);
bo = count > 0 ? true : false;
} catch (Exception e) {
bo = false;
throw new RuntimeException(e);
}
return bo;
}
/**
* <b>function:</b> 执行修改的hql语句,返回修改的行数
* @createDate 2010-8-2 下午05:38:58
* @author hoojo
* @param hql 修改语句
* @return int 返回修改的行数
* @throws Exception
*/
public int editByHql(String hql) throws Exception {
int count = 0;
try {
count = this.getHibernateTemplate().bulkUpdate(hql);
} catch (Exception e) {
throw new RuntimeException(e);
}
return count;
}
/**
* <b>function:</b> 传入hql语句执行
* @createDate 2010-8-2 下午04:42:26
* @author hoojo
* @param hql String hql语句
* @return int 影响行数
* @throws Exception
*/
public int executeByHql(String hql) throws Exception {
try {
return this.getHibernateTemplate().bulkUpdate(hql);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* <b>function:</b> 传入hql语句执行查询,返回list集合
* @createDate 2010-8-3 上午10:00:34
* @author hoojo
* @param hql 查询的hql语句
* @return List集合
* @throws Exception
*/
public <T> List<T> findByHql(String hql) throws Exception {
List list = null;
try {
list = (List<T>) this.getHibernateTemplate().find(hql);
} catch (Exception e) {
throw new RuntimeException(e);
}
return list;
}
/**
* <b>function:</b> 执行原生态的sql语句,添加、删除、修改语句
* @createDate 2010-8-2 下午05:33:42
* @author hoojo
* @param sql 将要执行的sql语句
* @return int
* @throws Exception
*/
public int executeBySql(String sql) throws Exception {
try {
return this.getSession().createSQLQuery(sql).executeUpdate();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* <b>function:</b> 传入sql语句执行查询,返回list集合
* @createDate 2010-8-3 上午10:00:34
* @author hoojo
* @param sql 查询的sql语句
* @return List集合
* @throws Exception
*/
public <T> List<T> findBySql(String sql) throws Exception {
List list = null;
try {
list = (List<T>) this.getSession().createSQLQuery(sql).list();
} catch (Exception e) {
throw new RuntimeException(e);
}
return list;
}
/**
* <b>function:</b> 传入一个entity对象Class和Serializable类型主键,返回该对象
* @createDate 2010-8-2 下午05:48:36
* @author hoojo
* @param <T> 返回、传入对象类型
* @param c 对象Class
* @param id 主键
* @return T 返回该类型的对象
* @throws Exception
*/
public <T> T get(Class<T> c, Serializable id) throws Exception {
T ety = null;
try {
ety = (T) this.getHibernateTemplate().get(c, id);
} catch (Exception e) {
throw new RuntimeException(e);
}
return ety;
}
/**
* <b>function:</b> 传入hql语句,查询对象
* @createDate 2010-8-2 下午05:49:31
* @author hoojo
* @param <T> 返回对象类型
* @param hql 查询的hql语句
* @return 对象T
* @throws Exception
*/
public <T> T get(String hql) throws Exception {
T ety = null;
try {
ety = (T) this.getSession().createQuery(hql).setMaxResults(1).uniqueResult();
} catch (Exception e) {
throw new RuntimeException(e);
}
return ety;
}
/**
* <b>function:</b> 通过hql语句查询List集合
* @createDate 2010-8-2 下午05:51:05
* @author hoojo
* @param hql 查询hql语句
* @return List<?>
* @throws Exception
*/
public <T> List<T> getList(String hql) throws Exception {
List<T> list = null;
try {
list = (List<T>) this.getHibernateTemplate().find(hql);
} catch (Exception e) {
throw new RuntimeException(e);
}
return list;
}
/**
* <b>function:</b> 传入一个entity对象Class和Integer类型主键,返回该对象
* @createDate 2010-8-2 下午05:47:20
* @author hoojo
* @param <T> 返回、传入对象类型
* @param c 对象Class
* @param id 主键
* @return T 返回该类型的对象
* @throws Exception
*/
public <T> T getById(Class<T> c, Integer id) throws Exception {
T ety = null;
try {
ety = (T) this.getHibernateTemplate().get(c, id);
} catch (Exception e) {
throw new RuntimeException(e);
}
return ety;
}
/**
* <b>function:</b> 传入一个entity对象Class和String型主键,返回该对象
* @createDate 2010-8-2 下午05:44:53
* @author hoojo
* @param <T> 返回、传入对象类型
* @param c 对象Class
* @param id 主键
* @return T 返回传入类型对象
* @throws Exception
*/
public <T> T getById(Class<T> c, String id) throws Exception {
T ety = null;
try {
ety = (T) this.getHibernateTemplate().get(c, id);
} catch (Exception e) {
throw new RuntimeException(e);
}
return ety;
}
/**
* <b>function:</b> 传入hql查询语句和object数组类型的参数,返回查询list集合
* @createDate 2010-8-2 下午05:52:36
* @author hoojo
* @param hql 查询的hql语句
* @param obj 查询参数
* @return 返回list集合
* @throws Exception
*/
public <T> List<T> getList(String hql, Object[] obj) throws Exception {
List<T> list = null;
try {
list = (List<T>) this.getHibernateTemplate().find(hql, obj);
} catch (Exception e) {
throw new RuntimeException(e);
}
return list;
}
/**
* <b>function:</b> 传入一个将要删除的entity对象,返回删除是否成功
* @createDate 2010-8-2 下午05:42:02
* @author hoojo
* @param <T> 传入对象类型
* @param entity 将要传入的对象
* @return boolean true/false
* @throws Exception
*/
public <T> boolean remove(T entity) throws Exception {
boolean bo = false;
try {
this.getHibernateTemplate().delete(entity);
bo = true;
} catch (Exception e) {
bo = false;
throw new RuntimeException(e);
}
return bo;
}
/**
* <b>function:</b> 传入删除的hql语句,删除记录
* @createDate 2010-8-3 上午09:53:49
* @author hoojo
* @param hql 将要被执行删除的hql语句
* @return 是否删除成功
* @throws Exception
*/
public boolean remove(String hql) throws Exception {
try {
return this.executeByHql(hql) > 0 ? true : false;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* <b>function:</b> 动态查询
* @createDate 2010-8-3 上午10:53:37
* @author hoojo
* @param <T> 查询类的类型
* @param c 动态查询组合对象
* @return list集合
* @throws Exception
*/
public <T> List<T> getList(Class<T> c) throws Exception {
List<T> list = null;
try {
this.getHibernateTemplate().findByCriteria(DetachedCriteria.forClass(c));
} catch (Exception e) {
throw new RuntimeException(e);
}
return list;
}
/**
* <b>function:</b> 传入查询语句和查询总条数(总记录)的hql语句、当前页数、每页显示调试数;返回查询后的list集合;
* list集合保存总记录调试和记录结果
* @createDate 2010-8-2 下午05:54:01
* @author hoojo
* @param queryHql 查询记录hql语句
* @param queryCountHql 查询记录条数hql语句
* @param firstResult 当前查询页
* @param maxResult 每页显示多少条
* @return List返回集合 集合0保存查询结果、集合1保存总记录条数
* @throws Exception
*/
public List<?> showPage(String queryHql, String queryCountHql, int firstResult, int maxResult) throws Exception {
List<Object> list = new ArrayList<Object>();
try {
Session session = this.getSession();
list.add(session.createQuery(queryHql)
.setFirstResult(firstResult).setMaxResults(maxResult).list());
list.add(session.createQuery(queryCountHql).setMaxResults(1).uniqueResult());
} catch (Exception e) {
throw new RuntimeException(e);
}
return list;
}
/**
* <b>function:</b> 传入查询语句和查询总条数(总记录)的hql语句、page分页对象;返回查询后的list集合;
* @createDate 2010-8-3 上午11:16:59
* @author hoojo
* @param queryHql list集合结果查询
* @param queryCountHql 总记录调试查询
* @param page 分页对象
* @throws Exception
*/
public <T> void showPage(String queryHql, String queryCountHql, Page<T> page) throws Exception {
try {
Session session = this.getSession();
page.setResult(session.createQuery(queryHql)
.setFirstResult(page.getCurrentPage()).setMaxResults(page.getPageSize()).list());
page.setTotalsCount(Integer.parseInt(session.createQuery(queryCountHql).setMaxResults(1).uniqueResult().toString()));
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* <b>function:</b> 分页查询,传入查询count的hql语句和DetachedCriteria动态查询条件进行查询分页
* @createDate 2010-8-3 上午11:04:39
* @author hoojo
* @param queryCountHql hql查询count语句总条数
* @param cResult DetachedCriteria 动态查询条件
* @param firstResult 起始
* @param maxResult 最大页数
* @return List<?> 查询集合
* @throws Exception
*/
public List<?> showPage(String queryCountHql, DetachedCriteria cResult, int firstResult, int maxResult) throws Exception {
List<Object> list = new ArrayList<Object>();
try {
Session session = this.getSession();
list.add(this.getHibernateTemplate().findByCriteria(cResult, firstResult, maxResult));
list.add(session.createQuery(queryCountHql).setMaxResults(1).uniqueResult());
} catch (Exception e) {
throw new RuntimeException(e);
}
return list;
}
/**
* <b>function:</b> 分页查询,传入查询的count的hql语句和动态查询DetachedCriteria类及page分页entity
* @createDate 2010-8-3 上午11:14:30
* @author hoojo
* @param queryCountHql 查询count语句
* @param cResult DetachedCriteria 动态查询组合类
* @param page Page分页实体类
* @throws Exception
*/
public <T> void showPage(String queryCountHql, DetachedCriteria cResult, Page<T> page) throws Exception {
try {
Session session = this.getSession();
page.setResult(this.getHibernateTemplate().findByCriteria(cResult, page.getCurrentPage(), page.getPageSize()));
page.setTotalsCount(Integer.parseInt(session.createQuery(queryCountHql).setMaxResults(1).uniqueResult().toString()));
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* <b>function:</b> 传入查询条件DetachedCriteria进行查询
* @createDate 2010-8-3 上午11:55:28
* @author hoojo
* @param <T> 类型
* @param dc DetachedCriteria动态条件查询
* @return List
* @throws Exception
*/
public <T> List<T> find(DetachedCriteria dc) throws Exception {
List<T> list = new ArrayList<T>();
try {
list = (List<T>) this.getHibernateTemplate().findByCriteria(dc);
} catch (Exception e) {
throw new RuntimeException(e);
}
return list;
}
/**
* <b>function:</b> 暴露基类session供用户使用
* @createDate 2010-8-3 上午11:59:54
* @author hoojo
* @return Session
*/
public Session session() {
return this.getSession();
}
/**
* <b>function:</b> 暴露HibernateTemplate模板,当基类(增删改查组件)方法不够用可以用模板进行操作
* @createDate 2010-8-3 上午11:58:51
* @author hoojo
* @return HibernateTemplate
*/
public HibernateTemplate getTemplate() {
return this.getHibernateTemplate();
}
}
package com.hoo.dao.impl;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.criterion.DetachedCriteria;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.hoo.dao.IBaseDao;
import com.hoo.entity.Page;
/**
* <b>function:</b> 删除改查组件实现类
* @project NetWorkService
* @package com.hhh.dao
* @fileName BaseDAOImpl.java
* @createDate 2010-8-2 下午05:58:45
* @author hoojo
* @email hoojo_@126.com
* @blog http://blog.csdn.net/IBM_hoojo
*/
@SuppressWarnings("unchecked")
public class BaseDaoImpl extends HibernateDaoSupport implements IBaseDao {
/**
* <b>function:</b> 增加一个entity对象,返回是否添加成功
* @createDate 2010-8-2 下午05:28:38
* @author hoojo
* @param <T> 对象类型
* @param entity 对象
* @return boolean true/false
* @throws Exception
*/
public <T> boolean add(T entity) throws Exception {
boolean bo = false;
try {
Serializable io = this.getHibernateTemplate().save(entity);
if (io != null) {
bo = true;
}
} catch (Exception e) {
bo = false;
throw new RuntimeException(e);
}
return bo;
}
/**
* <b>function:</b> 添加一个entity对象,返回添加对象的Integer类型的主键
* @createDate 2010-8-2 下午05:29:39
* @author hoojo
* @param <T> 对象类型
* @param entity 将要添加的对象
* @return Integer 返回主键
* @throws Exception
*/
public <T> Integer addAndGetId4Integer(T entity) throws Exception {
Integer id = null;
try {
id = (Integer) this.getHibernateTemplate().save(entity);
} catch (Exception e) {
throw new RuntimeException(e);
}
return id;
}
/**
* <b>function:</b> 添加一个对象并且返回该对象的String类型的主键
* @createDate 2010-8-2 下午05:31:32
* @author hoojo
* @param <T> 对象类型
* @param entity 将要添加的对象
* @return String 返回的主键
* @throws Exception
*/
public <T> String addAndGetId4String(T entity) throws Exception {
String id = null;
try {
id = (String) this.getHibernateTemplate().save(entity);
} catch (Exception e) {
throw new RuntimeException(e);
}
return id;
}
/**
* <b>function:</b> 修改entity对象,返回是否修改成功
* @createDate 2010-8-2 下午05:35:47
* @author hoojo
* @param <T> 对象类型
* @param entity 将要修改的对象
* @return boolean true/false 是否修改成功
* @throws Exception
*/
public <T> boolean edit(T entity) throws Exception {
boolean bo = false;
try {
this.getHibernateTemplate().update(entity);
bo = true;
} catch (Exception e) {
bo = false;
throw new RuntimeException(e);
}
return bo;
}
/**
* <b>function:</b> 传入hql语句执行修改,返回是否修改成功
* @createDate 2010-8-2 下午05:36:31
* @author hoojo
* @param hql 查询的hql语句
* @return boolean true/false 返回是否修改成功
* @throws Exception
*/
public boolean edit(String hql) throws Exception {
boolean bo = false;
try {
int count = this.getHibernateTemplate().bulkUpdate(hql);
bo = count > 0 ? true : false;
} catch (Exception e) {
bo = false;
throw new RuntimeException(e);
}
return bo;
}
/**
* <b>function:</b> 执行修改的hql语句,返回修改的行数
* @createDate 2010-8-2 下午05:38:58
* @author hoojo
* @param hql 修改语句
* @return int 返回修改的行数
* @throws Exception
*/
public int editByHql(String hql) throws Exception {
int count = 0;
try {
count = this.getHibernateTemplate().bulkUpdate(hql);
} catch (Exception e) {
throw new RuntimeException(e);
}
return count;
}
/**
* <b>function:</b> 传入hql语句执行
* @createDate 2010-8-2 下午04:42:26
* @author hoojo
* @param hql String hql语句
* @return int 影响行数
* @throws Exception
*/
public int executeByHql(String hql) throws Exception {
try {
return this.getHibernateTemplate().bulkUpdate(hql);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* <b>function:</b> 传入hql语句执行查询,返回list集合
* @createDate 2010-8-3 上午10:00:34
* @author hoojo
* @param hql 查询的hql语句
* @return List集合
* @throws Exception
*/
public <T> List<T> findByHql(String hql) throws Exception {
List list = null;
try {
list = (List<T>) this.getHibernateTemplate().find(hql);
} catch (Exception e) {
throw new RuntimeException(e);
}
return list;
}
/**
* <b>function:</b> 执行原生态的sql语句,添加、删除、修改语句
* @createDate 2010-8-2 下午05:33:42
* @author hoojo
* @param sql 将要执行的sql语句
* @return int
* @throws Exception
*/
public int executeBySql(String sql) throws Exception {
try {
return this.getSession().createSQLQuery(sql).executeUpdate();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* <b>function:</b> 传入sql语句执行查询,返回list集合
* @createDate 2010-8-3 上午10:00:34
* @author hoojo
* @param sql 查询的sql语句
* @return List集合
* @throws Exception
*/
public <T> List<T> findBySql(String sql) throws Exception {
List list = null;
try {
list = (List<T>) this.getSession().createSQLQuery(sql).list();
} catch (Exception e) {
throw new RuntimeException(e);
}
return list;
}
/**
* <b>function:</b> 传入一个entity对象Class和Serializable类型主键,返回该对象
* @createDate 2010-8-2 下午05:48:36
* @author hoojo
* @param <T> 返回、传入对象类型
* @param c 对象Class
* @param id 主键
* @return T 返回该类型的对象
* @throws Exception
*/
public <T> T get(Class<T> c, Serializable id) throws Exception {
T ety = null;
try {
ety = (T) this.getHibernateTemplate().get(c, id);
} catch (Exception e) {
throw new RuntimeException(e);
}
return ety;
}
/**
* <b>function:</b> 传入hql语句,查询对象
* @createDate 2010-8-2 下午05:49:31
* @author hoojo
* @param <T> 返回对象类型
* @param hql 查询的hql语句
* @return 对象T
* @throws Exception
*/
public <T> T get(String hql) throws Exception {
T ety = null;
try {
ety = (T) this.getSession().createQuery(hql).setMaxResults(1).uniqueResult();
} catch (Exception e) {
throw new RuntimeException(e);
}
return ety;
}
/**
* <b>function:</b> 通过hql语句查询List集合
* @createDate 2010-8-2 下午05:51:05
* @author hoojo
* @param hql 查询hql语句
* @return List<?>
* @throws Exception
*/
public <T> List<T> getList(String hql) throws Exception {
List<T> list = null;
try {
list = (List<T>) this.getHibernateTemplate().find(hql);
} catch (Exception e) {
throw new RuntimeException(e);
}
return list;
}
/**
* <b>function:</b> 传入一个entity对象Class和Integer类型主键,返回该对象
* @createDate 2010-8-2 下午05:47:20
* @author hoojo
* @param <T> 返回、传入对象类型
* @param c 对象Class
* @param id 主键
* @return T 返回该类型的对象
* @throws Exception
*/
public <T> T getById(Class<T> c, Integer id) throws Exception {
T ety = null;
try {
ety = (T) this.getHibernateTemplate().get(c, id);
} catch (Exception e) {
throw new RuntimeException(e);
}
return ety;
}
/**
* <b>function:</b> 传入一个entity对象Class和String型主键,返回该对象
* @createDate 2010-8-2 下午05:44:53
* @author hoojo
* @param <T> 返回、传入对象类型
* @param c 对象Class
* @param id 主键
* @return T 返回传入类型对象
* @throws Exception
*/
public <T> T getById(Class<T> c, String id) throws Exception {
T ety = null;
try {
ety = (T) this.getHibernateTemplate().get(c, id);
} catch (Exception e) {
throw new RuntimeException(e);
}
return ety;
}
/**
* <b>function:</b> 传入hql查询语句和object数组类型的参数,返回查询list集合
* @createDate 2010-8-2 下午05:52:36
* @author hoojo
* @param hql 查询的hql语句
* @param obj 查询参数
* @return 返回list集合
* @throws Exception
*/
public <T> List<T> getList(String hql, Object[] obj) throws Exception {
List<T> list = null;
try {
list = (List<T>) this.getHibernateTemplate().find(hql, obj);
} catch (Exception e) {
throw new RuntimeException(e);
}
return list;
}
/**
* <b>function:</b> 传入一个将要删除的entity对象,返回删除是否成功
* @createDate 2010-8-2 下午05:42:02
* @author hoojo
* @param <T> 传入对象类型
* @param entity 将要传入的对象
* @return boolean true/false
* @throws Exception
*/
public <T> boolean remove(T entity) throws Exception {
boolean bo = false;
try {
this.getHibernateTemplate().delete(entity);
bo = true;
} catch (Exception e) {
bo = false;
throw new RuntimeException(e);
}
return bo;
}
/**
* <b>function:</b> 传入删除的hql语句,删除记录
* @createDate 2010-8-3 上午09:53:49
* @author hoojo
* @param hql 将要被执行删除的hql语句
* @return 是否删除成功
* @throws Exception
*/
public boolean remove(String hql) throws Exception {
try {
return this.executeByHql(hql) > 0 ? true : false;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* <b>function:</b> 动态查询
* @createDate 2010-8-3 上午10:53:37
* @author hoojo
* @param <T> 查询类的类型
* @param c 动态查询组合对象
* @return list集合
* @throws Exception
*/
public <T> List<T> getList(Class<T> c) throws Exception {
List<T> list = null;
try {
this.getHibernateTemplate().findByCriteria(DetachedCriteria.forClass(c));
} catch (Exception e) {
throw new RuntimeException(e);
}
return list;
}
/**
* <b>function:</b> 传入查询语句和查询总条数(总记录)的hql语句、当前页数、每页显示调试数;返回查询后的list集合;
* list集合保存总记录调试和记录结果
* @createDate 2010-8-2 下午05:54:01
* @author hoojo
* @param queryHql 查询记录hql语句
* @param queryCountHql 查询记录条数hql语句
* @param firstResult 当前查询页
* @param maxResult 每页显示多少条
* @return List返回集合 集合0保存查询结果、集合1保存总记录条数
* @throws Exception
*/
public List<?> showPage(String queryHql, String queryCountHql, int firstResult, int maxResult) throws Exception {
List<Object> list = new ArrayList<Object>();
try {
Session session = this.getSession();
list.add(session.createQuery(queryHql)
.setFirstResult(firstResult).setMaxResults(maxResult).list());
list.add(session.createQuery(queryCountHql).setMaxResults(1).uniqueResult());
} catch (Exception e) {
throw new RuntimeException(e);
}
return list;
}
/**
* <b>function:</b> 传入查询语句和查询总条数(总记录)的hql语句、page分页对象;返回查询后的list集合;
* @createDate 2010-8-3 上午11:16:59
* @author hoojo
* @param queryHql list集合结果查询
* @param queryCountHql 总记录调试查询
* @param page 分页对象
* @throws Exception
*/
public <T> void showPage(String queryHql, String queryCountHql, Page<T> page) throws Exception {
try {
Session session = this.getSession();
page.setResult(session.createQuery(queryHql)
.setFirstResult(page.getCurrentPage()).setMaxResults(page.getPageSize()).list());
page.setTotalsCount(Integer.parseInt(session.createQuery(queryCountHql).setMaxResults(1).uniqueResult().toString()));
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* <b>function:</b> 分页查询,传入查询count的hql语句和DetachedCriteria动态查询条件进行查询分页
* @createDate 2010-8-3 上午11:04:39
* @author hoojo
* @param queryCountHql hql查询count语句总条数
* @param cResult DetachedCriteria 动态查询条件
* @param firstResult 起始
* @param maxResult 最大页数
* @return List<?> 查询集合
* @throws Exception
*/
public List<?> showPage(String queryCountHql, DetachedCriteria cResult, int firstResult, int maxResult) throws Exception {
List<Object> list = new ArrayList<Object>();
try {
Session session = this.getSession();
list.add(this.getHibernateTemplate().findByCriteria(cResult, firstResult, maxResult));
list.add(session.createQuery(queryCountHql).setMaxResults(1).uniqueResult());
} catch (Exception e) {
throw new RuntimeException(e);
}
return list;
}
/**
* <b>function:</b> 分页查询,传入查询的count的hql语句和动态查询DetachedCriteria类及page分页entity
* @createDate 2010-8-3 上午11:14:30
* @author hoojo
* @param queryCountHql 查询count语句
* @param cResult DetachedCriteria 动态查询组合类
* @param page Page分页实体类
* @throws Exception
*/
public <T> void showPage(String queryCountHql, DetachedCriteria cResult, Page<T> page) throws Exception {
try {
Session session = this.getSession();
page.setResult(this.getHibernateTemplate().findByCriteria(cResult, page.getCurrentPage(), page.getPageSize()));
page.setTotalsCount(Integer.parseInt(session.createQuery(queryCountHql).setMaxResults(1).uniqueResult().toString()));
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* <b>function:</b> 传入查询条件DetachedCriteria进行查询
* @createDate 2010-8-3 上午11:55:28
* @author hoojo
* @param <T> 类型
* @param dc DetachedCriteria动态条件查询
* @return List
* @throws Exception
*/
public <T> List<T> find(DetachedCriteria dc) throws Exception {
List<T> list = new ArrayList<T>();
try {
list = (List<T>) this.getHibernateTemplate().findByCriteria(dc);
} catch (Exception e) {
throw new RuntimeException(e);
}
return list;
}
/**
* <b>function:</b> 暴露基类session供用户使用
* @createDate 2010-8-3 上午11:59:54
* @author hoojo
* @return Session
*/
public Session session() {
return this.getSession();
}
/**
* <b>function:</b> 暴露HibernateTemplate模板,当基类(增删改查组件)方法不够用可以用模板进行操作
* @createDate 2010-8-3 上午11:58:51
* @author hoojo
* @return HibernateTemplate
*/
public HibernateTemplate getTemplate() {
return this.getHibernateTemplate();
}
}
分页对象Page.java:
package com.hoo.entity;
import java.util.ArrayList;
import java.util.List;
/**
* <b>function:</b> 分页entity,封装分页数据
* @project NetWorkService
* @package com.hoo.entity
* @fileName Page.java
* @createDate 2010-8-3 上午10:32:03
* @author hoojo
* @email hoojo_@126.com
* @blog http://blog.csdn.net/IBM_hoojo
*/
public class Page<T> {
//当前页数
private int currentPage;
//总页数
private int totalsPage;
//每页显示记录条数
private int pageSize;
//总记录条数
private int totalsCount;
//查询返回结果
private List<T> result = new ArrayList<T>();
//分页链接
private String uri;
public String getUri() {
return uri;
}
public void setUri(String uri) {
this.uri = uri;
}
public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) throws Exception {
if (currentPage < 0) {
currentPage = 0;
}
this.currentPage = currentPage;
}
public int getTotalsPage() {
try {
if (totalsCount % pageSize == 0) {
totalsPage = totalsCount / pageSize;
} else {
totalsPage = (totalsCount / pageSize) + 1;
}
} catch (Exception e) {
throw new RuntimeException(e);
}
return totalsPage;
}
public void setTotalsPage(int totalsPage) {
if (totalsPage < 0) {
totalsPage = 0;
}
this.totalsPage = totalsPage;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
if (pageSize <= 0) {
pageSize = 20;
}
this.pageSize = pageSize;
}
public int getTotalsCount() {
return totalsCount;
}
public void setTotalsCount(int totalsCount) {
if (totalsCount < 0) {
totalsCount = 0;
}
this.totalsCount = totalsCount;
}
public List<T> getResult() {
return result;
}
public void setResult(List<T> result) {
this.result = result;
}
}
package com.hoo.entity;
import java.util.ArrayList;
import java.util.List;
/**
* <b>function:</b> 分页entity,封装分页数据
* @project NetWorkService
* @package com.hoo.entity
* @fileName Page.java
* @createDate 2010-8-3 上午10:32:03
* @author hoojo
* @email hoojo_@126.com
* @blog http://blog.csdn.net/IBM_hoojo
*/
public class Page<T> {
//当前页数
private int currentPage;
//总页数
private int totalsPage;
//每页显示记录条数
private int pageSize;
//总记录条数
private int totalsCount;
//查询返回结果
private List<T> result = new ArrayList<T>();
//分页链接
private String uri;
public String getUri() {
return uri;
}
public void setUri(String uri) {
this.uri = uri;
}
public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) throws Exception {
if (currentPage < 0) {
currentPage = 0;
}
this.currentPage = currentPage;
}
public int getTotalsPage() {
try {
if (totalsCount % pageSize == 0) {
totalsPage = totalsCount / pageSize;
} else {
totalsPage = (totalsCount / pageSize) + 1;
}
} catch (Exception e) {
throw new RuntimeException(e);
}
return totalsPage;
}
public void setTotalsPage(int totalsPage) {
if (totalsPage < 0) {
totalsPage = 0;
}
this.totalsPage = totalsPage;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
if (pageSize <= 0) {
pageSize = 20;
}
this.pageSize = pageSize;
}
public int getTotalsCount() {
return totalsCount;
}
public void setTotalsCount(int totalsCount) {
if (totalsCount < 0) {
totalsCount = 0;
}
this.totalsCount = totalsCount;
}
public List<T> getResult() {
return result;
}
public void setResult(List<T> result) {
this.result = result;
}
}
增删改查简单示例:
package com.hoo.dao.impl;
import java.util.List;
import com.hoo.dao.IBaseDao;
import com.hoo.entity.UserInfo;
public class TestDaoImpl<T extends UserInfo> implements ITestDao<T> {
private IBaseDao dao;
//setter方法注入dao
public void setDao(IBaseDao dao) {
this.dao = dao;
}
//查询
public <T extends UserInfo> List<T> getSortListByParentId(T entity) throws Exception {
String hql = "....";
if (entity == null || entity.getUserName() == null || "".equals(entity.getId())) {
hql += " ...";
} else {
hql += " ...";
}
return dao.getList(hql);
}
//添加
public boolean addUser(T entity) {
return dao.add(entity);
}
//删除
public boolean removeUser(T entity) {
return dao.remove(entity);
}
//修改
public boolean editUser(T entity) {
return dao.edit(entity);
}
}
package com.hoo.dao.impl;
import java.util.List;
import com.hoo.dao.IBaseDao;
import com.hoo.entity.UserInfo;
public class TestDaoImpl<T extends UserInfo> implements ITestDao<T> {
private IBaseDao dao;
//setter方法注入dao
public void setDao(IBaseDao dao) {
this.dao = dao;
}
//查询
public <T extends UserInfo> List<T> getSortListByParentId(T entity) throws Exception {
String hql = "....";
if (entity == null || entity.getUserName() == null || "".equals(entity.getId())) {
hql += " ...";
} else {
hql += " ...";
}
return dao.getList(hql);
}
//添加
public boolean addUser(T entity) {
return dao.add(entity);
}
//删除
public boolean removeUser(T entity) {
return dao.remove(entity);
}
//修改
public boolean editUser(T entity) {
return dao.edit(entity);
}
}
为TestDaoImpl注入BaseDao即可
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~dao 注入~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!-- 数据库操作基类,所有的类要注入基类 -->
<bean id="baseDao" class="com.hhh.dao.impl.BaseDaoImpl">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<!-- TestDao实现 -->
<bean id="testDao" class="com.hhh.dao.impl.TestDaoImpl">
<!-- 注入基类BaseDaoImpl -->
<property name="dao" ref="baseDao"/>
</bean
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/IBM_hoojo/archive/2010/09/28/5912368.aspx
相关推荐
在实际应用中,二次封装的`HibernateDaoSupport`组件还可以包含事务管理、缓存控制、性能优化等功能。通过这些扩展,我们不仅可以提高代码的复用性,还能降低维护成本,使得开发过程更加高效。 例如,对于`in`操作...
在Java Web开发中,Spring和Hibernate是两个非常重要的框架,它们常常被联合使用来处理数据库操作,如增、删、改、查(CRUD)。本文将深入探讨如何利用Spring与Hibernate整合,通过两种不同的方式来实现这些基本操作...
本示例主要介绍如何实现Spring Boot 2.0多数据源的集成,并结合Hibernate进行配置,特别是在DAO层使用`HibernateDaoSupport`进行操作,而非使用JPA(Java Persistence API)。 首先,让我们了解Spring Boot 2.0的...
例如,只需简单声明`public class BookManager extends HibernateEntityDao<Book> {}`,BookManager就能自动拥有对Book类的增删改查方法,无需手动编写这些基础操作。 第三层是HibernateExtendDao,它是...
HibernateDaoSupport和HibernateTemplate是Spring对Hibernate的封装,使得开发者可以更加专注于业务逻辑,而不是数据库操作。HibernateDaoSupport提供了对Hibernate Session的基本支持,而HibernateTemplate则进一步...
1. `setSessionFactory(SessionFactory sessionFactory)`: 这个方法用于设置SessionFactory对象,它是Hibernate的核心组件,负责管理持久化类和数据库之间的映射。 2. `getHibernateTemplate()`: 返回一个`...
级联操作允许在一次主对象的操作中处理相关联的对象,如`CascadeType.ALL`表示对关联对象的所有操作都进行级联。 8. **缓存机制**: Hibernate提供了第一级缓存(Session级别的)和第二级缓存(SessionFactory级别的...
<property name="configLocation" value="classpath:hibernate.cfg.xml"/> <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager"> ``` 4. **实体类和...
下面,我们将对Hibernate分页封装进行详细的介绍和分析。 1. 分页概述 在实际开发中,分页是非常常见的需求,例如,我们需要从数据库中检索出某个表中的所有记录,但是这些记录可能有成千上万条,這時候我们需要对...
### HibernateDaoSupport 分页实现详解 #### 一、概述 在Java开发中,尤其是在Web应用领域,对数据库的高效查询及数据展示是非常重要的一个环节。其中分页查询是提高用户体验和减轻服务器压力的一种常见手段。...
总结,`HibernateDaoSupport`是Spring框架中为了简化Hibernate DAO层实现的一个重要工具,它通过提供SessionFactory注入、自动Session管理以及封装的HibernateTemplate,极大地提高了开发效率,降低了出错概率。...
6. **持久化操作**:例如增删改查(CRUD)操作,通过Session的save(), saveOrUpdate(), update(), delete()方法,以及HibernateTemplate的对应方法实现。 7. **事务管理**:Spring支持编程式和声明式事务管理。在这...
1. **对象持久化**:Hibernate作为JDBC的轻量级替代,它抽象了数据库操作,允许开发者以面向对象的方式处理数据,无需编写大量的SQL语句。 2. **独立性**:Hibernate不依赖于应用服务器或EJB,适用于任何JDBC支持的...
1. **Hibernate核心组件**:Hibernate的核心组件包括配置文件、实体类、映射文件和Session工厂。配置文件(如hibernate.cfg.xml)用于定义数据源、方言等信息;实体类代表数据库中的表,通过注解或XML映射文件与...
Spring4.0+Hibernate4.0+Struts2.3整合案例:实现增删改查。 ===================== application.xml: xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=...
**JPA(Java Persistence API)与Hibernate:** JPA是Java平台上的一个标准,它定义了如何在Java应用中管理关系数据库。它提供了一种面向对象的方式来操作数据库,通过ORM(对象关系映射)技术将Java对象与数据库表...
第24次课-1 Spring与Hibernate的整合 本节主要内容 24.1 概述 24.2 管理SessionFactory 24.3 Spring对Hibernate的简化 24.1 概述 24.1.1 概述 Spring提供了很多IoC特性的支持,方便处理大部分典型的Hibernate整合...
4. **数据访问层(Data Access)**:Hibernate负责数据的持久化操作。 #### 3.2 具体实现 - **业务逻辑层**:如`UserBizImpl`类实现了`IUserBiz`接口,提供了具体的业务逻辑方法。 - **数据访问层**:如`...
#### 二、`hibernateDaoSupport`类的核心功能 `hibernateDaoSupport`类提供了以下几个核心功能: 1. **SessionFactory管理**:`hibernateDaoSupport`提供了一个`SessionFactory`属性,该属性可以通过构造器或setter...
- **CRUD操作**:Spring整合Hibernate后,可以方便地进行增删查改操作,如通过SessionFactory的openSession()方法打开Session,然后调用save()、update()、delete()和load()等方法。 - **Query接口**:Spring 4.3...