package com.org.service.impl;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.org.dao.UserDao;
import com.org.entity.User;
import com.org.service.UserService;
/**
*@Author:liangjilong
*@Date:2014-2-25
*@Version:1.0
*@Description:
*/
@Service
public class UserServiceImpl implements UserService{
@Resource//@Autowired
private UserDao userDao;
public List<User> getListUsers() {
return userDao.getListUsers();
}
}
package com.org.action;
import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import com.org.entity.User;
import com.org.service.UserService;
import com.org.utils.servlet.ServletUtils;
/**
*@Author:liangjilong
*@Date:2014-2-25
*@Version:1.0
*@Description:
*/
@Controller
public class UserController{
@Resource
private UserService userService;
@RequestMapping(value="/userList1.do")
public String geUserList1(HttpServletRequest request ,HttpServletResponse response) throws Exception {
List<User> lists=userService.getListUsers();
if(lists!=null){
//request.setAttribute("userList", lists);
ServletUtils.setRequestValue("userList", lists);
}
return "/user/userList";//user文件下的userList.jsp
}
@RequestMapping(value="/userList2.do")
public ModelAndView geUserList2(HttpServletRequest request ,HttpServletResponse response) throws Exception {
List<User> lists=userService.getListUsers();
if(lists!=null){
//request.setAttribute("userList", lists);
ServletUtils.setRequestValue("userList", lists);
}
return new ModelAndView("/user/userList");
}
}
package com.org.dao;
import java.util.List;
import com.org.entity.User;
/**
*@Author:liangjilong
*@Date:2014-2-25
*@Version:1.0
*@Description:
*/
public interface UserDao {
public List<User> getListUsers();
}
package com.org.dao.impl;
import java.util.List;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;
import com.org.HibernateDaoImpl;
import com.org.dao.UserDao;
import com.org.entity.User;
/**
*@Author:liangjilong
*@Date:2014-2-25
*@Version:1.0
*@Description:
*/
@Repository//@Component
@SuppressWarnings("all")
public class UserDaoImpl extends HibernateDaoImpl implements UserDao {
public List<User> getListUsers() {
String hql="From User";
//List<User> lists=hibernateTemplate.find(hql);//方法一
List<User> lists=getHibernateTemplate().find(hql);//方法二
return lists;
}
}
package com.org.service;
import java.util.List;
import com.org.entity.User;
/**
*@Author:liangjilong
*@Date:2014-2-25
*@Version:1.0
*@Description:
*/
public interface UserService {
public List<User> getListUsers();
}
package com.org;
import java.io.Serializable;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import org.apache.commons.lang3.StringUtils;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
public class HibernateDaoImpl extends HibernateDaoSupport implements
IHibernateDao {
/**
* 这个和整合ibatis是一样的
*/
@Resource(name = "hibernateTemplate")
protected HibernateTemplate hibernateTemplate;
@PostConstruct
public void initHibernateTemplate() {
super.setHibernateTemplate(hibernateTemplate);
}
public Integer count(final String hql) {
if (StringUtils.isEmpty(hql)) {
throw new IllegalStateException("hql is null");
}
Object result = this.getHibernateTemplate().execute(
new HibernateCallback<Object>() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
return session.createQuery(hql).uniqueResult();
}
});
return ((Long) result).intValue();
}
public int bulkUpdate(String queryString, Object[] values) {
return getHibernateTemplate().bulkUpdate(queryString, values);
}
public <E> void deleteAll(Collection<E> entities) {
getHibernateTemplate().deleteAll(entities);
}
public Integer count(final String hql, final Object... obj) {
if (ObjectUtils.isEmpty(obj)) {
return count(hql);
} else {
if (StringUtils.isEmpty(hql)) {
throw new IllegalStateException("hql is null");
}
Object result = this.getHibernateTemplate().execute(
new HibernateCallback<Object>() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery(hql);
for (int i = 0; i < obj.length; i++) {
query.setParameter(i, obj[i]);
}
return query.uniqueResult();
}
});
return ((Long) result).intValue();
}
}
public <E> void delete(E entity) {
getHibernateTemplate().delete(entity);
}
public <E> boolean exist(Class<E> c, Serializable id) {
if (get(c, id) != null)
return true;
return false;
}
public <E> List<E> find(String queryString) {
return getHibernateTemplate().find(queryString);
}
public <E> List<E> find(Class<E> bean) {
String hql = "FROM " + bean.getSimpleName();
return find(hql);
}
public List<?> find(String queryString, Object[] values) {
if (ObjectUtils.isEmpty(values)) {
return find(queryString);
} else {
return getHibernateTemplate().find(queryString, values);
}
}
public <E> E findUniqueEntity(final String queryString,
final Object... params) {
if (StringUtils.isEmpty(queryString)) {
throw new IllegalStateException("queryString is null");
}
if (ObjectUtils.isEmpty(params)) {
return (E) getHibernateTemplate().execute(
new HibernateCallback<Object>() {
public Object doInHibernate(Session session) {
return session.createQuery(queryString)
.uniqueResult();
}
});
} else {
return (E) getHibernateTemplate().execute(
new HibernateCallback<Object>() {
public Object doInHibernate(Session session) {
Query query = session.createQuery(queryString);
for (int i = 0; i < params.length; i++) {
query.setParameter(i, params[i]);
}
return query.uniqueResult();
}
});
}
}
public <E> List<E> findByNamedQuery(String queryName) {
if (StringUtils.isEmpty(queryName)) {
throw new IllegalArgumentException("queryName is null");
}
return getHibernateTemplate().findByNamedQuery(queryName);
}
public <E> List<E> findByNamedQuery(String queryName, Object... values) {
if (ObjectUtils.isEmpty(values)) {
return this.findByNamedQuery(queryName);
}
return getHibernateTemplate().findByNamedQuery(queryName, values);
}
public <E> List<E> findByPage(final String hql, final Integer startRow,
final Integer pageSize, final Object... params) {
if (StringUtils.isEmpty(hql)) {
throw new IllegalStateException("hql is null");
}
if (ObjectUtils.isEmpty(params)) {
return getHibernateTemplate().executeFind(
new HibernateCallback<Object>() {
public Object doInHibernate(Session session) {
return session.createQuery(hql)
.setFirstResult(startRow)
.setMaxResults(pageSize).list();
}
});
} else {
return getHibernateTemplate().executeFind(
new HibernateCallback<Object>() {
public Object doInHibernate(Session session) {
Query query = session.createQuery(hql);
for (int i = 0; i < params.length; i++) {
query.setParameter(i, params[i]);
}
return query.setFirstResult(startRow)
.setMaxResults(pageSize).list();
}
});
}
}
public <E> E get(Class<E> entityClass, Serializable id) {
this.getHibernateTemplate().setCacheQueries(true);
return this.getHibernateTemplate().get(entityClass, id);
}
public <E> Iterator<E> iterate(String queryString) {
return getHibernateTemplate().iterate(queryString);
}
public <E> Iterator<E> iterate(String queryString, Object... values) {
return getHibernateTemplate().iterate(queryString, values);
}
public <E> E load(Class<E> entityClass, Serializable id) {
return getHibernateTemplate().load(entityClass, id);
}
public <E> void persist(E entity) {
getHibernateTemplate().persist(entity);
}
public <E> void refresh(E entity) {
getHibernateTemplate().refresh(entity);
}
public <E> Serializable save(E entity) {
if (entity == null) {
throw new IllegalArgumentException("entity is null");
}
return getHibernateTemplate().save(entity);
}
public <E> void saveOrUpdate(E entity) {
getHibernateTemplate().saveOrUpdate(entity);
}
public <E> void saveOrUpdateAll(Collection<E> entities) {
getHibernateTemplate().saveOrUpdateAll(entities);
}
public <E> void update(E entity) {
getHibernateTemplate().update(entity);
}
public <T> void updateAll(Collection<T> entities) {
if (CollectionUtils.isEmpty(entities)) {
throw new IllegalArgumentException("entities is null");
}
int i = 0;
for (Object obj : entities) {
if (i % 30 == 0) {
getHibernateTemplate().flush();
getHibernateTemplate().clear();
}
getHibernateTemplate().update(obj);
i++;
}
}
public <E> void saveAll(Collection<E> entities) {
if (CollectionUtils.isEmpty(entities)) {
throw new IllegalArgumentException("entities is null");
}
int i = 0;
for (E obj : entities) {
if (i % 30 == 0) {
getHibernateTemplate().flush();
getHibernateTemplate().clear();
}
save(obj);
i++;
}
}
public <E> List<E> findByPage(String queryString, PageModel pageModel,
List<?> params) {
String hql = queryString;
if (queryString.toLowerCase().indexOf("where") == -1) {
Matcher m = Pattern.compile("and").matcher(queryString);
if (m.find()) {
hql = m.replaceFirst("where");
} else {
m = Pattern.compile("AND").matcher(queryString);
if (m.find()) {
hql = m.replaceFirst("WHERE");
}
}
}
int fromIndex = hql.toLowerCase().indexOf("from");
int orderIndex = hql.toLowerCase().indexOf("group by");
String hqlCount = "select count(*) "
+ hql.substring(fromIndex,
orderIndex > 0 ? orderIndex : hql.length());
int totalCount = (params == null || params.isEmpty()) ? count(hqlCount)
: count(hqlCount, params.toArray());
pageModel.setRecordCount(totalCount);
if (totalCount == 0) {
return new ArrayList<E>();
}
Object[] temps = (params == null || params.isEmpty()) ? new Object[] {}
: params.toArray();
return this.findByPage(hql, pageModel.getStartRow(),
pageModel.getPageSize(), temps);
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
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"
xmlns:oscache="http://www.springmodules.org/schema/oscache"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
http://www.springmodules.org/schema/oscache
http://www.springmodules.org/schema/cache/springmodules-oscache.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">
<!--
对web包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能
mvc:annotation-driven
-->
<mvc:annotation-driven/>
<!-- 扫描包 -->
<context:annotation-config/>
<context:component-scan base-package="com.org.*" />
<bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
<!-- 配置jdbc -->
<bean class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer">
<property name="locations">
<value>classpath:properties/jdbc.properties</value>
</property>
</bean>
<!-- 配置數據源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<!-- 连接池启动时的初始值 -->
<property name="initialSize" value="1"/>
<property name="maxActive" value="500"/>
<property name="maxIdle" value="2"/>
<property name="minIdle" value="1"/>
</bean>
<!-- 配置sessionFactory
注解配置
org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean
配置形式:
org.springframework.orm.hibernate3.LocalSessionFactoryBean
-->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="packagesToScan">
<list>
<value>com.org.entity</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
<!-- 配置hibernateTemplate -->
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- Spring AOP config配置切点 -->
<aop:config>
<aop:pointcut expression="execution(public * com.org.service.*.*(..))"
id="bussinessService" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="bussinessService" />
</aop:config>
<!-- 配置那个类那个方法用到事务处理 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="get*" read-only="true" />
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="delete*" propagation="REQUIRED" />
<tx:method name="*" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
<!-- 这个映射配置主要是用来进行静态资源的访问 -->
<mvc:resources mapping="/js/**" location="/js/" cache-period="31556926"/>
<mvc:resources mapping="/resource/**" location="/resource/" />
<mvc:resources mapping="/jsp/**" location="/jsp/" />
</beans>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<!--
#####################################配置处理乱码#####################################
-->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--
#####################################Spring MVC配置#################################
application-servlet.xml,规定:xxx-servlet.xml
-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<!--
param-name必须要等于contextConfigLocation
默认的配置
<param-value>/WEB-INF/applicationContext-*.xml,classpath*:applicationContext-*.xml</param-value>
-->
<param-value>classpath:spring-*.xml</param-value>
</context-param>
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-*.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<!--
#####################################struts2配置#######################################
-->
<!-- 此配置在使用struts2 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--
################################使用freemaker模板中启动JSPSupportServlet#############################
<servlet>
<servlet-name>JspSupportServlet</servlet-name>
<servlet-class>org.apache.struts2.views.JspSupportServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
-->
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>



本文详细介绍了如何将Java Spring MVC与Hibernate框架集成,并通过实际案例演示了如何使用Spring MVC进行请求处理、数据访问层操作及事务管理,以及如何在用户列表页面展示数据。

被折叠的 条评论
为什么被折叠?



