package com.zkq.lvse.common.dao.impl;
import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.hibernate.metadata.ClassMetadata;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import com.zkq.lvse.common.dao.SimpleDao;
import com.zkq.lvse.common.utils.ReflectionUtils;
/**
*
* @author zkq
*
* @param <T>
* @param <PK>
*/
@SuppressWarnings("unchecked")
@Repository
public class SimpleDaoImpl<T,PK extends Serializable> implements SimpleDao<T, PK> {
protected SessionFactory sessionFactory;
protected Class<T> entityClass;
public SimpleDaoImpl(){
this.entityClass=ReflectionUtils.getSuperClass(getClass());
}
public SimpleDaoImpl(final SessionFactory sessionFactory,final Class<T> entityClass){
this.sessionFactory=sessionFactory;
this.entityClass=entityClass;
}
public SessionFactory getSessionFactory() {
return sessionFactory;
}
@Autowired
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
public Session getSession(){
return sessionFactory.getCurrentSession();
}
/**
* 根据SQL创建SQLQuery对象
* @param hql
* @param values 数量可变参数,按顺序绑定
* @return
*/
public SQLQuery createSqlQuery(String sql, Object... values) {
SQLQuery q=getSession().createSQLQuery(sql);
if(values!=null){
for(int i=0;i<values.length;i++){
q.setParameter(i, values[i]);
}
}
return q;
}
/**
* 根据SQL创建SQLQuery对象
* @param hql
* @param values 数量可变参数,按名称绑定
* @return
*/
public SQLQuery createSqlQuery(String sql, Map<String, ?> values) {
SQLQuery q=getSession().createSQLQuery(sql);
if(values!=null){
q.setProperties(values);
}
return q;
}
/**
* 根据HQL和查询参数列表创建Query
* @param hql
* @param values 数量可变参数,按顺序绑定
* @return
*/
public Query createQuery(String hql,Object... values){
Query query=getSession().createQuery(hql);
if(values!=null){
for(int i=0;i<values.length;i++){
query.setParameter(i, values[i]);
}
}
return query;
}
/**
* 根据HQL和查询参数列表创建Query
* @param hql
* @param values 数量可变参数,按名称绑定
* @return
*/
public Query createQuery(String hql, Map<String, ?> values) {
Query query=getSession().createQuery(hql);
if(values!=null){
query.setProperties(values);
}
return query;
}
/**
* 执行HQL进行批量修改/删除
* @param hql
* @param values 数量可变参数,按顺序绑定
*/
public int delAll(String hql, Object... values) {
return createQuery(hql, values).executeUpdate();
}
/**
* 执行HQL进行批量修改/删除
* @param hql
* @param values 数量可变参数,按名称绑定
*/
public int delAll(String hql, Map<String, ?> values) {
return createQuery(hql, values).executeUpdate();
}
/**
* 根据id删除一条数据
* @param id
*/
public void delete(PK id) {
getSession().delete(get(id));
}
/**
* 根据实体类删除一条数据
* @param entity
*/
public void delete(T entity) {
getSession().delete(entity);
}
/**
* 根据Id查询实体对象
* @param id
* @return
*/
public T get(PK id) {
return (T)getSession().get(entityClass,id);
}
/**
* 添加数据
* @param entity
*/
public void save(T entity) {
getSession().save(entity);
}
/**
* 添加或修改数据
* @param entity
*/
public void saveOrUpdate(T entity) {
getSession().saveOrUpdate(entity);
}
/**
* 修改数据
* @param entity
*/
public void update(T entity) {
getSession().update(entity);
}
/**
* 查询对象列表
* @param hql
* @param values 数量可变参数,按顺序绑定
* @return
*/
public List<T> find(String hql, Object... values) {
return createQuery(hql, values).list();
}
/**
* 查询对象列表
* @param hql
* @param values 数量可变参数,按名称绑定
* @return
*/
public List<T> find(String hql, Map<String, ?> values) {
return createQuery(hql, values).list();
}
/**
* 根据Id列表获取对象列表
* @param ids
* @return
*/
public List<T> find(Collection<PK> ids) {
return find(Restrictions.in(getIdName(), ids));
}
/**
* 根据Criteria查询对象列表
* @param criteria
* @return
*/
public List<T> find(Criterion... criterions) {
return createCriteria(criterions).list();
}
/**
* 根据criterion创建Criteria对象
* @param criterions
* @return
*/
public Criteria createCriteria(final Criterion... criterions){
Criteria criteria=getSession().createCriteria(entityClass);
for(Criterion c:criterions){
criteria.add(c);
}
return criteria;
}
/**
* 根据criterion创建Criteria对象并排序
* @param criterions
* @return
*/
public Criteria createCriteria(final String order,final Criterion... criterions){
Criteria criteria=getSession().createCriteria(entityClass);
for(Criterion c:criterions){
criteria.add(c);
}
criteria.addOrder(Order.desc(order));
return criteria;
}
/**
* 取得对象的主键名
*/
public String getIdName(){
ClassMetadata meta=getSessionFactory().getClassMetadata(entityClass);
return meta.getIdentifierPropertyName();
}
/**
* 根据Id列表获取对象列表并排序
* @param ids
* @return
*/
public List<T> find(String order, Collection<PK> ids) {
return find(order,Restrictions.in(getIdName(), ids));
}
/**
* 根据Criteria查询对象列表并排序
* @param criteria
* @return
*/
public List<T> find(String order, Criterion criterions) {
return createCriteria(order, criterions).list();
}
/**
* 根据属性查找对象列表
* @param propertyName
* @param value
* @return
*/
public List<T> findBy(String propertyName, Object value) {
Criterion c=Restrictions.eq(propertyName, value);
return createCriteria(c).list();
}
/**
* 根据属性查找唯一对象
* @param propertyName
* @param value
* @return
*/
public T findUnique(String propertyName, Object value) {
Criterion c=Restrictions.eq(propertyName, value);
return findUnique(c);
}
/**
* 根据Criterion查找唯一对象
* @param propertyName
* @param value
* @return
*/
public T findUnique(Criterion... criterions) {
return (T) createCriteria(criterions).uniqueResult();
}
public List<T> findAll(String sql, Class<T> entity) {
SQLQuery c=createSqlQuery(sql).addEntity(entity);
return c.list();
}
public List<T> getAll() {
return find();
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
最新版SSH整合(Spring3.2+Struts2.3.12+Hibernate4.2)学习最新版SSH整合(Spring3.2+Struts2.3.12+Hibernate4.2)学习最新版SSH整合(Spring3.2+Struts2.3.12+Hibernate4.2)学习最新版SSH整合(Spring3.2+Struts2.3.12+Hibernate4.2)学习
资源推荐
资源详情
资源评论
收起资源包目录
idmax-lvse-master.zip (85个子文件)
lvse
.gitignore 27B
.project 1KB
.mymetadata 278B
WebRoot
css
boot.css 3KB
theme.css 22KB
WEB-INF
web.xml 2KB
lib
spring-beans-3.2.2.RELEASE.jar 593KB
xwork-core-2.3.12.jar 617KB
spring-instrument-tomcat-3.2.2.RELEASE.jar 10KB
commons-lang3-3.1.jar 308KB
spring-jms-3.2.2.RELEASE.jar 200KB
spring-web-3.2.2.RELEASE.jar 612KB
hibernate-jpa-2.0-api-1.0.1.Final.jar 100KB
ognl-3.0.6.jar 223KB
spring-core-3.2.2.RELEASE.jar 846KB
c3p0-0.9.1.jar 594KB
spring-jdbc-3.2.2.RELEASE.jar 396KB
commons-io-2.0.1.jar 156KB
commons-pool-1.6.jar 109KB
jta-1.1.jar 15KB
spring-oxm-3.2.2.RELEASE.jar 72KB
freemarker-2.3.19.jar 909KB
spring-webmvc-portlet-3.2.2.RELEASE.jar 184KB
commons-fileupload-1.2.2.jar 58KB
spring-webmvc-3.2.2.RELEASE.jar 621KB
spring-test-3.2.2.RELEASE.jar 445KB
spring-instrument-3.2.2.RELEASE.jar 7KB
spring-aop-3.2.2.RELEASE.jar 328KB
commons-logging-api-1.1.jar 44KB
hibernate-entitymanager-4.2.0.Final.jar 470KB
spring-tx-3.2.2.RELEASE.jar 236KB
hibernate-core-4.2.0.Final.jar 4.39MB
antlr-2.7.7.jar 435KB
spring-context-support-3.2.2.RELEASE.jar 125KB
spring-struts-3.2.2.RELEASE.jar 35KB
javassist-3.15.0-GA.jar 633KB
spring-aspects-3.2.2.RELEASE.jar 50KB
dom4j-1.6.1.jar 307KB
struts2-spring-plugin-2.3.12.jar 21KB
spring-expression-3.2.2.RELEASE.jar 191KB
commons-dbcp-1.4.jar 157KB
jboss-logging-3.1.1.GA.jar 59KB
hibernate-commons-annotations-4.0.1.Final.jar 79KB
mysql-connector-java-5.0.8-bin.jar 528KB
spring-context-3.2.2.RELEASE.jar 842KB
struts2-core-2.3.12.jar 778KB
aopalliance-1.0.jar 4KB
commons-logging-1.1.1.jar 59KB
spring-orm-3.2.2.RELEASE.jar 378KB
index.jsp 111B
META-INF
MANIFEST.MF 36B
images
black.png 83KB
top.png 716B
jsp
public
_top.jsp 677B
_meta.jsp 457B
_left.jsp 3KB
_common.jsp 112B
main.jsp 4KB
plugin
bootstrap
css
bootstrap.min.css 104KB
bootstrap-responsive.css 22KB
bootstrap-responsive.min.css 16KB
bootstrap.css 124KB
img
glyphicons-halflings.png 12KB
glyphicons-halflings-white.png 9KB
js
bootstrap.js 61KB
bootstrap.min.js 28KB
jquery-1.10.1.min.js 91KB
src
main
resources
spring
applicationContext_1.xml 3KB
applicationContext.xml 3KB
config
application.properties 303B
struts.xml 629B
java
com
zkq
lvse
web
dao
UserDao.java 170B
impl
UserDaoImpl.java 306B
action
UserAction.java 2KB
service
UserService.java 329B
impl
UserServiceImpl.java 833B
entity
User.java 1KB
common
utils
Page.java 1024B
ReflectionUtils.java 827B
dao
impl
SimpleDaoImpl.java 7KB
BaseDaoImpl.java 6KB
BaseDao.java 2KB
SimpleDao.java 4KB
README 71B
.classpath 4KB
共 85 条
- 1
资源评论
- slwenyi2017-04-25项目间歇期,学习一下,还不错
- 元智科创(点子工作室)2017-04-30报错怎么解决
- jswxstw2017-04-24很值得学习
LY文库
- 粉丝: 157
- 资源: 38
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Django和OpenCV的智能车视频处理系统.zip
- (源码)基于ESP8266的WebDAV服务器与3D打印机管理系统.zip
- (源码)基于Nio实现的Mycat 2.0数据库代理系统.zip
- (源码)基于Java的高校学生就业管理系统.zip
- (源码)基于Spring Boot框架的博客系统.zip
- (源码)基于Spring Boot框架的博客管理系统.zip
- (源码)基于ESP8266和Blynk的IR设备控制系统.zip
- (源码)基于Java和JSP的校园论坛系统.zip
- (源码)基于ROS Kinetic框架的AGV激光雷达导航与SLAM系统.zip
- (源码)基于PythonDjango框架的资产管理系统.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功