下面是我的代码:package com.jd.oa.base;import java.util.List;public interface BaseDao<T> { /**
* 返回所有对象集合
* @return
*/
List<T> findAll();
/**
* 根据id数据返回对象集合
* @param id
* @return
*/
List<T> findByIds(String[] ids); /**
* 根据hql放回所有符合条件的对象集合
* @param hql
* @return
*/
List<T> findAll(String hql,List<Object> params);
/**
* 根据分页信息返回所有的对象集合
* @param page
* @param pageSize
* @return
*/
List<T> findByPage(int page,int pageSize);
/**
* 根据分页信息返回所有的对象集合
* @param hql 传入的hql语句
* @param page
* @param pageSize
* @return
*/
List<T> findByPage(String hql,List<Object> params, int page, int pageSize);
/**
* 根据id返回对象
* @param id
* @return
*/
T findById(String id);
/**
* 更具用户的属性返回对象
* @param proName
* @param proValue
* @return
*/
List<T> findByPropertiy(String proName,String proValue);
/**
* 计算记录数量
* @return
*/
long count();
/**
* 根据hql语句,计算条件记录数量
* @return
*/
long count(String hql,List<Object> params);
/**
* 根据id删除对象
* @param id
*/
void delete(String id);
/**
* 数组删除
* @param ids
*/
void deleteByIds(String[] ids);
/**
* 更新数据库中的对象信息
* @param entity
*/
void update(T entity);
/**
* 向数据库中添加对象记录
* @param entity
*/
void add(T entity);
}
package com.jd.oa.base;import java.lang.reflect.ParameterizedType;
import java.util.Collections;
import java.util.List;import javax.annotation.Resource;import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;@SuppressWarnings("unchecked")
public class BaseDaoImpl<T> implements BaseDao<T>{ @Resource
protected SessionFactory sessionFactory;
private Class<T> clazz; /**
* 构造方法
*/
public BaseDaoImpl() {
// 同过反射得到T的真实类型
ParameterizedType pt = (ParameterizedType) this.getClass()
.getGenericSuperclass();
this.clazz = (Class) pt.getActualTypeArguments()[0];
} /**
* 日返回所有对象集合
*
* @return
*/ public List<T> findAll() {
return (List<T>) getSession().createQuery(
"FROM " + clazz.getSimpleName()).list();
}
/**
* 根据hql放回所有符合条件的对象集合
* @param hql 查询的hql语句
* @return
*/
public List<T> findAll(String hql,List<Object> params){
Query q = getSession().createQuery(hql);
for(int i=0;i<params.size();i++){
q.setParameter(i, params.get(i));
}
return (List<T>)q.list();
}
/**
* 根据id数据返回对象集合
*
* @param id
* @return
*/
public List<T> findByIds(String[] ids) {
if (ids == null || ids.length == 0) {
return Collections.EMPTY_LIST;// 返回一个不可操作的空集合
}
return (List<T>) getSession().createQuery(
"FROM " + clazz.getSimpleName() + " WHERE id IN (:ids)")
.setParameter("ids", ids).list();
} /**
* 根据分页信息返回所有的对象集合
*
* @param page
* @param pageSize
* @return
*/
public List<T> findByPage(int page, int pageSize) {
return (List<T>) getSession().createQuery(
"FROM " + clazz.getSimpleName()).setFirstResult(
(page - 1) * pageSize).setMaxResults(pageSize).list();
} /**
* 根据分页信息返回所有的对象集合
*
* @param hql
* 传入的hql语句
* @param page
* @param pageSize
* @return
*/
public List<T> findByPage(String hql,List<Object> params, int page, int pageSize) {
Query q = getSession().createQuery(hql);
for(int i=0;i<params.size();i++){
q.setParameter(i,params.get(i));
}
return (List<T>) q.setFirstResult((page - 1) * pageSize)
.setMaxResults(pageSize)
.list();
} /**
* 根据id返回对象
*
* @param id
* @return
*/
public T findById(String id) {
return (T) getSession().get(clazz, id);
}
/**
* 更具用户的属性返回对象
* @param proName
* @param proValue
* @return
*/
public List<T> findByPropertiy(String proName,String proValue){
return (List<T>) getSession().createQuery(
"FROM " + clazz.getSimpleName() + " WHERE "+proName+" = :value")
.setParameter("value", proValue).list();
}
/**
* 计算记录数量
* @return
*/
public long count(){
return (Long)getSession()
.createQuery("FROM "+clazz.getSimpleName())
.uniqueResult();
}
/**
* 根据hql语句,计算条件记录数量
* @return
*/
public long count(String hql,List<Object> params){
Query q = getSession().createQuery(hql);
for(int i=0;i<params.size();i++){
q.setParameter(i,params.get(i));
}
return (Long) q.uniqueResult();
}
/**
* 根据id删除对象
*
* @param id
*/
public void delete(String id) {
getSession().delete(getSession().get(clazz, id));
} /**
* 根据id数组删除对象
*
* @param ids
*/
public void deleteByIds(String[] ids) {
for (String i : ids) {
delete(i);
}
} /**
* 更新数据库中的对象信息
*
* @param entity
*/
public void update(T entity) {
getSession().update(entity);
} /**
* 向数据库中添加对象记录
*
* @param entity
*/
public void add(T entity) {
getSession().save(entity);
} protected Session getSession() {
System.out.println(sessionFactory);
return sessionFactory.getCurrentSession();
}
}
* 返回所有对象集合
* @return
*/
List<T> findAll();
/**
* 根据id数据返回对象集合
* @param id
* @return
*/
List<T> findByIds(String[] ids); /**
* 根据hql放回所有符合条件的对象集合
* @param hql
* @return
*/
List<T> findAll(String hql,List<Object> params);
/**
* 根据分页信息返回所有的对象集合
* @param page
* @param pageSize
* @return
*/
List<T> findByPage(int page,int pageSize);
/**
* 根据分页信息返回所有的对象集合
* @param hql 传入的hql语句
* @param page
* @param pageSize
* @return
*/
List<T> findByPage(String hql,List<Object> params, int page, int pageSize);
/**
* 根据id返回对象
* @param id
* @return
*/
T findById(String id);
/**
* 更具用户的属性返回对象
* @param proName
* @param proValue
* @return
*/
List<T> findByPropertiy(String proName,String proValue);
/**
* 计算记录数量
* @return
*/
long count();
/**
* 根据hql语句,计算条件记录数量
* @return
*/
long count(String hql,List<Object> params);
/**
* 根据id删除对象
* @param id
*/
void delete(String id);
/**
* 数组删除
* @param ids
*/
void deleteByIds(String[] ids);
/**
* 更新数据库中的对象信息
* @param entity
*/
void update(T entity);
/**
* 向数据库中添加对象记录
* @param entity
*/
void add(T entity);
}
package com.jd.oa.base;import java.lang.reflect.ParameterizedType;
import java.util.Collections;
import java.util.List;import javax.annotation.Resource;import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;@SuppressWarnings("unchecked")
public class BaseDaoImpl<T> implements BaseDao<T>{ @Resource
protected SessionFactory sessionFactory;
private Class<T> clazz; /**
* 构造方法
*/
public BaseDaoImpl() {
// 同过反射得到T的真实类型
ParameterizedType pt = (ParameterizedType) this.getClass()
.getGenericSuperclass();
this.clazz = (Class) pt.getActualTypeArguments()[0];
} /**
* 日返回所有对象集合
*
* @return
*/ public List<T> findAll() {
return (List<T>) getSession().createQuery(
"FROM " + clazz.getSimpleName()).list();
}
/**
* 根据hql放回所有符合条件的对象集合
* @param hql 查询的hql语句
* @return
*/
public List<T> findAll(String hql,List<Object> params){
Query q = getSession().createQuery(hql);
for(int i=0;i<params.size();i++){
q.setParameter(i, params.get(i));
}
return (List<T>)q.list();
}
/**
* 根据id数据返回对象集合
*
* @param id
* @return
*/
public List<T> findByIds(String[] ids) {
if (ids == null || ids.length == 0) {
return Collections.EMPTY_LIST;// 返回一个不可操作的空集合
}
return (List<T>) getSession().createQuery(
"FROM " + clazz.getSimpleName() + " WHERE id IN (:ids)")
.setParameter("ids", ids).list();
} /**
* 根据分页信息返回所有的对象集合
*
* @param page
* @param pageSize
* @return
*/
public List<T> findByPage(int page, int pageSize) {
return (List<T>) getSession().createQuery(
"FROM " + clazz.getSimpleName()).setFirstResult(
(page - 1) * pageSize).setMaxResults(pageSize).list();
} /**
* 根据分页信息返回所有的对象集合
*
* @param hql
* 传入的hql语句
* @param page
* @param pageSize
* @return
*/
public List<T> findByPage(String hql,List<Object> params, int page, int pageSize) {
Query q = getSession().createQuery(hql);
for(int i=0;i<params.size();i++){
q.setParameter(i,params.get(i));
}
return (List<T>) q.setFirstResult((page - 1) * pageSize)
.setMaxResults(pageSize)
.list();
} /**
* 根据id返回对象
*
* @param id
* @return
*/
public T findById(String id) {
return (T) getSession().get(clazz, id);
}
/**
* 更具用户的属性返回对象
* @param proName
* @param proValue
* @return
*/
public List<T> findByPropertiy(String proName,String proValue){
return (List<T>) getSession().createQuery(
"FROM " + clazz.getSimpleName() + " WHERE "+proName+" = :value")
.setParameter("value", proValue).list();
}
/**
* 计算记录数量
* @return
*/
public long count(){
return (Long)getSession()
.createQuery("FROM "+clazz.getSimpleName())
.uniqueResult();
}
/**
* 根据hql语句,计算条件记录数量
* @return
*/
public long count(String hql,List<Object> params){
Query q = getSession().createQuery(hql);
for(int i=0;i<params.size();i++){
q.setParameter(i,params.get(i));
}
return (Long) q.uniqueResult();
}
/**
* 根据id删除对象
*
* @param id
*/
public void delete(String id) {
getSession().delete(getSession().get(clazz, id));
} /**
* 根据id数组删除对象
*
* @param ids
*/
public void deleteByIds(String[] ids) {
for (String i : ids) {
delete(i);
}
} /**
* 更新数据库中的对象信息
*
* @param entity
*/
public void update(T entity) {
getSession().update(entity);
} /**
* 向数据库中添加对象记录
*
* @param entity
*/
public void add(T entity) {
getSession().save(entity);
} protected Session getSession() {
System.out.println(sessionFactory);
return sessionFactory.getCurrentSession();
}
}
<!-- 配置SessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name= "hibernate.current_session_context_class" value="thread" />
<property name="dataSource" ref="dataSource" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
</props>
</property>
<property name="annotatedClasses">
<list>
<value>com.jd.oa.entity.User</value>
</list>
</property>
</bean>报错了,说没有这个配置项!!
<!-- 配置SessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name= "hibernate.current_session_context_class" value="thread" />
<property name="dataSource" ref="dataSource" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
</props>
</property>
<property name="annotatedClasses">
<list>
<value>com.jd.oa.entity.User</value>
</list>
</property>
</bean>报错了,说没有这个配置项!!
换成hibernate3试试 hibernate4估计设计不同了也可能
<!-- 配置SessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name= "hibernate.current_session_context_class" value="thread" />
<property name="dataSource" ref="dataSource" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
</props>
</property>
<property name="annotatedClasses">
<list>
<value>com.jd.oa.entity.User</value>
</list>
</property>
</bean>报错了,说没有这个配置项!!
我刚刚试了可以 我是这样配置的<session-factory>
<property name="hibernate.connection.url">jdbc:mysql://127.0.0.1:3306/hibernate3.3.2?useUnicode=true&characterEncoding=UTF-8</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">sa</property>
<property name="hibernate.connection.isolation">2</property>
<property name="show_sql">true</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name= "hibernate.current_session_context_class">thread</property>
</session-factory>
你那里应该配置到hibernateProperties里面吧 这个属于hibernate属性