从网上查了许都,都没能解决,不知道是配置文件有问题,还是方法写的有问题
dao层实现类:
/**
@date 2015年2月26日 下午3:27:15
*/
@SuppressWarnings("unchecked")
public abstract class BaseDaoImpl implements BaseDao{
@Resource
private SessionFactory sessionFactory;
protected Class clazz;
public BaseDaoImpl() {
ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass();
this.clazz = (Class) pt.getActualTypeArguments()[0];
System.out.println("class = " + clazz.getName()+" init over");
}
public void save(T entity) {
getSession().persist(entity);
}
public void update(T entity) {
getSession().update(entity);
}
public void delete(ID id) {
Object obj = getSession().get(clazz, id);
if(obj!=null) getSession().delete(obj);
}
public T getById(ID id) {
if (id == null) {
return null;
}
return (T) getSession().get(clazz, id);
}
public T loadById(ID id) {
if (id == null) {
return null;
}
return (T) getSession().load(clazz, id);
}
public List getByIds(ID[] ids) {
if (ids == null || ids.length == 0) {
return Collections.EMPTY_LIST;
}
List<T> list = getSession().createQuery(//
"FROM " + clazz.getSimpleName() + " WHERE id IN(:ids)")//
.setParameterList("ids", ids)//
.list();
if(list == null) return Collections.EMPTY_LIST;
return list;
}
public List getAll() {
List list = getSession().createQuery(//
"FROM " + clazz.getSimpleName())//
.list();
if(list == null) return Collections.EMPTY_LIST;
return list;
}
public Long getCount(){
return (Long)getSession().createQuery(//
"SELECT COUNT(*) FROM "+ clazz.getSimpleName())//
.uniqueResult();//
}
public List getByHQL(String strHQL, Object... params) {
Query query = getSession().createQuery(strHQL);
if (params!=null){
for (int i = 0; i < params.length; i++){
query.setParameter(i, params[i]);
}
}
return query.list();
}
public PageBean getPageBean(int pageNum,int pageSize,HqlHelper hqlHelper) {
System.out.println("pageNum:"+pageNum);
System.out.println("pageSize:"+pageSize);
System.out.println("BaseDaoImpl:"+hqlHelper);
List parameters = hqlHelper.getParameters();
System.out.println("parameters:"+parameters);
System.out.println("@@@@"+hqlHelper.getQueryListHql());
// 查询本页的数据列表
Query listQuery = getSession().createQuery(hqlHelper.getQueryListHql());
if (parameters != null && parameters.size() > 0) { // 设置参数
for (int i = 0; i < parameters.size(); i++) {
listQuery.setParameter(i, parameters.get(i));
}
}
listQuery.setFirstResult((pageNum - 1) * pageSize);
listQuery.setMaxResults(pageSize);
List list = listQuery.list(); // 执行查询
// 查询总记录数
Query countQuery = getSession().createQuery(hqlHelper.getQueryCountHql());
if (parameters != null && parameters.size() > 0) { // 设置参数
for (int i = 0; i < parameters.size(); i++) {
countQuery.setParameter(i, parameters.get(i));
}
}
Long count = (Long) countQuery.uniqueResult(); // 执行查询
return new PageBean(pageNum, pageSize, list, count.intValue());
}
protected Session getSession() {
// if (null==sessionFactory.getCurrentSession()){
// System.out.println("open获取session:"+sessionFactory.openSession());
// return sessionFactory.openSession();
// }
System.out.println("sessionFactory="+sessionFactory);
System.out.println("get获取session:"+sessionFactory.getCurrentSession());
return sessionFactory.getCurrentSession();
}
}
spring配置文件:
<?xml version="1.0" encoding="UTF-8"?>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.1.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.1.xsd ">
<!-- TODO -->
<context:component-scan base-package="org.bhr.dao" />
<context:component-scan base-package="org.bhr.service" />
<!-- TODO -->
<context:property-placeholder location="classpath:local_db.properties" />
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="user" value="${jdbc.user}"></property>
<property name="password" value="${jdbc.password}"></property>
<property name="driverClass" value="${jdbc.driverClass}"></property>
<property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
<property name="initialPoolSize" value="${jdbc.initPoolSize}"></property>
<property name="maxPoolSize" value="${jdbc.maxPoolSize}"></property>
<property name="testConnectionOnCheckin" value="true"></property>
<property name="automaticTestTable" value="C3P0TestTable"></property>
<property name="idleConnectionTestPeriod" value="18000"></property>
<property name="maxIdleTime" value="25000"></property>
<property name="testConnectionOnCheckout" value="true"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
<!-- TODO -->
<property name="mappingLocations" value="classpath:org/bhr/po/*.hbm.xml"></property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<!-- TODO -->
<tx:attributes>
<tx:method name="get*" read-only="true" />
<tx:method name="find*" read-only="true" />
<tx:method name="verify*" read-only="true" />
<tx:method name="*" />
</tx:attributes>
</tx:advice>
<aop:config>
<!-- TODO -->
<aop:pointcut expression="execution(* org.bhr.service.*.*(..))"
id="txPointcut" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut" />
</aop:config>
报错信息:
当前页:1
每页显示记录大小:5
hql语句org.bhr.util.HqlHelper@1784aed1
class = java.io.Serializable init over
pageNum:1
pageSize:5
BaseDaoImpl:org.bhr.util.HqlHelper@1784aed1
parameters:[]
@@@@FROM WarnInfo o
sessionFactory=null
十二月 10, 2015 3:50:54 下午 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [springmvc] in context with path [/bhr] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause
java.lang.NullPointerException
at org.bhr.dao.impl.BaseDaoImpl.getSession(BaseDaoImpl.java:134)
at org.bhr.dao.impl.BaseDaoImpl.getPageBean(BaseDaoImpl.java:107)
at org.bhr.util.HqlHelper.buildPageBean(HqlHelper.java:148)
at org.bhr.web.controller.AdminInfoController.home(AdminInfoController.java:50)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:781)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:721)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2442)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2431)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:722)
dao层实现类:
/**
@date 2015年2月26日 下午3:27:15
*/
@SuppressWarnings("unchecked")
public abstract class BaseDaoImpl implements BaseDao{
@Resource
private SessionFactory sessionFactory;
protected Class clazz;
public BaseDaoImpl() {
ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass();
this.clazz = (Class) pt.getActualTypeArguments()[0];
System.out.println("class = " + clazz.getName()+" init over");
}
public void save(T entity) {
getSession().persist(entity);
}
public void update(T entity) {
getSession().update(entity);
}
public void delete(ID id) {
Object obj = getSession().get(clazz, id);
if(obj!=null) getSession().delete(obj);
}
public T getById(ID id) {
if (id == null) {
return null;
}
return (T) getSession().get(clazz, id);
}
public T loadById(ID id) {
if (id == null) {
return null;
}
return (T) getSession().load(clazz, id);
}
public List getByIds(ID[] ids) {
if (ids == null || ids.length == 0) {
return Collections.EMPTY_LIST;
}
List<T> list = getSession().createQuery(//
"FROM " + clazz.getSimpleName() + " WHERE id IN(:ids)")//
.setParameterList("ids", ids)//
.list();
if(list == null) return Collections.EMPTY_LIST;
return list;
}
public List getAll() {
List list = getSession().createQuery(//
"FROM " + clazz.getSimpleName())//
.list();
if(list == null) return Collections.EMPTY_LIST;
return list;
}
public Long getCount(){
return (Long)getSession().createQuery(//
"SELECT COUNT(*) FROM "+ clazz.getSimpleName())//
.uniqueResult();//
}
public List getByHQL(String strHQL, Object... params) {
Query query = getSession().createQuery(strHQL);
if (params!=null){
for (int i = 0; i < params.length; i++){
query.setParameter(i, params[i]);
}
}
return query.list();
}
public PageBean getPageBean(int pageNum,int pageSize,HqlHelper hqlHelper) {
System.out.println("pageNum:"+pageNum);
System.out.println("pageSize:"+pageSize);
System.out.println("BaseDaoImpl:"+hqlHelper);
List parameters = hqlHelper.getParameters();
System.out.println("parameters:"+parameters);
System.out.println("@@@@"+hqlHelper.getQueryListHql());
// 查询本页的数据列表
Query listQuery = getSession().createQuery(hqlHelper.getQueryListHql());
if (parameters != null && parameters.size() > 0) { // 设置参数
for (int i = 0; i < parameters.size(); i++) {
listQuery.setParameter(i, parameters.get(i));
}
}
listQuery.setFirstResult((pageNum - 1) * pageSize);
listQuery.setMaxResults(pageSize);
List list = listQuery.list(); // 执行查询
// 查询总记录数
Query countQuery = getSession().createQuery(hqlHelper.getQueryCountHql());
if (parameters != null && parameters.size() > 0) { // 设置参数
for (int i = 0; i < parameters.size(); i++) {
countQuery.setParameter(i, parameters.get(i));
}
}
Long count = (Long) countQuery.uniqueResult(); // 执行查询
return new PageBean(pageNum, pageSize, list, count.intValue());
}
protected Session getSession() {
// if (null==sessionFactory.getCurrentSession()){
// System.out.println("open获取session:"+sessionFactory.openSession());
// return sessionFactory.openSession();
// }
System.out.println("sessionFactory="+sessionFactory);
System.out.println("get获取session:"+sessionFactory.getCurrentSession());
return sessionFactory.getCurrentSession();
}
}
spring配置文件:
<?xml version="1.0" encoding="UTF-8"?>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.1.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.1.xsd ">
<!-- TODO -->
<context:component-scan base-package="org.bhr.dao" />
<context:component-scan base-package="org.bhr.service" />
<!-- TODO -->
<context:property-placeholder location="classpath:local_db.properties" />
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="user" value="${jdbc.user}"></property>
<property name="password" value="${jdbc.password}"></property>
<property name="driverClass" value="${jdbc.driverClass}"></property>
<property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
<property name="initialPoolSize" value="${jdbc.initPoolSize}"></property>
<property name="maxPoolSize" value="${jdbc.maxPoolSize}"></property>
<property name="testConnectionOnCheckin" value="true"></property>
<property name="automaticTestTable" value="C3P0TestTable"></property>
<property name="idleConnectionTestPeriod" value="18000"></property>
<property name="maxIdleTime" value="25000"></property>
<property name="testConnectionOnCheckout" value="true"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
<!-- TODO -->
<property name="mappingLocations" value="classpath:org/bhr/po/*.hbm.xml"></property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<!-- TODO -->
<tx:attributes>
<tx:method name="get*" read-only="true" />
<tx:method name="find*" read-only="true" />
<tx:method name="verify*" read-only="true" />
<tx:method name="*" />
</tx:attributes>
</tx:advice>
<aop:config>
<!-- TODO -->
<aop:pointcut expression="execution(* org.bhr.service.*.*(..))"
id="txPointcut" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut" />
</aop:config>
报错信息:
当前页:1
每页显示记录大小:5
hql语句org.bhr.util.HqlHelper@1784aed1
class = java.io.Serializable init over
pageNum:1
pageSize:5
BaseDaoImpl:org.bhr.util.HqlHelper@1784aed1
parameters:[]
@@@@FROM WarnInfo o
sessionFactory=null
十二月 10, 2015 3:50:54 下午 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [springmvc] in context with path [/bhr] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause
java.lang.NullPointerException
at org.bhr.dao.impl.BaseDaoImpl.getSession(BaseDaoImpl.java:134)
at org.bhr.dao.impl.BaseDaoImpl.getPageBean(BaseDaoImpl.java:107)
at org.bhr.util.HqlHelper.buildPageBean(HqlHelper.java:148)
at org.bhr.web.controller.AdminInfoController.home(AdminInfoController.java:50)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:781)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:721)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2442)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2431)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:722)
dao层实现类:
/**
@date 2015年2月26日 下午3:27:15
*/
@SuppressWarnings("unchecked")
public abstract class BaseDaoImpl implements BaseDao{
@Resource
private SessionFactory sessionFactory;
protected Class clazz;
public BaseDaoImpl() {
ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass();
this.clazz = (Class) pt.getActualTypeArguments()[0];
System.out.println("class = " + clazz.getName()+" init over");
}
public void save(T entity) {
getSession().persist(entity);
}
public void update(T entity) {
getSession().update(entity);
}
public void delete(ID id) {
Object obj = getSession().get(clazz, id);
if(obj!=null) getSession().delete(obj);
}
public T getById(ID id) {
if (id == null) {
return null;
}
return (T) getSession().get(clazz, id);
}
public T loadById(ID id) {
if (id == null) {
return null;
}
return (T) getSession().load(clazz, id);
}
public List getByIds(ID[] ids) {
if (ids == null || ids.length == 0) {
return Collections.EMPTY_LIST;
}
List<T> list = getSession().createQuery(//
"FROM " + clazz.getSimpleName() + " WHERE id IN(:ids)")//
.setParameterList("ids", ids)//
.list();
if(list == null) return Collections.EMPTY_LIST;
return list;
}
public List getAll() {
List list = getSession().createQuery(//
"FROM " + clazz.getSimpleName())//
.list();
if(list == null) return Collections.EMPTY_LIST;
return list;
}
public Long getCount(){
return (Long)getSession().createQuery(//
"SELECT COUNT(*) FROM "+ clazz.getSimpleName())//
.uniqueResult();//
}
public List getByHQL(String strHQL, Object... params) {
Query query = getSession().createQuery(strHQL);
if (params!=null){
for (int i = 0; i < params.length; i++){
query.setParameter(i, params[i]);
}
}
return query.list();
}
public PageBean getPageBean(int pageNum,int pageSize,HqlHelper hqlHelper) {
System.out.println("pageNum:"+pageNum);
System.out.println("pageSize:"+pageSize);
System.out.println("BaseDaoImpl:"+hqlHelper);
List parameters = hqlHelper.getParameters();
System.out.println("parameters:"+parameters);
System.out.println("@@@@"+hqlHelper.getQueryListHql());
// 查询本页的数据列表
Query listQuery = getSession().createQuery(hqlHelper.getQueryListHql());
if (parameters != null && parameters.size() > 0) { // 设置参数
for (int i = 0; i < parameters.size(); i++) {
listQuery.setParameter(i, parameters.get(i));
}
}
listQuery.setFirstResult((pageNum - 1) * pageSize);
listQuery.setMaxResults(pageSize);
List list = listQuery.list(); // 执行查询
// 查询总记录数
Query countQuery = getSession().createQuery(hqlHelper.getQueryCountHql());
if (parameters != null && parameters.size() > 0) { // 设置参数
for (int i = 0; i < parameters.size(); i++) {
countQuery.setParameter(i, parameters.get(i));
}
}
Long count = (Long) countQuery.uniqueResult(); // 执行查询
return new PageBean(pageNum, pageSize, list, count.intValue());
}
protected Session getSession() {
// if (null==sessionFactory.getCurrentSession()){
// System.out.println("open获取session:"+sessionFactory.openSession());
// return sessionFactory.openSession();
// }
System.out.println("sessionFactory="+sessionFactory);
System.out.println("get获取session:"+sessionFactory.getCurrentSession());
return sessionFactory.getCurrentSession();
}
}
spring配置文件:
<?xml version="1.0" encoding="UTF-8"?>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.1.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.1.xsd ">
<!-- TODO -->
<context:component-scan base-package="org.bhr.dao" />
<context:component-scan base-package="org.bhr.service" />
<!-- TODO -->
<context:property-placeholder location="classpath:local_db.properties" />
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="user" value="${jdbc.user}"></property>
<property name="password" value="${jdbc.password}"></property>
<property name="driverClass" value="${jdbc.driverClass}"></property>
<property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
<property name="initialPoolSize" value="${jdbc.initPoolSize}"></property>
<property name="maxPoolSize" value="${jdbc.maxPoolSize}"></property>
<property name="testConnectionOnCheckin" value="true"></property>
<property name="automaticTestTable" value="C3P0TestTable"></property>
<property name="idleConnectionTestPeriod" value="18000"></property>
<property name="maxIdleTime" value="25000"></property>
<property name="testConnectionOnCheckout" value="true"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
<!-- TODO -->
<property name="mappingLocations" value="classpath:org/bhr/po/*.hbm.xml"></property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<!-- TODO -->
<tx:attributes>
<tx:method name="get*" read-only="true" />
<tx:method name="find*" read-only="true" />
<tx:method name="verify*" read-only="true" />
<tx:method name="*" />
</tx:attributes>
</tx:advice>
<aop:config>
<!-- TODO -->
<aop:pointcut expression="execution(* org.bhr.service.*.*(..))"
id="txPointcut" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut" />
</aop:config>
报错信息:
当前页:1
每页显示记录大小:5
hql语句org.bhr.util.HqlHelper@1784aed1
class = java.io.Serializable init over
pageNum:1
pageSize:5
BaseDaoImpl:org.bhr.util.HqlHelper@1784aed1
parameters:[]
@@@@FROM WarnInfo o
sessionFactory=null
十二月 10, 2015 3:50:54 下午 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [springmvc] in context with path [/bhr] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause
java.lang.NullPointerException
at org.bhr.dao.impl.BaseDaoImpl.getSession(BaseDaoImpl.java:134)
at org.bhr.dao.impl.BaseDaoImpl.getPageBean(BaseDaoImpl.java:107)
at org.bhr.util.HqlHelper.buildPageBean(HqlHelper.java:148)
at org.bhr.web.controller.AdminInfoController.home(AdminInfoController.java:50)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:781)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:721)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2442)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2431)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:722)
dao层实现类:
/**
@date 2015年2月26日 下午3:27:15
*/
@SuppressWarnings("unchecked")
public abstract class BaseDaoImpl implements BaseDao{
@Resource
private SessionFactory sessionFactory;
protected Class clazz;
public BaseDaoImpl() {
ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass();
this.clazz = (Class) pt.getActualTypeArguments()[0];
System.out.println("class = " + clazz.getName()+" init over");
}
public void save(T entity) {
getSession().persist(entity);
}
public void update(T entity) {
getSession().update(entity);
}
public void delete(ID id) {
Object obj = getSession().get(clazz, id);
if(obj!=null) getSession().delete(obj);
}
public T getById(ID id) {
if (id == null) {
return null;
}
return (T) getSession().get(clazz, id);
}
public T loadById(ID id) {
if (id == null) {
return null;
}
return (T) getSession().load(clazz, id);
}
public List getByIds(ID[] ids) {
if (ids == null || ids.length == 0) {
return Collections.EMPTY_LIST;
}
List<T> list = getSession().createQuery(//
"FROM " + clazz.getSimpleName() + " WHERE id IN(:ids)")//
.setParameterList("ids", ids)//
.list();
if(list == null) return Collections.EMPTY_LIST;
return list;
}
public List getAll() {
List list = getSession().createQuery(//
"FROM " + clazz.getSimpleName())//
.list();
if(list == null) return Collections.EMPTY_LIST;
return list;
}
public Long getCount(){
return (Long)getSession().createQuery(//
"SELECT COUNT(*) FROM "+ clazz.getSimpleName())//
.uniqueResult();//
}
public List getByHQL(String strHQL, Object... params) {
Query query = getSession().createQuery(strHQL);
if (params!=null){
for (int i = 0; i < params.length; i++){
query.setParameter(i, params[i]);
}
}
return query.list();
}
public PageBean getPageBean(int pageNum,int pageSize,HqlHelper hqlHelper) {
System.out.println("pageNum:"+pageNum);
System.out.println("pageSize:"+pageSize);
System.out.println("BaseDaoImpl:"+hqlHelper);
List parameters = hqlHelper.getParameters();
System.out.println("parameters:"+parameters);
System.out.println("@@@@"+hqlHelper.getQueryListHql());
// 查询本页的数据列表
Query listQuery = getSession().createQuery(hqlHelper.getQueryListHql());
if (parameters != null && parameters.size() > 0) { // 设置参数
for (int i = 0; i < parameters.size(); i++) {
listQuery.setParameter(i, parameters.get(i));
}
}
listQuery.setFirstResult((pageNum - 1) * pageSize);
listQuery.setMaxResults(pageSize);
List list = listQuery.list(); // 执行查询
// 查询总记录数
Query countQuery = getSession().createQuery(hqlHelper.getQueryCountHql());
if (parameters != null && parameters.size() > 0) { // 设置参数
for (int i = 0; i < parameters.size(); i++) {
countQuery.setParameter(i, parameters.get(i));
}
}
Long count = (Long) countQuery.uniqueResult(); // 执行查询
return new PageBean(pageNum, pageSize, list, count.intValue());
}
protected Session getSession() {
// if (null==sessionFactory.getCurrentSession()){
// System.out.println("open获取session:"+sessionFactory.openSession());
// return sessionFactory.openSession();
// }
System.out.println("sessionFactory="+sessionFactory);
System.out.println("get获取session:"+sessionFactory.getCurrentSession());
return sessionFactory.getCurrentSession();
}
}
spring配置文件:
<?xml version="1.0" encoding="UTF-8"?>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.1.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.1.xsd ">
<!-- TODO -->
<context:component-scan base-package="org.bhr.dao" />
<context:component-scan base-package="org.bhr.service" />
<!-- TODO -->
<context:property-placeholder location="classpath:local_db.properties" />
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="user" value="${jdbc.user}"></property>
<property name="password" value="${jdbc.password}"></property>
<property name="driverClass" value="${jdbc.driverClass}"></property>
<property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
<property name="initialPoolSize" value="${jdbc.initPoolSize}"></property>
<property name="maxPoolSize" value="${jdbc.maxPoolSize}"></property>
<property name="testConnectionOnCheckin" value="true"></property>
<property name="automaticTestTable" value="C3P0TestTable"></property>
<property name="idleConnectionTestPeriod" value="18000"></property>
<property name="maxIdleTime" value="25000"></property>
<property name="testConnectionOnCheckout" value="true"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
<!-- TODO -->
<property name="mappingLocations" value="classpath:org/bhr/po/*.hbm.xml"></property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<!-- TODO -->
<tx:attributes>
<tx:method name="get*" read-only="true" />
<tx:method name="find*" read-only="true" />
<tx:method name="verify*" read-only="true" />
<tx:method name="*" />
</tx:attributes>
</tx:advice>
<aop:config>
<!-- TODO -->
<aop:pointcut expression="execution(* org.bhr.service.*.*(..))"
id="txPointcut" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut" />
</aop:config>
报错信息:
当前页:1
每页显示记录大小:5
hql语句org.bhr.util.HqlHelper@1784aed1
class = java.io.Serializable init over
pageNum:1
pageSize:5
BaseDaoImpl:org.bhr.util.HqlHelper@1784aed1
parameters:[]
@@@@FROM WarnInfo o
sessionFactory=null
十二月 10, 2015 3:50:54 下午 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [springmvc] in context with path [/bhr] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause
java.lang.NullPointerException
at org.bhr.dao.impl.BaseDaoImpl.getSession(BaseDaoImpl.java:134)
at org.bhr.dao.impl.BaseDaoImpl.getPageBean(BaseDaoImpl.java:107)
at org.bhr.util.HqlHelper.buildPageBean(HqlHelper.java:148)
at org.bhr.web.controller.AdminInfoController.home(AdminInfoController.java:50)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:781)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:721)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2442)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2431)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:722)
dao层实现类:
/**
@date 2015年2月26日 下午3:27:15
*/
@SuppressWarnings("unchecked")
public abstract class BaseDaoImpl implements BaseDao{
@Resource
private SessionFactory sessionFactory;
protected Class clazz;
public BaseDaoImpl() {
ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass();
this.clazz = (Class) pt.getActualTypeArguments()[0];
System.out.println("class = " + clazz.getName()+" init over");
}
public void save(T entity) {
getSession().persist(entity);
}
public void update(T entity) {
getSession().update(entity);
}
public void delete(ID id) {
Object obj = getSession().get(clazz, id);
if(obj!=null) getSession().delete(obj);
}
public T getById(ID id) {
if (id == null) {
return null;
}
return (T) getSession().get(clazz, id);
}
public T loadById(ID id) {
if (id == null) {
return null;
}
return (T) getSession().load(clazz, id);
}
public List getByIds(ID[] ids) {
if (ids == null || ids.length == 0) {
return Collections.EMPTY_LIST;
}
List<T> list = getSession().createQuery(//
"FROM " + clazz.getSimpleName() + " WHERE id IN(:ids)")//
.setParameterList("ids", ids)//
.list();
if(list == null) return Collections.EMPTY_LIST;
return list;
}
public List getAll() {
List list = getSession().createQuery(//
"FROM " + clazz.getSimpleName())//
.list();
if(list == null) return Collections.EMPTY_LIST;
return list;
}
public Long getCount(){
return (Long)getSession().createQuery(//
"SELECT COUNT(*) FROM "+ clazz.getSimpleName())//
.uniqueResult();//
}
public List getByHQL(String strHQL, Object... params) {
Query query = getSession().createQuery(strHQL);
if (params!=null){
for (int i = 0; i < params.length; i++){
query.setParameter(i, params[i]);
}
}
return query.list();
}
public PageBean getPageBean(int pageNum,int pageSize,HqlHelper hqlHelper) {
System.out.println("pageNum:"+pageNum);
System.out.println("pageSize:"+pageSize);
System.out.println("BaseDaoImpl:"+hqlHelper);
List parameters = hqlHelper.getParameters();
System.out.println("parameters:"+parameters);
System.out.println("@@@@"+hqlHelper.getQueryListHql());
// 查询本页的数据列表
Query listQuery = getSession().createQuery(hqlHelper.getQueryListHql());
if (parameters != null && parameters.size() > 0) { // 设置参数
for (int i = 0; i < parameters.size(); i++) {
listQuery.setParameter(i, parameters.get(i));
}
}
listQuery.setFirstResult((pageNum - 1) * pageSize);
listQuery.setMaxResults(pageSize);
List list = listQuery.list(); // 执行查询
// 查询总记录数
Query countQuery = getSession().createQuery(hqlHelper.getQueryCountHql());
if (parameters != null && parameters.size() > 0) { // 设置参数
for (int i = 0; i < parameters.size(); i++) {
countQuery.setParameter(i, parameters.get(i));
}
}
Long count = (Long) countQuery.uniqueResult(); // 执行查询
return new PageBean(pageNum, pageSize, list, count.intValue());
}
protected Session getSession() {
// if (null==sessionFactory.getCurrentSession()){
// System.out.println("open获取session:"+sessionFactory.openSession());
// return sessionFactory.openSession();
// }
System.out.println("sessionFactory="+sessionFactory);
System.out.println("get获取session:"+sessionFactory.getCurrentSession());
return sessionFactory.getCurrentSession();
}
}
spring配置文件:
<?xml version="1.0" encoding="UTF-8"?>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.1.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.1.xsd ">
<!-- TODO -->
<context:component-scan base-package="org.bhr.dao" />
<context:component-scan base-package="org.bhr.service" />
<!-- TODO -->
<context:property-placeholder location="classpath:local_db.properties" />
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="user" value="${jdbc.user}"></property>
<property name="password" value="${jdbc.password}"></property>
<property name="driverClass" value="${jdbc.driverClass}"></property>
<property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
<property name="initialPoolSize" value="${jdbc.initPoolSize}"></property>
<property name="maxPoolSize" value="${jdbc.maxPoolSize}"></property>
<property name="testConnectionOnCheckin" value="true"></property>
<property name="automaticTestTable" value="C3P0TestTable"></property>
<property name="idleConnectionTestPeriod" value="18000"></property>
<property name="maxIdleTime" value="25000"></property>
<property name="testConnectionOnCheckout" value="true"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
<!-- TODO -->
<property name="mappingLocations" value="classpath:org/bhr/po/*.hbm.xml"></property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<!-- TODO -->
<tx:attributes>
<tx:method name="get*" read-only="true" />
<tx:method name="find*" read-only="true" />
<tx:method name="verify*" read-only="true" />
<tx:method name="*" />
</tx:attributes>
</tx:advice>
<aop:config>
<!-- TODO -->
<aop:pointcut expression="execution(* org.bhr.service.*.*(..))"
id="txPointcut" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut" />
</aop:config>
报错信息:
当前页:1
每页显示记录大小:5
hql语句org.bhr.util.HqlHelper@1784aed1
class = java.io.Serializable init over
pageNum:1
pageSize:5
BaseDaoImpl:org.bhr.util.HqlHelper@1784aed1
parameters:[]
@@@@FROM WarnInfo o
sessionFactory=null
十二月 10, 2015 3:50:54 下午 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [springmvc] in context with path [/bhr] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause
java.lang.NullPointerException
at org.bhr.dao.impl.BaseDaoImpl.getSession(BaseDaoImpl.java:134)
at org.bhr.dao.impl.BaseDaoImpl.getPageBean(BaseDaoImpl.java:107)
at org.bhr.util.HqlHelper.buildPageBean(HqlHelper.java:148)
at org.bhr.web.controller.AdminInfoController.home(AdminInfoController.java:50)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:781)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:721)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2442)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2431)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:722)
dao层实现类:
/**
@date 2015年2月26日 下午3:27:15
*/
@SuppressWarnings("unchecked")
public abstract class BaseDaoImpl implements BaseDao{
@Resource
private SessionFactory sessionFactory;
protected Class clazz;
public BaseDaoImpl() {
ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass();
this.clazz = (Class) pt.getActualTypeArguments()[0];
System.out.println("class = " + clazz.getName()+" init over");
}
public void save(T entity) {
getSession().persist(entity);
}
public void update(T entity) {
getSession().update(entity);
}
public void delete(ID id) {
Object obj = getSession().get(clazz, id);
if(obj!=null) getSession().delete(obj);
}
public T getById(ID id) {
if (id == null) {
return null;
}
return (T) getSession().get(clazz, id);
}
public T loadById(ID id) {
if (id == null) {
return null;
}
return (T) getSession().load(clazz, id);
}
public List getByIds(ID[] ids) {
if (ids == null || ids.length == 0) {
return Collections.EMPTY_LIST;
}
List<T> list = getSession().createQuery(//
"FROM " + clazz.getSimpleName() + " WHERE id IN(:ids)")//
.setParameterList("ids", ids)//
.list();
if(list == null) return Collections.EMPTY_LIST;
return list;
}
public List getAll() {
List list = getSession().createQuery(//
"FROM " + clazz.getSimpleName())//
.list();
if(list == null) return Collections.EMPTY_LIST;
return list;
}
public Long getCount(){
return (Long)getSession().createQuery(//
"SELECT COUNT(*) FROM "+ clazz.getSimpleName())//
.uniqueResult();//
}
public List getByHQL(String strHQL, Object... params) {
Query query = getSession().createQuery(strHQL);
if (params!=null){
for (int i = 0; i < params.length; i++){
query.setParameter(i, params[i]);
}
}
return query.list();
}
public PageBean getPageBean(int pageNum,int pageSize,HqlHelper hqlHelper) {
System.out.println("pageNum:"+pageNum);
System.out.println("pageSize:"+pageSize);
System.out.println("BaseDaoImpl:"+hqlHelper);
List parameters = hqlHelper.getParameters();
System.out.println("parameters:"+parameters);
System.out.println("@@@@"+hqlHelper.getQueryListHql());
// 查询本页的数据列表
Query listQuery = getSession().createQuery(hqlHelper.getQueryListHql());
if (parameters != null && parameters.size() > 0) { // 设置参数
for (int i = 0; i < parameters.size(); i++) {
listQuery.setParameter(i, parameters.get(i));
}
}
listQuery.setFirstResult((pageNum - 1) * pageSize);
listQuery.setMaxResults(pageSize);
List list = listQuery.list(); // 执行查询
// 查询总记录数
Query countQuery = getSession().createQuery(hqlHelper.getQueryCountHql());
if (parameters != null && parameters.size() > 0) { // 设置参数
for (int i = 0; i < parameters.size(); i++) {
countQuery.setParameter(i, parameters.get(i));
}
}
Long count = (Long) countQuery.uniqueResult(); // 执行查询
return new PageBean(pageNum, pageSize, list, count.intValue());
}
protected Session getSession() {
// if (null==sessionFactory.getCurrentSession()){
// System.out.println("open获取session:"+sessionFactory.openSession());
// return sessionFactory.openSession();
// }
System.out.println("sessionFactory="+sessionFactory);
System.out.println("get获取session:"+sessionFactory.getCurrentSession());
return sessionFactory.getCurrentSession();
}
}
spring配置文件:
<?xml version="1.0" encoding="UTF-8"?>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.1.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.1.xsd ">
<!-- TODO -->
<context:component-scan base-package="org.bhr.dao" />
<context:component-scan base-package="org.bhr.service" />
<!-- TODO -->
<context:property-placeholder location="classpath:local_db.properties" />
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="user" value="${jdbc.user}"></property>
<property name="password" value="${jdbc.password}"></property>
<property name="driverClass" value="${jdbc.driverClass}"></property>
<property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
<property name="initialPoolSize" value="${jdbc.initPoolSize}"></property>
<property name="maxPoolSize" value="${jdbc.maxPoolSize}"></property>
<property name="testConnectionOnCheckin" value="true"></property>
<property name="automaticTestTable" value="C3P0TestTable"></property>
<property name="idleConnectionTestPeriod" value="18000"></property>
<property name="maxIdleTime" value="25000"></property>
<property name="testConnectionOnCheckout" value="true"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
<!-- TODO -->
<property name="mappingLocations" value="classpath:org/bhr/po/*.hbm.xml"></property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<!-- TODO -->
<tx:attributes>
<tx:method name="get*" read-only="true" />
<tx:method name="find*" read-only="true" />
<tx:method name="verify*" read-only="true" />
<tx:method name="*" />
</tx:attributes>
</tx:advice>
<aop:config>
<!-- TODO -->
<aop:pointcut expression="execution(* org.bhr.service.*.*(..))"
id="txPointcut" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut" />
</aop:config>
报错信息:
当前页:1
每页显示记录大小:5
hql语句org.bhr.util.HqlHelper@1784aed1
class = java.io.Serializable init over
pageNum:1
pageSize:5
BaseDaoImpl:org.bhr.util.HqlHelper@1784aed1
parameters:[]
@@@@FROM WarnInfo o
sessionFactory=null
十二月 10, 2015 3:50:54 下午 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [springmvc] in context with path [/bhr] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause
java.lang.NullPointerException
at org.bhr.dao.impl.BaseDaoImpl.getSession(BaseDaoImpl.java:134)
at org.bhr.dao.impl.BaseDaoImpl.getPageBean(BaseDaoImpl.java:107)
at org.bhr.util.HqlHelper.buildPageBean(HqlHelper.java:148)
at org.bhr.web.controller.AdminInfoController.home(AdminInfoController.java:50)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:781)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:721)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2442)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2431)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:722)