SpringMVC + Hibernate整合

本文介绍了一个基于SpringMVC的项目配置示例,详细展示了springmvc.xml中控制器、视图解析器等组件的配置方式,同时在spring.xml中说明了如何进行DAO、Service层的组件扫描及依赖注入。

一springmvc.xml

整合的时候不要和springmvc的自动扫描包重复了,会冲突

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:context="http://www.springframework.org/schema/context"
   xmlns:mvc="http://www.springframework.org/schema/mvc"
   xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
   	http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
   	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd">

   <context:component-scan
   	base-package="com.znsd.vote.controllers" />
   <context:component-scan
   	base-package="com.znsd.vote.views" />
   <context:component-scan
   	base-package="com.znsd.vote.actions" />

   <!-- 直接配置对应的视图访问路径 -->
   <mvc:view-controller path="/vote_all.html"
   	view-name="vote_all" />
   
   <mvc:view-controller path="/vote_add.html"
   	view-name="vote_add" />
   <mvc:view-controller path="/vote_maintain.html"
   	view-name="vote_maintain" />
   <mvc:view-controller path="/vote_record.html"
   	view-name="vote_record" />
   <mvc:view-controller path="/user_information.html"
   	view-name="user_information" />

   <!-- 如果配置了mvc-controller会导致其它页面没法正常访问,还需要添加一个标签 -->
   <mvc:annotation-driven />

   <mvc:default-servlet-handler />


   <!-- 自定义视图解析器,使用order来配置优先级,数字越小,优先级越高。 -->
   <bean
   	class="org.springframework.web.servlet.view.BeanNameViewResolver">
   	<property name="order" value="1"></property>
   </bean>


   <!-- 配置视图解析器 将视图返回字符串解析到:/WEB-INF/view/返回值.jsp 下 -->
   <bean
   	class="org.springframework.web.servlet.view.InternalResourceViewResolver">
   	<property name="prefix" value="/WEB-INF/pages/"></property>
   	<property name="suffix" value=".jsp"></property>
   </bean>
</beans>

spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	default-autowire="byName"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd" >
		
		
		<context:component-scan base-package="com.znsd.vote.json" />
		<context:component-scan base-package="com.znsd.vote.dao.impl" />
		<context:component-scan base-package="com.znsd.vote.service.impl" />
		<context:component-scan base-package="com.znsd.vote.interceptor" />
		<context:component-scan base-package="com.znsd.vote.hibernate.interceptor" />
		

	<!-- actions -->
	
	<!--<bean id="loginPostAction" class="com.znsd.vote.actions.LoginPostAction" scope="prototype"/>
	<bean id="registerPostAction" class="com.znsd.vote.actions.RegisterPostAction" scope="prototype"/>
	<bean id="testAction" class="com.znsd.vote.actions.TestAction" scope="prototype"/>
	<bean id="pactackAction" class="com.znsd.vote.actions.PartackAction" scope="prototype"/>
	<bean id="imageAction" class="com.znsd.vote.actions.ImageAction" scope="prototype"/>
	<bean id="pactackResultAction" class="com.znsd.vote.actions.PactackResultAction" scope="prototype" />
	 -->
	
	<!-- dao  -->
	<!-- <bean id="userDao" class="com.znsd.vote.dao.impl.UserDaoImpl" />
	<bean id="itemDao" class="com.znsd.vote.dao.impl.ItemDaoImpl" />
	<bean id="navigationDao" class="com.znsd.vote.dao.impl.NavigationDaoImpl" />
	<bean id="optionDao" class="com.znsd.vote.dao.impl.OptionDaoImpl" />
	<bean id="personDao" class="com.znsd.vote.dao.impl.PersonDaoImpl" />
	<bean id="subjectDao" class="com.znsd.vote.dao.impl.SubjectDaoImpl" />
	 -->
	
	<!-- service -->
<!-- 	<bean id="userService" class="com.znsd.vote.service.impl.UserServiceImpl" />
	<bean id="itemService" class="com.znsd.vote.service.impl.ItemServiceImpl" />
	<bean id="subjectService" class="com.znsd.vote.service.impl.SubjectServiceImpl" />
	<bean id="optionService" class="com.znsd.vote.service.impl.OptionServiceImpl" />
	<bean id="personService" class="com.znsd.vote.service.impl.PersonServiceImpl" />
	<bean id="navigationService" class="com.znsd.vote.service.impl.NavigationServiceImpl" />
	 -->
	
