package dev.spring.mvc.base;
import java.io.Serializable;
import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.persistence.Id;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Example;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import dev.spring.mvc.common.enums.EOrderMode;
import dev.spring.mvc.common.util.HqlUtils;
import dev.spring.mvc.common.util.QueryBuilderUtils;
import dev.spring.mvc.entity.vo.Pager;
import dev.spring.mvc.entity.vo.QueryBuilder;
@Transactional
public class BaseDao<T extends Serializable> {
@Resource
protected SessionFactory sessionFactory;
// 当前泛型类
@SuppressWarnings("rawtypes")
private Class entityClass = null;
// 当前主键名称
private String pkname = null;
private String HQL_LIST_ALL = null;
private String HQL_COUNT_ALL = null;
private Logger log = Logger.getLogger(BaseDao.class);
@SuppressWarnings("rawtypes")
public Class getEntityClass() {
return entityClass;
}
@SuppressWarnings("rawtypes")
public void setEntityClass(Class entityClass) {
this.entityClass = entityClass;
}
public BaseDao() {
init();
}
@SuppressWarnings("rawtypes")
private void init() {
try {
// 获取当前泛型类
Type type = this.getClass().getGenericSuperclass();
if (type.toString().indexOf("BaseDao") != -1) {
ParameterizedType type1 = (ParameterizedType) type;
Type[] types = type1.getActualTypeArguments();
setEntityClass((Class) types[0]);
} else {
type = ((Class) type).getGenericSuperclass();
ParameterizedType type1 = (ParameterizedType) type;
Type[] types = type1.getActualTypeArguments();
setEntityClass((Class) types[0]);
}
getPkname();
HQL_LIST_ALL = "from " + this.entityClass.getSimpleName()
+ " order by " + pkname + " asc";
HQL_COUNT_ALL = "select count(*) from "
+ this.entityClass.getSimpleName();
} catch (Exception er) {
log.error("", er);
}
}
/**
* 获取主键名称
*
* @return
*/
public String getPkname() throws Exception {
Field[] fields = this.entityClass.getDeclaredFields();// 反射类字段
for (Field field : fields) {
if (field.isAnnotationPresent(Id.class)) {
this.pkname = field.getName();
break;
}
}
return pkname;
}
/**
* 保存实例
*
* @param t
* @throws HibernateException
*/
@Transactional(propagation = Propagation.REQUIRED)
public Serializable save(T t) throws Exception {
if (t != null)
return sessionFactory.getCurrentSession().save(t);
return null;
}
/**
* 修改实例
*
* @param t
* @throws HibernateException
*/
@Transactional(propagation = Propagation.REQUIRED)
public boolean update(T t) throws Exception {
if (t != null) {
sessionFactory.getCurrentSession().update(t);
return true;
}
return false;
}
/**
* 删除实例
*
* @param t
* @throws HibernateException
*/
@Transactional(propagation = Propagation.REQUIRED)
public boolean delete(T t) throws Exception {
if (t != null) {
sessionFactory.getCurrentSession().delete(t);
return true;
}
return false;
}
/**
* 根据主键ID,删除实例
*
* @param id
* @return
* @throws Exception
*/
@Transactional(propagation = Propagation.REQUIRED)
public boolean deleteById(Serializable id) throws Exception {
T t = this.find(id);
if (t != null) {
return this.delete(t);
}
return false;
}
/**
* 获取实例
*
* @param id
* @throws HibernateException
*/
@Transactional(propagation = Propagation.REQUIRED)
@SuppressWarnings("unchecked")
public T find(Serializable id) throws Exception {
if (id != null) {
return (T) sessionFactory.getCurrentSession().get(getEntityClass(),
id);
}
return null;
}
/**
* 查询全部
*
* @throws HibernateException
*/
@SuppressWarnings("unchecked")
@Transactional(propagation = Propagation.REQUIRED)
public List<T> findAll() throws Exception {
Query query = sessionFactory.getCurrentSession().createQuery(
HQL_LIST_ALL);
if (query != null)
return query.list();
return null;
}
/**
* 查询总数
*
* @throws HibernateException
*/
@Transactional(propagation = Propagation.REQUIRED)
public Integer findTotalRow() throws Exception {
Query query = sessionFactory.getCurrentSession().createQuery(
HQL_COUNT_ALL);
if (query != null) {
List<?> list = query.list();
if (list != null && !list.isEmpty()) {
return ((Integer) list.get(0)).intValue();
}
}
return null;
}
/**
* 按条件查询总记录数
*
* @param countHql
* @param map
* @return
* @throws Exception
*/
@Transactional(propagation = Propagation.REQUIRED)
public Long findTotalRow(String countHql, final Object... objects)
throws Exception {
if (StringUtils.isNotBlank(countHql)) {
Query query = sessionFactory.getCurrentSession().createQuery(
countHql);
if (query != null) {
if (objects != null) {
for (int i = 0; i < objects.length; i++) {
query.setParameter(i, objects[i]);
}
}
return (Long) query.list().get(0);
}
}
return null;
}
/**
* 按条件查询总记录数
*
* @param countHql
* @param params
* @return
* @throws Exception
*/
@Transactional(propagation = Propagation.REQUIRED)
public Long findTotalRow(String countHql, final Map<String, Object> params)
throws Exception {
if (StringUtils.isNotBlank(countHql)) {
Query query = sessionFactory.getCurrentSession().createQuery(
countHql);
if (query != null) {
if (params != null && params.keySet() != null) {
for (String colName : params.keySet()) {
query.setParameter(colName, params.get(colName));
}
}
return (Long) query.list().get(0);
}
}
return null;
}
/**
* QBC查询
*
* @param criteria
* @throws HibernateException
*/
@SuppressWarnings("unchecked")
@Transactional(propagation = Propagation.REQUIRED)
public List<T> findByCriteria(Criteria criteria) throws Exception {
if (criteria != null) {
Criteria ct = sessionFactory.getCurrentSession().createCriteria(
getEntityClass());
return ct.list();
}
return null;
}
/**
* QBE查询
*
* @param t
* @throws HibernateException
*/
@SuppressWarnings("unchecked")
@Transactional(propagation = Propagation.REQUIRED)
public List<T> findByExample(T t) throws Exception {
if (t != null) {
Example example = Example.create(t);
Criteria criteria = sessionFactory.getCurrentSession()
.createCriteria(getEntityClass());
criteria.add(example);
return criteria.list();
}
return null;
}
/**
* HQL查询
*
* @param hql
* @param objects
* @throws HibernateException
*/
@SuppressWarnings("unchecked")
@Transactional(propagation = Propagation.REQUIRED)
public List<T> findByHql(String hql, final Object... objects)
throws Exception {
if (StringUtils.isNotBlank(hql)) {
Query query = sessionFactory.getCurrentSession().createQuery(hql);
if (query != null) {
for (int i = 0; i < objects.length; i++) {
query.setParameter(i, objects[i]);
}
return (List<T>) query.list();
}
}
return null;
}
/**
* SQL查询
*
* @param hql
* @param objects
* @throws HibernateException
*/
@SuppressWarnings("unchecked")
@Transactional(pro
没有合适的资源?快使用搜索试试~ 我知道了~
SpringMVC开发框架+示例源码+lib包
共94个文件
jar:46个
class:15个
java:15个
3星 · 超过75%的资源 需积分: 12 76 下载量 140 浏览量
2015-03-09
15:11:38
上传
评论
收藏 17.46MB 7Z 举报
温馨提示
SpringMVC开发框架,集成Spring4.1.5 + hibernate 4.3.8版本jar包,采用注解方式,restful风格构建而成。其中以Mysql数据库为例,演示如何实现数据库操作以及事务管理。(本框架仅供学习参考之用,所需要的jar包都已齐全,请放心使用)
资源推荐
资源详情
资源评论
收起资源包目录
SpringMVCDemo.7z (94个子文件)
bin
src
test
dev
spring
mvc
web
auth
LoginControllerTest.java 2KB
rest
RestfulTest.java 2KB
main
resources
content
Language_en_US.properties 0B
Language_zh_CN.properties 0B
hibernate
hibernate.properties 372B
proxool.properties 659B
spring
springMVC-servlet.xml 2KB
applicationContext.xml 4KB
log4j
log4j.properties 1004B
dev
spring
mvc
dao
org
UserDao.java 241B
base
BaseDao.java 14KB
common
enums
EAndOR.java 237B
EMatchMode.java 860B
EOrderMode.java 319B
util
QueryBuilderUtils.java 5KB
HqlUtils.java 2KB
service
org
IUserService.java 718B
impl
UserServiceImpl.java 2KB
entity
po
User.java 3KB
vo
Pager.java 506B
Query.java 1KB
QueryBuilder.java 1KB
.project 884B
WebRoot
WEB-INF
web.xml 3KB
classes
resources
content
Language_en_US.properties 0B
Language_zh_CN.properties 0B
hibernate
hibernate.properties 370B
proxool.properties 659B
spring
springMVC-servlet.xml 2KB
applicationContext.xml 4KB
log4j
log4j.properties 1004B
dev
spring
mvc
dao
org
UserDao.class 497B
base
BaseDao.class 13KB
common
enums
EAndOR.class 1KB
EOrderMode.class 1KB
EMatchMode.class 2KB
util
QueryBuilderUtils.class 6KB
HqlUtils.class 2KB
web
auth
LoginControllerTest.class 4KB
rest
RestfulTest.class 3KB
service
org
IUserService.class 465B
impl
UserServiceImpl.class 3KB
entity
po
User.class 4KB
vo
Pager.class 1KB
Query.class 2KB
QueryBuilder.class 2KB
lib
spring-beans-4.1.5.RELEASE.jar 692KB
hibernate-jpa-2.1-api-1.0.0.Final.jar 111KB
proxool-0.9.1.jar 196KB
jackson-core-2.5.1.jar 224KB
dom4j-1.6.1.jar 307KB
spring-aspects-4.1.5.RELEASE.jar 55KB
proxool-cglib.jar 327KB
hibernate-core-4.3.8.Final.jar 5.03MB
spring-aop-4.1.5.RELEASE.jar 351KB
spring-web-4.1.5.RELEASE.jar 702KB
antlr-2.7.7.jar 435KB
jackson-databind-2.5.1.jar 1.09MB
commons-lang-2.1.jar 203KB
jackson-annotations-2.5.1.jar 39KB
spring-tx-4.1.5.RELEASE.jar 247KB
spring-jdbc-4.1.5.RELEASE.jar 417KB
slf4j-api-1.6.1.jar 25KB
spring-webmvc-4.1.5.RELEASE.jar 763KB
commons-beanutils-1.8.0.jar 226KB
servlet-api.jar 238KB
jboss-logging-annotations-1.2.0.Beta1.jar 11KB
jandex-1.1.0.Final.jar 75KB
spring-webmvc-portlet-4.1.5.RELEASE.jar 173KB
jboss-logging-3.1.3.GA.jar 56KB
ehcache-core-2.4.3.jar 983KB
javassist-3.18.1-GA.jar 697KB
hibernate-ehcache-4.3.8.Final.jar 132KB
hibernate-proxool-4.3.8.Final.jar 39KB
spring-context-support-4.1.5.RELEASE.jar 174KB
commons-logging-1.1.3.jar 61KB
spring-orm-4.1.5.RELEASE.jar 368KB
spring-context-4.1.5.RELEASE.jar 1002KB
hibernate-commons-annotations-4.0.5.Final.jar 74KB
spring-test-4.1.5.RELEASE.jar 491KB
aopalliance.jar 4KB
commons-codec-1.9.jar 258KB
commons-collections-3.2.jar 558KB
jboss-transaction-api_1.2_spec-1.0.0.Final.jar 27KB
spring-expression-4.1.5.RELEASE.jar 253KB
commons-fileupload-1.3.jar 67KB
spring-jms-4.1.5.RELEASE.jar 263KB
mysql-connector-java-5.1.9.jar 707KB
commons-io-2.2.jar 170KB
log4j-1.2.17.jar 478KB
commons-lang3-3.1.jar 308KB
spring-core-4.1.5.RELEASE.jar 985KB
jsp
test.jsp 353B
.classpath 445B
共 94 条
- 1
资源评论
- zhangfuxiang19902016-05-26资源缺少很多构件,login.jsp等,不能使用
- wubangjie8882015-11-29东西挺不错的,但是有点不全。还是非常感谢
- qq_238609352015-10-08非常不错的资源,感谢整理
- 猛_牛2015-10-29启蒙的福音,特别好
- kpppkk2015-07-19资源缺少很多构件,login.jsp等,不能使用
darkmasky
- 粉丝: 3
- 资源: 34
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 计科11班未参与实习认知名单.xlsx
- Java 使用回溯法解决01背包问题(含算法原理和代码)
- 毕业答辩模板2016超值实用黑板风毕业论文答辩模版
- 大学生创新创业的心得.doc
- MMDF3N06HDR2G-VB一款SOP8封装2个N-Channel场效应MOS管
- 毕业答辩模板2016超值实用黑板风毕业论文答辩模版(赠手绘图表)
- 毕业答辩模板(中文版式)黑白风毕业论文答辩通用PPT模板B-14
- MMDF3N04HDR2G-VB一款SOP8封装2个N-Channel场效应MOS管
- MMDF3301-VB一款SOP8封装2个P-Channel场效应MOS管
- 毕业答辩模板(医药专业)红色医药论文答辩模板
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功