Spring 整合Hibernate 开发实例

 代码:

1.配置文件

 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:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
	http://www.springframework.org/schema/tx 
	http://www.springframework.org/schema/tx/spring-tx-2.0.xsd 
	http://www.springframework.org/schema/aop 
	http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
	
	<!-- 定义BasicDataSource数据源 -->
	<bean id="dataSource"
		class="org.apache.commons.dbcp.BasicDataSource">
		<!-- 指定连接数据库的JDBC驱动 -->
		<property name="driverClassName"
			value="com.mysql.jdbc.Driver">
		</property>
		<!-- 指定数据库所用的url-->
		<property name="url"
			value="jdbc:mysql://localhost:3306/bookshop">
		</property>
		<!-- 指定连接数据库的用户名 -->
		<property name="username" value="root"></property>
		<!-- 指定连接数据库的密码 -->
		<property name="password" value="1234"></property>
	</bean>
	
	<!-- 定义Hibernate的SessionFactory -->
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<!-- 将上面定义的数据源dataSource注入到LocalSessionFactoryBean类的sessionFactory属性  -->
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
		<!-- 设置Hibernate的相关属性 -->
		<property name="hibernateProperties">
			<props>
			    <!-- 设置Hibernate的数据库方言 -->
				<prop key="hibernate.dialect">
					org.hibernate.dialect.MySQLDialect
				</prop>
			</props>
		</property>
	</bean>
	
	<!-- 
	      定义UserDAOImpl类实例,并将已经创建LocalSessionFactoryBean的实例
	  sessionFactory依赖注入到UserDAOImpl类所继承的 HibernateDaoSupport
	     的sessionFactory属性
	 -->
	<bean id="userDAO" class="com.ssh2test1.dao.UserDAOImpl">	
	  <property name="sessionFactory" ref="sessionFactory"/>
	</bean>
	
	<!-- 定义UserBizImpl类实例,并给UserBizImpl类中的userDAO注入值 -->
	<bean id="userBiz" class="com.ssh2test1.biz.UserBizImpl">
	 <property name="userDAO" ref="userDAO" />
	</bean>
	
</beans>

2.编写业务逻辑层

  UserBiz.java

package com.ssh2test1.biz;

import java.util.List;

import com.ssh2test1.entity.Users;

public interface UserBiz {
   public List login(Users condition);
}

  UserBizImpl.java

package com.ssh2test1.biz;

import java.util.List;

import com.ssh2test1.dao.UserDAO;
import com.ssh2test1.entity.Users;

public class UserBizImpl implements UserBiz {

	//使用UserDAO接口声明对象,并添加set方法用于依赖注入
	UserDAO userDAO;
	
	public void setUserDAO(UserDAO userDAO){
		this.userDAO=userDAO;
	}
	public List login(Users condition) {
		// TODO Auto-generated method stub
		return userDAO.search(condition);
	}

}

3.编写数据访问层

  UserDAO.java

package com.ssh2test1.dao;

import java.util.List;

import com.ssh2test1.entity.Users;

public interface UserDAO {
  public List search(Users condition);
}
   UserDAOImpl.java

package com.ssh2test1.dao;

import java.sql.SQLException;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.ssh2test1.entity.Users;

public class UserDAOImpl extends HibernateDaoSupport implements UserDAO {
	public List search(final Users condition) {
		return super.getHibernateTemplate().executeFind(new HibernateCallback(){
			public Object doInHibernate(Session session) throws HibernateException, SQLException {
				// TODO 自动生成方法存根
				Criteria c=session.createCriteria(Users.class);
				if(condition!=null){
					if(condition.getLoginName()!=null && !condition.getLoginName().equals("")){
						c.add(Restrictions.eq("loginName", condition.getLoginName()));
					}
					if(condition.getLoginPwd()!=null && !condition.getLoginPwd().equals("")){
						c.add(Restrictions.eq("loginPwd", condition.getLoginPwd()));
					}
				}
				return c.list();
			}
		});		
	}

}

4.实体类及实体映射文件

  Users.java

package com.ssh2test1.entity;

import java.io.Serializable;

public class Users implements Serializable {
	private Integer id;
	private String loginName;
	private String loginPwd;
	private String name;
	private String address;
	private String phone;
	private String mail;
	private Integer userRoleId;
	private Integer userStateId;
	public Users() {
	}
	public Users(String loginName, String loginPwd, String name,
			String address, String phone, String mail, Integer userRoleId,
			Integer userStateId) {
		this.loginName = loginName;
		this.loginPwd = loginPwd;
		this.name = name;
		this.address = address;
		this.phone = phone;
		this.mail = mail;
		this.userRoleId = userRoleId;
		this.userStateId = userStateId;
	}
	public Integer getId() {
		return this.id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getLoginName() {
		return this.loginName;
	}

	public void setLoginName(String loginName) {
		this.loginName = loginName;
	}

	public String getLoginPwd() {
		return this.loginPwd;
	}

	public void setLoginPwd(String loginPwd) {
		this.loginPwd = loginPwd;
	}

	public String getName() {
		return this.name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getAddress() {
		return this.address;
	}

	public void setAddress(String address) {
		this.address = address;
	}

	public String getPhone() {
		return this.phone;
	}

	public void setPhone(String phone) {
		this.phone = phone;
	}

	public String getMail() {
		return this.mail;
	}

	public void setMail(String mail) {
		this.mail = mail;
	}

	public Integer getUserRoleId() {
		return this.userRoleId;
	}

	public void setUserRoleId(Integer userRoleId) {
		this.userRoleId = userRoleId;
	}

	public Integer getUserStateId() {
		return this.userStateId;
	}

	public void setUserStateId(Integer userStateId) {
		this.userStateId = userStateId;
	}
}

 Users.hbm.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="com.ssh2test1.entity.Users" table="users" catalog="bookshop">
        <id name="id" type="java.lang.Integer">
            <column name="Id" />
            <generator class="native"></generator>
        </id>
        <property name="loginName" type="java.lang.String">
            <column name="LoginName" length="50" />
        </property>
        <property name="loginPwd" type="java.lang.String">
            <column name="LoginPwd" length="16" />
        </property>
        <property name="name" type="java.lang.String">
            <column name="Name" length="16" />
        </property>
        <property name="address" type="java.lang.String">
            <column name="Address" length="16" />
        </property>
        <property name="phone" type="java.lang.String">
            <column name="Phone" length="16" />
        </property>
        <property name="mail" type="java.lang.String">
            <column name="Mail" length="16" />
        </property>
        <property name="userRoleId" type="java.lang.Integer">
            <column name="UserRoleId" />
        </property>
        <property name="userStateId" type="java.lang.Integer">
            <column name="UserStateId" />
        </property>
    </class>
</hibernate-mapping>

5.测试类

  TestSpringHibernate.java

package com.ssh2test1;

import java.util.List;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.ssh2test1.biz.UserBiz;
import com.ssh2test1.entity.Users;

public class TestSpringHibernate {
	public static void main(String[] args) {
		 //加载applicationContext.xml配置
		ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
		//获取配置中的实例
		UserBiz userBiz =(UserBiz)context.getBean("userBiz");
		Users conditon=new Users();
		conditon.setLoginName("admin");
		conditon.setLoginPwd("123456");
		List list=userBiz.login(conditon);
		if(list.size()>0){
			System.out.println("登陆成功");
		}
		else{
			System.out.println("登陆失败");
		}		
	}
}

6.截图

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

潇潇雨歇_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值