baseDao 使用spring3+hibernate4方式
启动异常:
java.lang.ClassCastException: org.springframework.orm.hibernate4.SessionHolder cannot be cast to org.springframework.orm.hibernate3.SessionHolder
由于hibernate4已经完全可以实现事务了 与spring3.1中的hibernatedao,hibernateTemplete等有冲突,所以spring3.1里已经不提供hibernatedaosupport,hibernateTemplete了,只能用hibernate原始的方式用session。 获得session:getSessionFactory().getCurrentSession()。
package org.konghao.basic.dao; import java.io.Serializable;
import java.util.List;
import java.util.Map;
/**
*
* @author zh
*
* @param <T>
*/
public interface IBaseDao<T extends Serializable> { void save(T t);
void update(T t);
int save(String hql,Object[] params);
void delete(T t);
void deleteById(String hql, Object[] params);
int update(String hql,Object[] params);
T get(final Serializable id);
T load(final Serializable id);
public List<T> listNotIn(String hql, Object[] params);
public List<T> getByHqlNotIn(String hql, Object[] params);
List<T> listAll();
List<T> listFenYe(int firstResult, int maxResults);
List<T> listFenYeNotIn(int firstResult, int maxResults, String hql, Object[] params);
long getCount();
long getCount(String hql,Object[] params);
List<T> listByHql(String hql,Object[] params);
T getByHql(String hql,Object[] params);
List<T> listFenYeAddparams(int firstResult, int maxResults,String hql,Object[] params);
List<T> queryPage(Map map,int firstResult, int maxResults,String hql) ;
long getCount(String hql, Map map);
}
Hibernate4方式
package org.konghao.basic.dao; import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.Iterator;
import java.util.List;
import java.util.Map; import javax.inject.Inject; import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory; /**
* BaseDaoImpl不能在类型未确定前直接实例化
*
* @author zh
* @param <T>
*/
public class BaseDao<T extends Serializable> implements IBaseDao<T> { private SessionFactory sessionFactory; public SessionFactory getSessionFactory() {
return sessionFactory;
} @Inject
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
} protected Session getSession() {
return sessionFactory.getCurrentSession();
} @SuppressWarnings("rawtypes")
private Class Tclass; @SuppressWarnings("rawtypes")
public BaseDao() {
Type type = this.getClass().getGenericSuperclass();
if (type.toString().indexOf("BaseDao") != -1) {
ParameterizedType type1 = (ParameterizedType) type;
Type[] types = type1.getActualTypeArguments();
setTclass((Class) types[0]);
} else {
type = ((Class) type).getGenericSuperclass();
ParameterizedType type1 = (ParameterizedType) type;
Type[] types = type1.getActualTypeArguments();
setTclass((Class) types[0]);
}
} /**
* 保存对象
*
* @param Object
*/ public void save(T t) {
// this.getHibernateTemplate().save(t)
getSession().save(t); } /**
* 更新对象内容
*
* @param Object
*/
public void update(T t) {
// this.getHibernateTemplate().update(t);
getSession().update(t);
} /**
* 删除对象
*
* @param t
*/
public void delete(T t) {
// this.getHibernateTemplate().delete(t);
getSession().delete(t);
} public void deleteById(String hql, Object[] params) {
Query query = this.getSession().createQuery(hql);
for (int i = 0; i < params.length; i++) {
query.setParameter(i, params[i]);
}
query.executeUpdate();
} /**
* ͨ通过ID 得到对象
*
* @param Serializable
*/
@SuppressWarnings("unchecked")
public T get(Serializable id) {
// return (T) this.getHibernateTemplate().get(getTclass(), id);
return (T) getSession().get(getTclass(), id);
} /**
* 取得所有对象
*
*/
@SuppressWarnings("unchecked")
public List<T> listAll() {
String hql = "from " + getTclass().getSimpleName();
return this.getSession().createQuery(hql).list();
} /**
* hql解决方案
*
* @param String
* hql
*
* @param Object
* [] params 参数列表 顺序不能颠倒
*/ @SuppressWarnings("unchecked")
public List<T> listByHql(String hql, Object[] params) {
Query query = this.getSession().createQuery(hql);
if (null == params || params.length == 0) {
return query.list();
} else {
for (int i = 0; i < params.length; i++) {
query.setParameter(i, params[i]);
}
}
return query.list();
} /**
* 同类分页
*
* @param int firstResult 从第几条开始
* @param int maxResults 要取几条
*/
@SuppressWarnings({ "unchecked" })
public List<T> listFenYe(int firstResult, int maxResults) {
String hql = "from " + getTclass().getSimpleName();
Query query = this.getSession().createQuery(hql)
.setMaxResults(maxResults).setFirstResult(firstResult);
return query.list();
} /**
* 取得行数
*/ public long getCount() {
String hql = "select count(*) from " + getTclass().getSimpleName();
return (Long) this.getSession().createQuery(hql).uniqueResult();
} /**
* 懒加载load
*/
@SuppressWarnings("unchecked")
public T load(Serializable id) {
return (T) getSession().load(getTclass(), id);
} @SuppressWarnings("unchecked")
public T getByHql(String hql, Object[] params) {
Query query = this.getSession().createQuery(hql);
for (int i = 0; i < params.length; i++) {
query.setParameter(i, params[i]);
}
return (T) query.uniqueResult();
} @SuppressWarnings("unchecked")
public List<T> getByHqlNotIn(String hql, Object[] params) {
System.out.println("Tclass:" + Tclass);
Query query = this.getSession().createSQLQuery(hql).addEntity(Tclass);
List<T> list = null;
for (int i = 0; i < params.length; i++) {
query.setParameter(i, params[i]);
}
list = query.list();
return list;
} @SuppressWarnings("unchecked")
public List<T> listFenYeAddparams(int firstResult, int maxResults,
String hql, Object[] params) {
Query query = this.getSession().createQuery(hql);
List<T> list = null;
if (null == params || params.length == 0) {
list = query.setMaxResults(maxResults).setFirstResult(firstResult)
.list();
}
if (null != params || params.length != 0) {
for (int i = 0; i < params.length; i++) {
query.setParameter(i, params[i]);
}
list = query.setMaxResults(maxResults).setFirstResult(firstResult).list();
}
return list;
} @SuppressWarnings("unchecked")
public List<T> listFenYeNotIn(int firstResult, int maxResults, String hql,
Object[] params) {
Query query = this.getSession().createSQLQuery(hql).addEntity(Tclass);
List<T> list = null;
if (null == params || params.length == 0) {
list = query.setMaxResults(maxResults).setFirstResult(firstResult).list();
}
if (null != params || params.length != 0) {
for (int i = 0; i < params.length; i++) {
System.out.println("params:" + params[i]);
query.setParameter(i, params[i]);
}
list = query.setMaxResults(maxResults).setFirstResult(firstResult).list();
}
return list;
} @SuppressWarnings("unchecked")
public List<T> listNotIn(String hql, Object[] params) {
Query query = this.getSession().createSQLQuery(hql).addEntity(Tclass);
List<T> list = null;
if (null != params || params.length != 0) {
for (int i = 0; i < params.length; i++) {
System.out.println("params:" + params[i]);
query.setParameter(i, params[i]);
}
}
list = query.list();
return list;
} public long getCount(String hql, Object[] params) {
Query query = this.getSession().createQuery(hql);
if (null != params || params.length != 0) {
for (int i = 0; i < params.length; i++) {
query.setParameter(i, params[i]);
}
}
return (Long) query.uniqueResult();
} @SuppressWarnings("unchecked")
public List<T> queryPage(Map map, int firstResult, int maxResults,
String hql) {
StringBuffer buffer = new StringBuffer(hql);
StringBuffer wherestring = new StringBuffer();
Iterator paramnames = map.keySet().iterator();
while (paramnames.hasNext()) {
String paramname = (String) paramnames.next();
String value = null;
value = String.valueOf(map.get(paramname));
if (value != null) {
value = value.trim();
if (value.equals("")) {
continue;
}
}
if (wherestring.length() == 0) {
wherestring.append(" where ");
} else {
wherestring.append(" and ");
}
wherestring.append(paramname).append("=").append(value);
buffer.append(wherestring);
}
Query query = this.getSession().createQuery(buffer.toString());
List<T> list = query.setMaxResults(maxResults).setFirstResult(firstResult).list();
return list;
} public long getCount(String hql, Map map) {
StringBuffer buffer = new StringBuffer(hql);
StringBuffer wherestring = new StringBuffer();
Iterator paramnames = map.keySet().iterator();
while (paramnames.hasNext()) {
String paramname = (String) paramnames.next();
String value = null;
value = String.valueOf(map.get(paramname));
if (value != null) {
value = value.trim();
if (value.equals("")) {
continue;
}
}
if (wherestring.length() == 0) {
wherestring.append(" where ");
} else {
wherestring.append(" and ");
}
wherestring.append(paramname).append("=").append(value);
buffer.append(wherestring);
}
Query query = this.getSession().createQuery(buffer.toString());
return (Long) query.uniqueResult();
} public int update(String hql, Object[] params) {
Query query = this.getSession().createQuery(hql);
if (params == null) {
return query.executeUpdate();
}
for (int i = 0; i < params.length; i++) {
query.setParameter(i, params[i]);
}
return query.executeUpdate();
} public int save(String hql, Object[] params) {
Query query = this.getSession().createQuery(hql);
for (int i = 0; i < params.length; i++) {
query.setParameter(i, params[i]);
}
return query.executeUpdate();
} public T queryObject(String hql, Object[] params) {
Query query = this.getSession().createQuery(hql);
for (int i = 0; i < params.length; i++) {
query.setParameter(i, params[i]);
}
return (T) query.uniqueResult();
} @SuppressWarnings("rawtypes")
public Class getTclass() {
if(Tclass == null){
Type type = this.getClass().getGenericSuperclass();
ParameterizedType type2 = (ParameterizedType) type;
Type[] types = type2.getActualTypeArguments();
Tclass = (Class<?>) types[0];
}
return Tclass;
} @SuppressWarnings("rawtypes")
public void setTclass(Class tclass) {
Tclass = tclass;
}
}
baseDao 使用spring3+hibernate4方式的更多相关文章
- baseDao 使用spring3+hibernate3方式
package cn.zk.pic.service.dao; import java.io.Serializable; import java.util.List; import java.util. ...
- 画蛇添足-记spring3 hibernate4整合时遇到问题的处理办法
最近在来到一个新公司,使用新的spring3,hibernate4框架,在使用注解事务总是不起作用. 首先看配置文件,然后再讲解. 首先是springmvc-servlet.xml,这个配置文件是se ...
- 使用Maven搭建Struts2+Spring3+Hibernate4的整合开发环境
做了三年多的JavaEE开发了,在平时的JavaEE开发中,为了能够用最快的速度开发项目,一般都会选择使用Struts2,SpringMVC,Spring,Hibernate,MyBatis这些开源框 ...
- Struts2,Spring3,Hibernate4整合--SSH框架
Struts2,Spring3,Hibernate4整合--SSH框架(学习中) 一.包的导入 1.Spring包 2.Hibernate 包 3.struts 包 (还欠 struts2-sprin ...
- Maven搭建Struts2+Spring3+Hibernate4框架
做了三年多的JavaEE开发了,在平时的JavaEE开发中,为了能够用最快的速度开发项目,一般都会选择使用Struts2,SpringMVC,Spring,Hibernate,MyBatis这些开源框 ...
- SpringMVC+Spring3+Hibernate4开发环境的搭建
在项目早期比较简单,大多用JSP .Servlet + JDBC 直接获取,以后使用 Struts1(Struts2)+Spring+Hibernate, 严格格按照分层概念驱动项目开发.利用这段时间 ...
- 【转】SpringMVC+Spring3+Hibernate4开发环境搭建
原文地址: SpringMVC+Spring3+Hibernate4开发环境搭建
- springmvc+spring3+hibernate4框架简单整合,简单实现增删改查功能
转自:https://blog.csdn.net/thinkingcao/article/details/52472252 C 所用到的jar包 数据库表 数据库表就不用教大家了,一张表,很简 ...
- Spring3+hibernate4框架整合
花了俩天时间复习了一下Spring和jhibernate架构知识,在学习过程中受益颇多.知识用起来才能活起来,长时间不去触碰他就会变得很陌生. Spring 提供了统一的数据访问架构,可以支持JDBC ...
随机推荐
- Oracle 11gR2用gpnp profile存放ASM的spfile路径
从Oracle 11gR2开始,GI集成了ASM,OCR/VOTEDISK也存放在ASM磁盘组了(11gR2以前需要存放于裸设备中),同时ASM的功能较10g也有很大增强. 我们先引入一个问题:11g ...
- jquery之on()绑定事件和off()解除绑定事件
off()函数用于移除元素上绑定的一个或多个事件的事件处理函数. off()函数主要用于解除由on()函数绑定的事件处理函数. 该函数属于jQuery对象(实例). 语法 jQuery 1.7 新增该 ...
- NPOI 2.0导出word(docx格式)
大名鼎鼎的NPOI用来导出EXCEL的文章园子里面有很多,可是用来导出WORD文档的文章大都含糊不清,最近刚好完成一个导出WORD文档的需求,在此分享下. NPOI里面认为word文档的最基本的结构是 ...
- http tcp联系区别
术语TCP/IP代表传输控制协议/网际协议,指的是一系列协议.“IP”代表网际协议,TCP和UDP使用该协议从一个网络传送数据包到另一个网络.把IP想像成一种高速公路,它允许其它协议在上面行驶并找到到 ...
- linux -- 串口调试总结
linux 串口输出调试 在某些情况下,需要同时对两台或多台Linux主机进行管理和操作.如果手头缺少足够多的键盘和显示器,那么通过一台机器的串口对其余主机进行控制不失为一种快捷.有效的方法. 下面就 ...
- [搜片神器]直接从DHT网络下载BT种子的方法
DHT抓取程序开源地址:https://github.com/h31h31/H31DHTDEMO 数据处理程序开源地址:https://github.com/h31h31/H31DHTMgr DHT系 ...
- Loadrunner脚本之C语言文件处理函数
一.打开文件 打开文件使用库函数中的fopen函数.fopen函数会为要打开的文件新建一个流,然后返回一个指向file型对象的指针,该file型对象中保存了控制这个流所需要的信息. fp=fopen( ...
- open file 值修改
有时候在程序里面需要打开多个文件,进行分析,系统一般默认数量是1024,(用ulimit -a可以看到)对于正常使用是够了,但是对于程序来讲,就太少了. 修改办法: 重启就OK 修改2个文件. 1./ ...
- 使用c++11改写loki的TypeList
最近看了C++11的一些特性,最感兴趣的是可变模板参数,自动类型推断和匿名函数. Loki中的TypeList,是需要递归定义的,并且需要一个NullType作为尾节点. 可变模板参数使得实现Type ...
- C#学习7
一.变量交换 ; ; Console.WriteLine("开始a={0},b={1}",a,b); a = a + b; b = a - b; a = a - b; Consol ...