Spring+Hibernate整合案例 (HibernateTemplate)

本文详细介绍了Spring与Hibernate框架的整合应用,通过具体案例演示了如何使用HibernateTemplate进行数据库操作,包括查询、添加、修改和删除等核心功能,并展示了如何在Spring环境中配置数据源、事务管理和DAO层实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring+Hibernate整合案例 (HibernateTemplate)


还是案例来说

实体类一个


public class NewUserTable implements java.io.Serializable {

	private Integer userId;
	private String userName;
	private String userSex;
	private Integer userAge;
	private Date userBr;
	.....
	
	}
	

dao层实现类


import java.io.Serializable;
import java.util.List;
import org.springframework.orm.hibernate4.HibernateTemplate;
import com.ym.dao.IUserInfo;
import com.ym.entity.NewUserTable;

public class DUserImpl extends HibernateTemplate implements IUserInfo{
	
	/**
	 * 查询
	 */
	@Override
	public List<NewUserTable> queryUserList() {
		
		List<NewUserTable> list=(List<NewUserTable>)super.find("from NewUserTable");
		
		return list;
	}
	
	
	/**
	 * 添加
	 */
	@Override
	public void addUser(NewUserTable user) {
		
		Serializable num=super.save(user);
		System.out.println("addUsers===>>>>"+num);
		
	}

	/**
	 * 修改
	 */
	@Override
	public void updateUser(NewUserTable user) {
	
		super.update(user);

	}
	
	/**
	 * 删除
	 */
	@Override
	public void deleteUser(NewUserTable user) {
	
		super.delete(user);
		
	}

	/**
	 * get获取数据
	 */	
	@Override
	public NewUserTable getUserinfo(int usId) {
		
		return super.get(NewUserTable.class,usId);
	}
	
	/**
	 *  findByNamedQuery 获取数据
	 */	
	@Override
	public List<NewUserTable> querByName(String queryHbmName,String queryPra) {
	
		List<NewUserTable> list=(List<NewUserTable>)super.findByNamedQuery(queryHbmName, queryPra);
		return list;
		
	}
	
	/**
	 *  find获取数据
	 */	
	@Override
	public List<NewUserTable> queryUserList02(String queryString, Object value) {
		
		List<NewUserTable> list=(List<NewUserTable>)super.find(queryString, value);
		return list;
	}

	/**
	 *  find获取数据
	 */		
	@Override
	public List<NewUserTable> queryUserList03(String queryString, Object[] values) {
		
		List<NewUserTable> list=(List<NewUserTable>)super.find(queryString, values);
		return list;
	}
	
	/**
	 *  findByExample获取数据
	 */	
	@Override
	public  List<NewUserTable> i_findByExample(NewUserTable user) {
		
		List<NewUserTable> list=super.findByExample(user);
			
		return list;
	}
	
	/**
	 *  findByExample获取数据
	 * 
	 *  相当于条件查询,你只需要调用方法,传入相应的参数,其他的hibernate会帮你做
	 * 
	 * 	findByExample(): 
	 * 	1.不支持主键 
	 * 	2.不支持关联 
	 * 	3.不支持NULL 
	 */	
	@Override
	public List<NewUserTable> i_findByExample(NewUserTable user, int firstResult, int maxResults) {
		
		List<NewUserTable> list=super.findByExample(user, firstResult, maxResults);
		
		return list;
	}

}

测试类:


import java.util.Date;
import java.util.List;
import org.junit.Test;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.ym.dao.IUserInfo;
import com.ym.entity.NewUserTable;

public class SHTest {

	BeanFactory bf=new ClassPathXmlApplicationContext("applicationContext.xml");
	
	/**
	 * @Description: TODO(返回集合数据)
	 */
	@Test
	public void test01(){	
		IUserInfo iUserInfo=bf.getBean("dUser",IUserInfo.class);		
		List<NewUserTable> list= iUserInfo.queryUserList();
		for (NewUserTable ui : list) {
			System.out.println(ui.toString());
		}	
	}
	
	
	/**
	 * @Description: TODO(增加)
	 */
	@Test
	public void test02(){
		
		IUserInfo iUserInfo=bf.getBean("dUser",IUserInfo.class);
		NewUserTable user=new NewUserTable("小白", "男", 20, new Date());
		
		iUserInfo.addUser(user);
		
	}
	
	/**
	 * @Description: TODO(删除)
	 */
	@Test
	public void test03(){
		
		IUserInfo iUserInfo=bf.getBean("dUser",IUserInfo.class);
		NewUserTable user=new NewUserTable();
		user.setUserId(4);
		iUserInfo.deleteUser(user);
		
	}
	
	/**
	 * @Description: TODO(修改
	 */
	@Test
	public void test04(){
		
		IUserInfo iUserInfo=bf.getBean("dUser",IUserInfo.class);
		NewUserTable user=new NewUserTable("小白", "女", 18, new Date());
		user.setUserId(1);
		iUserInfo.updateUser(user);
		
	}
	
	/**
	 * @Description: TODO(get 获取某个对象)
	 */
	@Test
	public void test05(){
		
		IUserInfo iUserInfo=bf.getBean("dUser",IUserInfo.class);
		NewUserTable user=iUserInfo.getUserinfo(1);
		System.out.println(user.toString());
		
	}
	
