package com.tgb.service.base.impl;
import java.io.Serializable;
import java.util.LinkedHashMap;
import java.util.Map;
import javax.annotation.Resource;
import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.hibernate.persister.entity.AbstractEntityPersister;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import com.tgb.service.base.HibernateService;
import com.tgb.utils.QueryResult;
import com.tgb.utils.ReflectManager;
@SuppressWarnings({"unchecked","hiding"})
public abstract class HibernateServiceImpl<T,PK extends Serializable> implements HibernateService<T,PK> {
private LinkedHashMap<String,Object> temp=new LinkedHashMap<String,Object>();
@Transactional(propagation=Propagation.REQUIRED)
public <T extends Serializable> PK save(T entity) {
PK pk=null;
pk=(PK)sessionFactory.getCurrentSession().save(entity);
return pk;
}
@Transactional(propagation=Propagation.REQUIRED)
public <T extends Serializable> void update(T entity) {
// sessionFactory.getCurrentSession().update(entity);
sessionFactory.getCurrentSession().saveOrUpdate(entity);
}
private <T extends Serializable> String getUpdateStr(LinkedHashMap<String,T> update)
{
StringBuilder updateStr=new StringBuilder();
int i=1;
for(Map.Entry<String,T> entry:update.entrySet())
{
updateStr.append(entry.getKey()).append("=").append(":u").append(i).append(",");
this.temp.put("u"+i, entry.getValue());
i++;
}
updateStr.deleteCharAt(updateStr.length()-1);
return updateStr.toString();
}
/*
* 设置update的set参数
*
*/
private void setUpdateParameter(Query query)
{
for(Map.Entry<String,Object> entry:this.temp.entrySet())
{
query.setParameter(entry.getKey(),entry.getValue());
}
}
@Transactional(propagation=Propagation.REQUIRED)
public <T extends Serializable> void update(LinkedHashMap<String,T> update)
{
this.update(update,null,null);
}
@Transactional(propagation=Propagation.REQUIRED)
public <T extends Serializable> void update(LinkedHashMap<String,T> update,String where,Object[] parameter)
{
String entityName=t.getName();
//this.sessionFactory.getCurrentSession().createQuery("update "+entityName+" o o.name=:name").setParameter("name","xiaoxiao").executeUpdate();
StringBuilder hql=new StringBuilder();
hql.append("update "+entityName+" as o set "+this.getUpdateStr(update));
if(where!=null&¶meter!=null)
{
hql.append(" ").append(where);
}
System.out.println(hql.toString());
Query query=sessionFactory.getCurrentSession().createQuery(hql.toString());
if(parameter!=null)
{
this.setQueryParameter(query, parameter);
}
if(update!=null)
{
this.setUpdateParameter(query);
}
query.executeUpdate();
}
//删除
@Transactional(propagation=Propagation.REQUIRED)
public <T extends Serializable> void delete(T entity) {
// TODO Auto-generated method stub
sessionFactory.getCurrentSession().delete(entity);
}
@Transactional(propagation=Propagation.REQUIRED)
public void delete(PK... primaryKeyId)
{
for(PK pkId:primaryKeyId)
{
Object entity=sessionFactory.getCurrentSession().get(t,pkId);
sessionFactory.getCurrentSession().delete(entity);
}
}
@Transactional(propagation=Propagation.REQUIRED)
public void delete(String where,Object[] parameter)
{
String entityName=t.getName();
StringBuilder hql=new StringBuilder();
hql.append("delete "+entityName+" as o");
if(where!=null&¶meter!=null)
{
hql.append(" ").append(where);
}
Query query=sessionFactory.getCurrentSession().createQuery(hql.toString());
if(parameter!=null)
{
this.setQueryParameter(query,parameter);
}
query.executeUpdate();
}
//根据ID查找记录
@Transactional(propagation=Propagation.REQUIRED)
public T find(PK primarKeyId) {
// TODO Auto-generated method stub
T findObj=null;
findObj=(T) sessionFactory.getCurrentSession().get(t, primarKeyId);
return findObj;
}
private void setQueryParameter(Query query,Object[] parameter)
{
if(parameter!=null)
{
for(int i=0;i<parameter.length;i++)
{
query.setParameter("p"+(i+1), parameter[i]);
}
}
}
private String getOrderStr(LinkedHashMap<String,String> orderBy)
{
StringBuilder orderStr=new StringBuilder();
/* Iterator<Map.Entry<String, String>> iterator=orderBy.entrySet().iterator();
while(iterator.hasNext())
{
Map.Entry<String,String> entry=iterator.next();
orderStr.append(entry.getKey()).append(" ").append(entry.getValue()).append(",");
}*/
/*
* 鏁版嵁閲忓ぇ鏃朵娇鐢?
for(Map.Entry<String,String> entry:orderBy.entrySet())
{
orderStr.append(entry.getKey()).append(" ").append(entry.getValue()).append(",");
}*/
for(String key:orderBy.keySet())
{
orderStr.append(key).append(" ").append(orderBy.get(key)).append(",");
}
/*
* 鍘绘帀鏈?悗涓?釜閫楀彿
*/
orderStr.deleteCharAt(orderStr.length()-1);
return orderStr.toString();
}
/**
* 查询指定范围、条件的结果集
* firstResult:起始索引
* maxResults:最大记录数
* where:where参数,用法如下:
* String where="where name=:p1 and pwd=:p2"
* 说明:上面的p是固定写法
* parameter:参数,用法如下:
* Object[] obt={"kute","123"}
* orderBy:排序设置,用法如下:
* map.put("age","DESC");
* 说明:以年龄降序排序
*/
@Transactional(propagation=Propagation.REQUIRED)
public <T extends Serializable> QueryResult<T> getScrollData(int firstResult,int maxResults,String where,Object[] parameter,LinkedHashMap<String,String> orderBy)
{
/*
* 获取实体类全名
*/
String entityName=t.getName();
StringBuilder hql=new StringBuilder();
hql.append("select o from "+entityName+" as o");
if(where!=null&¶meter!=null)
{
hql.append(" ").append(where);
}
if(orderBy!=null)
{
hql.append(" order by ").append(this.getOrderStr(orderBy));
}
Query query=null;
if(firstResult!=-1&&maxResults!=-1)
{
query=sessionFactory.getCurrentSession().createQuery(hql.toString()).setFirstResult(firstResult).setMaxResults(maxResults);
}
else
{
query=sessionFactory.getCurrentSession().createQuery(hql.toString());
}
/*
* 设置where参数
*
*/
if(parameter!=null)
{
this.setQueryParameter(query, parameter);
}
QueryResult<T> queryResult = new QueryResult<T>();
queryResult.setResultlist(query.list());
queryResult.setTotalrecord((long)query.list().size());
return queryResult;
}
@Transactional(propagation=Propagation.REQUIRED)
public <T extends Serializable> QueryResult<T> getScrollData(int firstResult,int maxResults,LinkedHashMap<String,String> orderBy)
{
if(orderBy==null)
{
orderBy=new LinkedHashMap<String,String>();
orderBy.put("o."+((AbstractEntityPersister)sessionFactory.getClassMetadata(t)).getIdentifierPropertyName(), "ASC");
}
return this.getScrollData(firstResult, maxResults, null,null,orderBy);
}
@Transactional(propagation=Propagation.REQUIRED)
public <T extends Serializable> QueryResult<T> getScrollData(int firstResult,int maxResults)
{
return this.getScrollData(firstResult, maxResults, null);
}
@Transactional(propagation=Propagation.REQUIRED)
public <T extends Serializable> QueryResult<T> getScrollData(String where,Object[] parameter)
{
return this.getScrollData(-1, -1,where,parameter,null);
}
public <T extends Serializable> QueryResult<T> getScrollData()
{
return this.getScrollData(-1,-1,null,null,null);
}
/*
* 注入SessionFactory
*/
protected SessionFactory sessionFactory;
public Sessi
没有合适的资源?快使用搜索试试~ 我知道了~
springmvc整合spring、hibernate
共76个文件
jar:28个
java:11个
class:11个
5星 · 超过95%的资源 需积分: 13 339 下载量 140 浏览量
2013-06-09
16:21:54
上传
评论 7
收藏 11.67MB RAR 举报
温馨提示
springMVC学了一段时间了,今天把整合Spring和Hibernate的源码共享,写了基础接口和实现类,封装了CRUD操作,还有一些工具类,写了一个小测试,包括用户的浏览,添加,删除等,适合初学SpringMVC的看
资源推荐
资源详情
资源评论
收起资源包目录
SpringMVC3.rar (76个子文件)
SpringMVC3
.settings
org.eclipse.wst.jsdt.ui.superType.name 6B
org.eclipse.wst.common.project.facet.core.xml 252B
org.eclipse.wst.common.component 468B
org.eclipse.wst.jsdt.ui.superType.container 49B
.jsdtscope 500B
org.eclipse.jdt.core.prefs 364B
src
spring-mvc.xml 1KB
log4j.properties 2KB
com
tgb
controller
UserController.java 3KB
service
base
HibernateService.java 1KB
impl
HibernateServiceImpl.java 8KB
UserService.java 410B
impl
UserServiceImpl.java 2KB
entity
User.java 971B
utils
PageView.java 2KB
QueryResult.java 465B
ReflectManager.java 1KB
MyConstant.java 413B
PageIndex.java 1KB
spring-common.xml 3KB
.project 2KB
WebRoot
addUser.jsp 642B
META-INF
MANIFEST.MF 36B
WEB-INF
web.xml 2KB
classes
spring-mvc.xml 1KB
log4j.properties 2KB
com
tgb
controller
UserController.class 3KB
service
base
HibernateService.class 2KB
impl
HibernateServiceImpl.class 10KB
UserService.class 289B
impl
UserServiceImpl.class 632B
entity
User.class 1KB
utils
QueryResult.class 1KB
MyConstant.class 228B
ReflectManager.class 2KB
PageIndex.class 1KB
PageView.class 3KB
spring-common.xml 3KB
lib
spring-webmvc-3.2.3.RELEASE.jar 622KB
spring-web-3.2.3.RELEASE.jar 611KB
spring-aop-3.2.3.RELEASE.jar 328KB
jboss-transaction-api_1.1_spec-1.0.0.Final.jar 11KB
dom4j-1.6.1.jar 307KB
org.springframework.transaction-3.0.5.RELEASE.jar 226KB
mysql-connector-java-5.1.7-bin.jar 693KB
javassist-3.11.0.GA.jar 600KB
aopalliance-1.0.jar 4KB
antlr-2.7.7.jar 435KB
spring-orm-3.2.1.RELEASE.jar 383KB
junit-4.7.jar 757KB
jboss-logging-3.1.0.GA.jar 59KB
hamcrest-core-1.3.jar 44KB
spring-expression-3.2.3.RELEASE.jar 191KB
commons-logging.jar 59KB
hibernate-core-4.1.10.Final.jar 4.32MB
slf4j-log4j12-1.7.5.jar 9KB
commons-pool.jar 61KB
spring-core-3.2.3.RELEASE.jar 847KB
hibernate-jpa-2.0-api-1.0.1.Final.jar 100KB
commons-io.jar 82KB
spring-context-3.2.3.RELEASE.jar 843KB
log4j-1.2.17.jar 478KB
hibernate-commons-annotations-4.0.1.Final.jar 79KB
spring-jdbc-3.2.3.RELEASE.jar 396KB
slf4j-api-1.7.5.jar 25KB
spring-beans-3.2.3.RELEASE.jar 593KB
editUser.jsp 881B
result.jsp 1005B
js
jquery-1.4.2.js 160KB
findUser.jsp 957B
index.jsp 266B
error.jsp 820B
findresult.jsp 921B
success.jsp 820B
.mymetadata 303B
.classpath 529B
.myeclipse
共 76 条
- 1
kutekute
- 粉丝: 230
- 资源: 58
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
- 6
前往页