package com.hrmsys.dao.impl;
import java.io.Serializable;
import java.sql.SQLException;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.util.Assert;
public class BaseDAO extends HibernateDaoSupport {
public static final Log log = LogFactory.getLog(BaseDAO.class);
/**
* 保存实体
* @param entity
*/
public boolean save(Object entity){
try{
this.getHibernateTemplate().save(entity);
}catch(Exception e){
e.printStackTrace();
log.info("save "+entity.getClass().getName()+" is failed!");
return false;
}
return true;
}
/**
* 保存或更新某个实例
*
* @param entity
*/
public boolean saveOrUpdate(Object entity) {
try{
this.getHibernateTemplate().saveOrUpdate(entity);
}catch(Exception e){
e.printStackTrace();
log.info("saveOrUpdate " + entity.getClass().getName() + " is failed!");
return false;
}
return true;
}
/**
* 删除某个实例
*
* @param entity
*/
public void delete(Object entity) {
try{
this.getHibernateTemplate().delete(entity);
}catch(Exception e){
e.printStackTrace();
log.info("delete " + entity.getClass().getName() + " is failed!");
}
}
/**
* 依据id删除实体
*
* @param <T>
* @param clazz
* @param id
*/
@SuppressWarnings("unchecked")
public <T> boolean deleteById(Class clazz, Serializable id) {
try{
this.delete(this.get(clazz, id));
}catch(Exception e){
e.printStackTrace();
log.info("delete by id for " + clazz.getName() + " is failed!");
return false;
}
return true;
}
/**
* merge()方法,会根据对象是否进行了实质性修改,来决定是否执行相应的update/delete/update语句,
* 而upate()则不会进行比较,只用给定的对象信息覆盖原有信息
* 合并后的entity实例仍然是一个脱管态,而save或saveOrUpdate执行后变为持久态
*
* @param entity
*/
public boolean update(Object entity) {
try{
this.getHibernateTemplate().merge(entity);
}catch(Exception e){
e.printStackTrace();
log.info("update "+ entity.getClass().getName() + " is failed!");
return false;
}
return true;
}
/**
* 返回所给id的实体类持久化实例,如果实例不存在则返回null。 该方法不会返回没有初始化的实例。
*
* @param <T>
* @param clazz
* @param id
* @return
*/
@SuppressWarnings("unchecked")
public <T> T get(Class<T> clazz, Serializable id) {
try{
return (T) getHibernateTemplate().get(clazz, id);
}catch(Exception e){
e.printStackTrace();
log.info("get by id for " + clazz.getClass().getName() + " is failed!");
}
return null;
}
/**
* 懒加载 返回所给id的实体类持久化实例,假定该实例存在。该方法可能返回一个代理实例, 这个代理实例在非id的方法被访问的时候根据需要初始化。
* 如果查找的实例不存在,抛出异常。
*
* @param <T>
* @param clazz
* @param id
* @return
*/
public <T> T load(Class<T> clazz, Serializable id) {
return (T) getHibernateTemplate().load(clazz, id);
}
/**
* 直接查询所有数据 当数据大时易产生性能问题
*
* @param <T>
* @param clazz
* @return
*/
@SuppressWarnings("unchecked")
public <T> List<T> findAll(Class<T> clazz) {
try{
return this.getHibernateTemplate().loadAll(clazz);
}catch(Exception e){
e.printStackTrace();
log.info("find all for " + clazz.getClass().getName() + " is failed!");
}
return null;
}
/**
* 依据属性按序查询出所有 当数据大时易产生性能问题
*
* @param <T>
* @param clazz
* @param orderBy
* @param isAsc
* @return List<T>
* @see DetachedCriteria用于有大量的动态条件查询,是一种离线的查询 不需要session创建,需Critteria正相反
*/
@SuppressWarnings("unchecked")
public <T> List<T> findAll(Class<T> clazz, String orderBy, boolean isAsc) {
Assert.hasText(orderBy);
if (isAsc) {
return this.getHibernateTemplate().findByCriteria(
DetachedCriteria.forClass(clazz).addOrder(
Order.asc(orderBy)));
} else {
return this.getHibernateTemplate().findByCriteria(
DetachedCriteria.forClass(clazz).addOrder(
Order.desc(orderBy)));
}
}
/**
* 强制Session冲刷。将当前Session中所有维持在内存中的保存、更新和删除持久化状态同步到数据库。
* 该方法必须在事务提交和Session关闭之前调用
* 。建议只在相同的事务内后续操作依赖于之前操作对数据库的改变时使用,一般情况建议依赖于事务提交时的自动冲刷即可,无需手动调用此方法。
*/
public void flush() {
this.getHibernateTemplate().flush();
}
/**
* 从Session的缓存中移除该实例。该实例所有的更改将不会被同步到数据库。
*
* @param entity
*/
public void evict(Object entity) {
this.getHibernateTemplate().evict(entity);
}
/**
* 清除Session中缓存的所有对象,并取消当前Session中所有维持在内存中的保存、更新和删除持久化状态。
* 该方法不会关闭已经打开的迭代器或ScrollableResults实例。
*/
public void clear() {
this.getHibernateTemplate().clear();
}
/**
* 根据hql和value查询
*
* @param hql
* @param values
* @return
*/
public List findByHQLAndValue(String hql, Object... values) {
try{
return this.getHibernateTemplate().find(hql, values);
}catch(Exception e){
e.printStackTrace();
log.info("execute for '"+ hql + "' is failed!");
}
return null;
}
/**
* 根据hql查询
* @param hql
* @return
*/
public List findByHQL(String hql) {
try{
return this.getHibernateTemplate().find(hql);
}catch(Exception e){
e.printStackTrace();
log.info("execute for '" + hql + "' is failed!");
}
return null;
}
/**
* 根据clazz propertyName value进行查询
*
* @param <T>
* @param clazz
* @param propertyName
* @param value
* @return
*/
@SuppressWarnings("unchecked")
public <T> List<T> findByProperty(final Class<T> clazz,
final String propertyName, final Object value) {
try{
Assert.hasText(propertyName);
return this.getHibernateTemplate().executeFind(new HibernateCallback() {
@Override
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
return createCriteria(clazz, session,
Restrictions.eq(propertyName, value)).list();
}
});
}catch(Exception e){
e.printStackTrace();
log.info("findByProperty for " + clazz.getClass().getName() + " is failed!");
}
return null;
}
/**
* 创建一个criteria 一个中介类 Criterion是个接口,其实例可以由Restritions来创建
*
* @param <T>
* @param clazz
* @param session
* @param values
* @return
*/
public <T> Criteria createCriteria(Class<T> clazz, Session session,
Criterion... values) {
Criteria criteria = session.createCriteria(clazz);
for (Criterion value : values) {
criteria.add(value);
}
return criteria;
}
/**
* 按属性查询且排序
*
* @param <T>
* @param clazz
* @param propertyName
* @param value
* @param orderBy
* @param isAsc
* @return
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
毕业设计javajsp人力资源管理ssh-qlkrp源码工具包 后台是ssh框架,页面是jsp,数据库mysql,jdk1.8,开发工具用ecplise、myecplise、sts、idea都可以 部门管理 职员管理 奖惩管理 薪资管理 培训管理 招聘管理 报表管理 系统管理 包含:源码、数据库脚本、环境工具包、相同框架项目的安装教程(在说明文档中)
资源推荐
资源详情
资源评论
收起资源包目录
毕业设计javajsp人力资源管理ssh-qlkrp源码工具包 (1446个子文件)
SalaryServiceImpl.class 10KB
EmpServiceImpl.class 10KB
BaseDAO.class 9KB
EmpAction.class 8KB
Employee.class 8KB
FileExport.class 8KB
SalaryAction.class 7KB
UserAction.class 7KB
PermissionServiceImpl.class 6KB
Salary.class 6KB
SalaryBean.class 6KB
DeptServiceImpl.class 5KB
TrainRecordAction.class 5KB
EncouragePunishAction.class 5KB
EmployeeBean.class 5KB
ValidateCodeServlet.class 5KB
TrainAction.class 5KB
RecruitmentAction.class 5KB
TrainRecordServiceImpl.class 5KB
UserDAOImpl.class 5KB
SalaryDAOImpl.class 5KB
TrainServiceImpl.class 4KB
SalaryBasicServiceImpl.class 4KB
UserServiceImpl.class 4KB
JobChangeServiceImpl.class 4KB
MenuServiceImpl.class 4KB
SalaryBasicDAOImpl.class 4KB
SalaryBasicAction.class 4KB
JobChangeAction.class 4KB
DeptAction.class 4KB
EmployeeDAOImpl.class 4KB
JobAction.class 4KB
EncouragePunishDAOImpl.class 3KB
JobDAOImpl.class 3KB
PermissionAction.class 3KB
SalaryBasic.class 3KB
RoleServiceImpl.class 3KB
Train.class 3KB
JobServiceImpl.class 3KB
TrainRecordDAOImpl.class 3KB
TrainDAOImpl.class 3KB
DepartmentDAOImpl.class 3KB
JobChange.class 3KB
Recruitment.class 3KB
EncouragePunishServiceImpl.class 3KB
RecruitmentDAOImpl.class 3KB
RecruitmentServiceImpl.class 3KB
SalaryBasicBean.class 3KB
EncouragePunish.class 3KB
RevenueServiceImpl.class 3KB
BoonServiceImpl.class 3KB
User.class 3KB
RevenueDAOImpl.class 3KB
JobChangeDAOImpl.class 3KB
TrainBean.class 3KB
CurrentDate.class 2KB
RolePermissionDAOImpl.class 2KB
TrainRecord.class 2KB
RevenueAction.class 2KB
TrainRecordBean.class 2KB
BoonAction.class 2KB
RoleAction.class 2KB
RolePermissionServiceImpl.class 2KB
SequenceBuilder.class 2KB
PermissionDAOImpl.class 2KB
BaseAction.class 2KB
AuthorityFilter.class 2KB
MenuBean.class 2KB
Menu.class 2KB
Job.class 2KB
Role.class 2KB
BackFilter.class 2KB
Boon.class 2KB
BoonDAOImpl.class 2KB
Department.class 2KB
UserBean.class 2KB
Permission.class 2KB
BaseDAO$2.class 2KB
Revenue.class 2KB
MD5.class 2KB
BaseDAO$3.class 2KB
RolePermissionAction.class 2KB
BaseDAO$1.class 2KB
MenuAction.class 1KB
DepartmentBean.class 1KB
BaseDAO$4.class 1KB
RolePermission.class 1KB
MenuDAOImpl.class 1KB
Authority.class 1KB
RoleDAOImpl.class 1KB
PermissionBean.class 1KB
RecruitmentBean.class 1KB
EncouragePunishBean.class 1KB
RoleBean.class 1KB
EmpService.class 1KB
SalaryDAO.class 1014B
LogListener.class 990B
SalaryService.class 933B
EmployeeDAO.class 930B
DepartmentDAO.class 894B
共 1446 条
- 1
- 2
- 3
- 4
- 5
- 6
- 15
资源评论
言宇程序
- 粉丝: 2413
- 资源: 5237
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 1732537263117202.000000.jpg
- vb.net开发安卓软件的方法
- 江苏省普通高校“专转本”选拔考试专业综合科目考试大纲(试行)
- C语言实现基于华为LiteOS的智慧楼宇消防系统源码+电路图+全部资料
- 基于CMLM的语义一致性数据增强方法python实现源码(提高神经机器翻译的性能、IWSLT14 DE-EN数据集验证).zip
- 静态网站首页制作,纯手工,没有使用框架
- 机器学习大作业-Python实现基于线性回归的PM2.5预测项目源码(高分期末大作业)
- 基于java开发的绿色出行的个人碳排放积分系统+源码(毕业设计&课程设计&项目开发)
- 数据结构--实验报告2.docx
- 基于python的开源文本到语音转换项目+小白使用教程(支持批量英语、中文、多情感语音合成,web界面).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功