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
没有合适的资源?快使用搜索试试~ 我知道了~
MF00301-Java企业人事人力资源管理源码.zip
共1362个文件
gif:726个
class:133个
java:129个
需积分: 5 0 下载量 99 浏览量
2023-09-18
15:29:51
上传
评论
收藏 33.62MB ZIP 举报
温馨提示
MF00301-Java企业人事人力资源管理源码
资源推荐
资源详情
资源评论
收起资源包目录
MF00301-Java企业人事人力资源管理源码.zip (1362个子文件)
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
共 1362 条
- 1
- 2
- 3
- 4
- 5
- 6
- 14
资源评论
jane9872
- 粉丝: 95
- 资源: 7751
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- vgg模型-图像分类算法对水果识别-不含数据集图片-含逐行注释和说明文档.zip
- KMP算法(Knuth-Morris-Pratt算法
- vgg模型-python语言pytorch框架训练识别化妆品分类-不含数据集图片-含逐行注释和说明文档.zip
- KMP算法(Knuth-Morris-Pratt算法
- shufflenet模型-基于人工智能的卷积网络训练识别狗的表情-不含数据集图片-含逐行注释和说明文档.zip
- shufflenet模型-python语言pytorch框架训练识别张嘴闭嘴-不含数据集图片-含逐行注释和说明文档.zip
- resnet模型-基于人工智能的卷积网络训练识别面部表情识别-不含数据集图片-含逐行注释和说明文档
- resnet模型-python语言pytorch框架训练识别香蕉品质-不含数据集图片-含逐行注释和说明文档.zip
- KMP算法(Knuth-Morris-Pratt算法
- mobilenet模型-python训练识别塑料制品分类-不含数据集图片-含逐行注释和说明文档.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功