	/**
	  * @Description: TODO(findByNamedQuery 查询)
	 */
	@Test
	public void test06(){
		
		IUserInfo iUserInfo=bf.getBean("dUser",IUserInfo.class);
		
		List<NewUserTable> list=iUserInfo.querByName("queryByName", "小白");
		for (NewUserTable ui : list) {
			System.out.println(ui.toString());
		}
		
	}
	
	/**
	 * @Description: TODO(查询:find(String queryString , Object value);)
	 */
	@Test
	public void test07(){
		
		IUserInfo iUserInfo=bf.getBean("dUser",IUserInfo.class);
		String hql="from NewUserTable u where u.userName=?";
		//模糊查询
		String hql2="from NewUserTable u where u.userName like ?";
		String userName="李%";
		List<NewUserTable> list=iUserInfo.queryUserList02(hql2, userName);
		for (NewUserTable ui : list) {
			System.out.println(ui.toString());
		}
		
	}
	
	/**
	 * @Description: TODO(查询:find(String queryString, Object[] values);)
	 */
	@Test
	public void test08(){
		
		IUserInfo iUserInfo=bf.getBean("dUser",IUserInfo.class);
		String hql="from NewUserTable u where u.userName=? and u.userSex=?";

		List<NewUserTable> list=iUserInfo.queryUserList03(hql,new Object[]{"李白","男"});
		for (NewUserTable ui : list) {
			System.out.println(ui.toString());
		}
		
	}
	/**
	 * @Description: TODO(查询:findByExample(Object exampleEntity))
	 */
	@Test
	public void test09(){
		
		IUserInfo iUserInfo=bf.getBean("dUser",IUserInfo.class);
		NewUserTable user=new NewUserTable();
					 user.setUserName("李白");
					 user.setUserSex("女");
		List<NewUserTable> list=iUserInfo.i_findByExample(user);
				
		for (NewUserTable ui : list) {
			System.out.println(ui.toString());
		}
		
	}
	/**
	 * 
	 * @Description: TODO(findByExample(Object exampleEntity, int firstResult, int maxResults))
	 */
	@Test
	public void test10(){
		
		IUserInfo iUserInfo=bf.getBean("dUser",IUserInfo.class);
		NewUserTable user=new NewUserTable();
					 user.setUserName("李白");
					 user.setUserSex("女");
		List<NewUserTable> list=iUserInfo.i_findByExample(user,0, 2);
			//这里就相当于:select * from userTable where userName=? and userSex=? limit 0,2	
		for (NewUserTable ui : list) {
			System.out.println(ui.toString());
		}
		
	}
	
}
applicationContext.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"
	xmlns:p="http://www.springframework.org/schema/p"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
						http://www.springframework.org/schema/beans/spring-beans-4.1.xsd 
						http://www.springframework.org/schema/tx 
						http://www.springframework.org/schema/tx/spring-tx.xsd
						http://www.springframework.org/schema/aop
						http://www.springframework.org/schema/aop/spring-aop.xsd">


	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
		<property name="url" value="jdbc:mysql://localhost:3306/hiberdb?userUnicode=true
									&amp;&amp;characterEncoding=utf-8&amp;&amp;serverTimezone=GMT%2B8">
		</property>
		<property name="username" value="root"></property>
		<property name="password" value="154355"></property>
	</bean>
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">
					org.hibernate.dialect.MySQLDialect
				</prop>
				<!-- 显示sql语句 -->
				<prop key="hibernate.show_sql">true</prop>
				<!-- 格式化sql语句 -->
				<prop key="hibernate.format_sql">true</prop>
			</props>
		</property>
		
		<!--注意这里写法和之前的hibernate入门中改变了一下-->
		<property name="mappingResources">
			<list>
				<value>com/ym/entity/NewUserTable.hbm.xml</value></list>
		</property>
		
	</bean>
	
	<!-- 引入事物管理 -->
	<bean id="transactionManager"  class="org.springframework.orm.hibernate4.HibernateTransactionManager">
		<!-- 事物管理的依赖注入 (DI) -->
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>
	<!-- 配置 事务的传播特性 和隔离级别: 切面(AOP) -->
	<tx:advice id="txAdvice" transaction-manager="transactionManager" >
		<tx:attributes>
			<tx:method name="add*" propagation="REQUIRED" isolation="READ_COMMITTED"/>
			<tx:method name="update*" propagation="REQUIRED" isolation="READ_COMMITTED"/>
			<tx:method name="delete*" propagation="REQUIRED" isolation="READ_COMMITTED"/>
			<tx:method name="query*" propagation="REQUIRED" isolation="READ_COMMITTED"/>
			<tx:method name="get*" propagation="REQUIRED" isolation="READ_COMMITTED"/>
			<tx:method name="i_*" propagation="REQUIRED" isolation="READ_COMMITTED"/>
		</tx:attributes>
	</tx:advice>
	<!-- 引入切面通知 -->
	<aop:config>
		<aop:pointcut expression="execution(* com.ym.dao.*.*(..))" id="pc"/>
		<aop:advisor advice-ref="txAdvice" pointcut-ref="pc"/>
	</aop:config>
	
	<!-- 创建 dao类对象 -->
	<bean id="dUser" class="com.ym.dao.impl.DUserImpl">
		<!-- 将HibernateTemplate 注入实现类中 -->
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>
	
	<!-- 创建 NewUserTable对象 -->
	<bean name="newUser" class="com.ym.entity.NewUserTable"></bean>
	</beans>
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值