package org.shiro.demo.dao.impl;
import java.util.ArrayList;
import java.util.List;
import java.util.Iterator;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import org.shiro.demo.dao.IBaseDao;
import org.shiro.demo.dao.util.Pagination;
import org.shiro.demo.dao.util.QueryCondition;
import org.springframework.stereotype.Repository;
@SuppressWarnings("unchecked")
@Repository("baseDao")
public class DefultBaseDao implements IBaseDao {
@PersistenceContext
protected EntityManager em;
public <T> void delete(Class<T> clazz, Object id) {
T entity = em.find(clazz, id);
em.remove(entity);
}
public <T> void delete(Class<T> clazz, Object[] ids) {
T entity = null;
for (Object id : ids) {
entity = em.find(clazz, id);
em.remove(entity);
}
}
public <T> List<T> getAll(Class<T> clazz) {
String className = clazz.getSimpleName();
StringBuffer jpql = new StringBuffer("select o from ");
jpql.append(className).append(" o ");
return em.createQuery(jpql.toString()).getResultList();
}
public <T> T getById(Class<T> clazz, Object id) {
return em.find(clazz, id);
}
public <T> List<T> getByIds(Class<T> clazz, Object[] ids){
List<T> list = new ArrayList<T>();
for(Object id : ids){
list.add(getById(clazz, id));
}
return list;
}
public void save(Object entity) {
em.persist(entity);
}
public <T> void batchSave(List<T> entitys){
for(T entity : entitys){
em.persist(entity);
}
}
public void update(Object entity) {
em.merge(entity);
}
public <T> List<T> get(Class<T> clazz,
List<QueryCondition> queryConditions, String orderBy,
int currentPage, int pageSize) {
Query query = getQuery(clazz, queryConditions, orderBy, false);
if (currentPage == 0 && pageSize == 0) {
return query.getResultList();
} else {
return query.setFirstResult((currentPage - 1) * pageSize)
.setMaxResults(pageSize).getResultList();
}
}
/**
* 根据查询条件获取Query
*
* @param clazz
* @param queryConditions
* @param orderBy
* @param isQueryTotal
* 是否查询记录总数, true 则查询记录总数
* @return
*/
private Query getQuery(Class clazz, List<QueryCondition> queryConditions,
String orderBy, boolean isQueryTotal) {
String className = clazz.getSimpleName();
String preJPQL = isQueryTotal ? "select count(*) from "
: "select o from ";
StringBuffer jpql = new StringBuffer(preJPQL);
jpql.append(className).append(" o where 1=1 ");
Query query = null;
if (queryConditions != null && queryConditions.size() > 0) {
// 构造jpql语句
Iterator<QueryCondition> iterator = queryConditions.iterator();
while (iterator.hasNext()) {
QueryCondition queryCondition = iterator.next();
if (queryCondition != null) {
if (queryCondition.getOperator().equals(
QueryCondition.CUSTOM)) {
jpql.append(" and (").append(
queryCondition.getCustomJPQL()).append(")");
}
if (queryCondition.getValue() != null
&& !"".equals(queryCondition.getValue())) {
// 如果占位符名称是*.*格式,则换成*_*格式。且:和名称之间不能有空格
String placeholder = queryCondition.getField().indexOf(
".") != -1 ? queryCondition.getField().replace(
".", "_") : queryCondition.getField();
jpql.append(" and o.").append(
queryCondition.getField().trim()).append(" ")
.append(queryCondition.getOperator()).append(
":").append(placeholder.trim());
}
}
}
}
if (orderBy != null && !"".equals(orderBy)) {
jpql.append(" ").append(orderBy);
}
query = em.createQuery(jpql.toString());
if (queryConditions != null && queryConditions.size() > 0) {
// 为参数赋值
Iterator<QueryCondition> iterator2 = queryConditions.iterator();
while (iterator2.hasNext()) {
QueryCondition queryCondition = iterator2.next();
if (queryCondition != null) {
if (queryCondition.getValue() != null
&& !"".equals(queryCondition.getValue())) {
// 将占位符中的.替换成_
queryCondition.setField(queryCondition.getField()
.indexOf(".") != -1 ? queryCondition.getField()
.replace(".", "_") : queryCondition.getField());
if (queryCondition.getOperator().equals(
QueryCondition.LK)) {
query.setParameter(queryCondition.getField(), "%"
+ queryCondition.getValue() + "%");
} else {
query.setParameter(queryCondition.getField(),
queryCondition.getValue());
}
}
}
}
}
return query;
}
public <T> List<T> get(Class<T> clazz, List<QueryCondition> queryConditions) {
return get(clazz, queryConditions, null, 0, 0);
}
public <T> List<T> get(Class<T> clazz,
List<QueryCondition> queryConditions, String orderBy) {
return get(clazz, queryConditions, orderBy, 0, 0);
}
public Object getSingleResult(Class clazz,
List<QueryCondition> queryConditions) {
Query query = getQuery(clazz, queryConditions, null, false);
try {
return query.getSingleResult();
} catch (NoResultException e) {
return null;
}
}
public long getRecordCount(Class clazz, List<QueryCondition> queryConditions) {
Query query = getQuery(clazz, queryConditions, null, true);
Object result;
try {
result = query.getSingleResult();
} catch (NoResultException e) {
result = null;
}
long recordCount = 0L;
if (result != null) {
recordCount = ((Long) result).longValue();
}
return recordCount;
}
public <T> List<T> getByJpql(String jpql, Object... objects) {
Query query = em.createQuery(jpql);
if (objects != null) {
if (objects != null) {
for (int i = 0; i < objects.length; i++) {
query.setParameter(i + 1, objects[i]);
}
}
}
return query.getResultList();
}
public Query createQuery(String jpql, Object... objects) {
Query query =em.createQuery(jpql);
if (objects != null ) {
for ( int i = 0 ; i < objects.length; i++) {
query.setParameter(i+1, objects[i]);
}
}
return query;
}
public <T>List<T> pageQuery(int currentPage, int pageSize,String jpql,Object... objects){
@SuppressWarnings("unused")
List<Object> list = null;
Query query = this.createQuery(jpql, objects);
if (currentPage == 0 && pageSize == 0) {
return query.getResultList();
} else {
return query.setFirstResult((currentPage - 1) * pageSize)
.setMaxResults(pageSize).getResultList();
}
}
public int executeJpql(String jpql, Object... objects) {
Query query = em.createQuery(jpql);
if (objects != null) {
for (int i = 0; i < objects.length; i++) {
query.setParameter(i + 1, objects[i]);
}
}
return query.executeUpdate();
}
public <T> Pagination<T> getPagination(Class<T> clazz,
List<QueryCondition> queryConditions, String orderBy,
int currentPage, int pageSize) {
List<T> recordList = get(clazz, queryConditions, orderBy, currentPage,
pageSize);
long recordCount = getRecordCount(clazz, queryConditions);
return new Pagination(currentPage, pageSize, recordCount, recordList);
}
public Object getUniqueResultByJpql(String jpql, Object... objects) {
Query query = em.createQuery(jpql);
if (objects != null) {
for (int i = 0; i < objects.length; i++) {
query.setParameter(i + 1, objects[i]);
}
}
try {
return query.getSingleResult();
} catch (NoResultException e) {
// 如果查询出结果为null,JPA默认会抛NoResultException异常,我们让它返回null
return null;
}
}
public int executeBySQL(String s
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
shiro+springmvc整合demo (116个子文件)
DefultBaseDao.class 10KB
DefultBaseService.class 6KB
ValidateCode.class 4KB
LoginController.class 4KB
Pagination.class 4KB
testInitSystemData.class 3KB
ShiroDbRealm.class 3KB
Permission.class 3KB
IBaseService.class 3KB
IBaseDao.class 3KB
Role.class 3KB
User.class 3KB
QueryCondition.class 2KB
UserServiceImpl.class 1KB
CustomDateSerializer.class 1KB
UserController.class 1KB
IUserService.class 298B
.classpath 6KB
hibernate-core-4.1.8.Final.jar 4.29MB
guava-12.0.1.jar 1.71MB
aspectjweaver.jar 1.47MB
ehcache-core-2.6.2.jar 1.28MB
ant.jar 1.26MB
org.springframework.context-3.1.1.RELEASE.jar 812KB
jackson-mapper-asl-1.9.2.jar 748KB
mysql-connector-java-5.1.6-bin.jar 687KB
javassist-3.15.0-GA.jar 633KB
org.springframework.beans-3.1.1.RELEASE.jar 576KB
org.springframework.web.servlet-3.1.1.RELEASE.jar 560KB
commons-collections.jar 558KB
org.springframework.web-3.1.1.RELEASE.jar 532KB
shiro-all-1.2.0.jar 521KB
log4j-1.2.16.jar 470KB
hibernate-entitymanager-4.1.8.Final.jar 467KB
sqljdbc4.jar 455KB
org.springframework.core-3.1.1.RELEASE.jar 439KB
antlr-2.7.7.jar 435KB
org.springframework.jdbc-3.1.1.RELEASE.jar 395KB
org.springframework.orm-3.1.1.RELEASE.jar 370KB
org.springframework.aop-3.1.1.RELEASE.jar 324KB
cglib-nodep-2.1_3.jar 317KB
dom4j-1.6.1.jar 307KB
jtds-1.2.jar 279KB
commons-lang-2.5.jar 273KB
avro-1.5.1.jar 254KB
org.springframework.transaction-3.1.1.RELEASE.jar 241KB
junit-4.8.1.jar 231KB
org.springframework.test-3.1.1.RELEASE.jar 224KB
jackson-core-asl-1.9.2.jar 223KB
org.springframework.jms-3.1.1.RELEASE.jar 195KB
org.springframework.web.portlet-3.1.1.RELEASE.jar 186KB
commons-beanutils.jar 184KB
org.springframework.expression-3.1.1.RELEASE.jar 172KB
json-lib-2.3-jdk15.jar 148KB
json-lib-2.1.jar 122KB
commons-dbcp-1.2.2.jar 119KB
bonecp-0.7.1.RELEASE.jar 113KB
org.springframework.context.support-3.1.1.RELEASE.jar 105KB
hibernate-jpa-2.0-api-1.0.1.Final.jar 100KB
ezmorph-1.0.4.jar 84KB
commons-io.jar 82KB
hibernate-commons-annotations-4.0.1.Final.jar 79KB
org.springframework.oxm-3.1.1.RELEASE.jar 71KB
jakarta-oro.jar 64KB
commons-pool-1.3.jar 61KB
jboss-logging-3.1.0.GA.jar 59KB
commons-fileupload-1.2.1.jar 56KB
org.springframework.asm-3.1.1.RELEASE.jar 52KB
commons-logging-1.1.jar 52KB
org.springframework.aspects-3.1.1.RELEASE.jar 49KB
slf4j-api-1.6.1.jar 25KB
jstl.jar 20KB
org.springframework.instrument.tomcat-3.1.1.RELEASE.jar 11KB
jboss-transaction-api_1.1_spec-1.0.0.Final.jar 11KB
slf4j-log4j12-1.5.8.jar 9KB
org.springframework.instrument-3.1.1.RELEASE.jar 7KB
bonecp-provider-0.7.1-rc2.jar 5KB
slf4j-nop-1.6.1.jar 5KB
aopalliance.jar 4KB
bonecp-spring-0.7.1-rc1.jar 3KB
DefultBaseDao.java 8KB
ValidateCode.java 7KB
IBaseDao.java 5KB
IBaseService.java 5KB
Pagination.java 4KB
DefultBaseService.java 3KB
testInitSystemData.java 3KB
ShiroDbRealm.java 2KB
LoginController.java 2KB
Permission.java 2KB
User.java 2KB
Role.java 2KB
QueryCondition.java 2KB
UserServiceImpl.java 884B
UserController.java 807B
CustomDateSerializer.java 711B
IUserService.java 216B
jquery-1.6.3.min.js 89KB
login.jsp 1KB
register.jsp 896B
共 116 条
- 1
- 2
projack_lin
- 粉丝: 4
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
- 6
前往页