</beans>

整合的时候BaseDaoImpl

package com.znsd.vote.dao.impl;

import java.io.Serializable;
import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate4.HibernateCallback;
import org.springframework.orm.hibernate4.support.HibernateDaoSupport;

import com.znsd.vote.dao.BaseDao;

public class BaseDaoImpl<T> extends HibernateDaoSupport implements BaseDao<T> {
	
	
    @Autowired  
    public void setSessionFactoryOverride(SessionFactory sessionFactory)  
    {  
        super.setSessionFactory(sessionFactory);  
    }  
	
	@Override
	public int add(T t) {
		try {
			this.getHibernateTemplate().save(t);
			return 1;
		} catch (Exception e) {
			e.printStackTrace();
			return 0;
		}
	}

	@Override
	public int update(T t) {
		try {
			this.getHibernateTemplate().update(t);
			return 1;
		} catch (Exception e) {
			e.printStackTrace();
			return 0;
		}
	}

	@Override
	public List<T> findAll(String hql, String[] paramNames, Object[] values) {
		List<T> list = null;
		if (paramNames == null) {
			list = (List<T>) this.getHibernateTemplate().find(hql);
		} else {
			list = (List<T>) this.getHibernateTemplate().findByNamedParam(hql, paramNames, values);
		}
		return list;
	}
	
	@Override
	public List<Object[]> findObject(String hql, String[] paramNames, Object[] values) {
		List<Object[]> list = null;
		if (paramNames == null) {
			list = (List<Object[]>) this.getHibernateTemplate().find(hql);
		} else {
			list = (List<Object[]>) this.getHibernateTemplate().findByNamedParam(hql, paramNames, values);
		}
		return list;
	}

	@Override
	public T uniqueResult(String hql, String[] paramNames, Object[] values) {
		List<T> list = null;
		if (paramNames.length != 0) {
			list = (List<T>) this.getHibernateTemplate().findByNamedParam(hql, paramNames, values);
		} else {
			list = (List<T>) this.getHibernateTemplate().find(hql);
		}
		return list.get(0);
	}

	@Override
	public long uniqueResult(Class<T> clazz, String where, String[] paramsNames, Object[] values) {
		String hql = "select count(1) from " + clazz.getSimpleName();

		if (where != null) {
			hql += " "+where;
		}
		List list = null;
		if (paramsNames != null) {
			list = this.getHibernateTemplate().findByNamedParam(hql, paramsNames, values);
		} else {
			list = this.getHibernateTemplate().find(hql);
		}
		long l = Long.valueOf(list.get(0).toString());
		return l;
	}

	@Override
	public List<T> findAll(Class<T> clazz) {
		String hql = "from " + clazz.getSimpleName();
		return (List<T>) this.getHibernateTemplate().find(hql);
	}

	@Override
	public T get(Class<T> clazz, Serializable id) {
		return this.getHibernateTemplate().get(clazz, id);
	}

	@Override
	public T get(T entity) {
		List<T> list = this.getHibernateTemplate().findByExample(entity);
		return list.get(0);
	}

	@Override
	public void delete(T t) {
		this.getHibernateTemplate().delete(t);
	}

	@Override
	public List<T> findAll(String hql, String[] paramNames, Object[] values, int pageIndex, int pageSize) {
		List<T> list = this.getHibernateTemplate().execute(new HibernateCallback<List<T>>() {
			@Override
			public List<T> doInHibernate(Session session) throws HibernateException {
				Query query = session.createQuery(hql);
				if (paramNames != null) {
					for (int i = 0; i < paramNames.length; i++) {
						query.setParameter(paramNames[i], values[i].toString());
					}
				}
				query.setFirstResult((pageIndex - 1) * pageSize);
				query.setMaxResults(pageSize);
				return query.list();
			}
		});
		return list;
	}

	@Override
	public List<Object> findAllObject(String hql, String[] paramNames, Object[] values) {
		List<Object> list = null;
		if (paramNames == null) {
			list = (List<Object>) this.getHibernateTemplate().find(hql);
		} else {
			list = (List<Object>) this.getHibernateTemplate().findByNamedParam(hql, paramNames, values);
		}
		return list;
	}

	@Override
	public void clear() {
		this.getHibernateTemplate().clear();
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值