SSH与SSM学习之SSH整合08——Spring整合Hibernate环境操作数据库

来源:互联网 发布:软件设计师难考吗 编辑:程序博客网 时间:2024/06/05 05:00

  • SSH与SSM学习之SSH整合08Spring整合Hibernate环境操作数据库
    • 一整合说明
    • 二UserDao
      • 1 UserDao
      • 2 UserDaoImpl
    • 三Spring中配置
    • 四测试与结果
      • 1 测试代码
      • 2 结果
    • 五源码下载

SSH与SSM学习之SSH整合08——Spring整合Hibernate环境操作数据库

一、整合说明

这里整合其实主要就是 DAO 的操作。DAO操作的时候,我们可以有两种方式的操作。

第一种 就是我们像平时一样创建一个DAO的实现类,包含一个 HibernateTemplate 的对象,

在Spring中配置的时候,注入 HibernateTemplate 的实例。当然 HibernateTemplate 中

包含了一个 SessionFactory 的对象,我们也需要自己出入,这样就需要注入两步。

第二种 就是我们像平时一样创建一个DAO的实现类,并且让它继承自 HibernateDaoSupport

在Spring中配置的时候,我们只需要注入 SessionFactory 就行了。

下面我们使用的是第二种。


二、UserDao

2.1 UserDao

package com.qwm.ssh_crm.dao;import com.qwm.ssh_crm.domain.User;/** * @author:qiwenming * @date:2017/11/4 0004   17:24 * @description: */public interface UserDao {    //根据登陆名称查询user对象    User getByUserCode(String usercode);    //保存用户    void save(User u);}

2.2 UserDaoImpl

package com.qwm.ssh_crm.dao.impl;import com.qwm.ssh_crm.dao.UserDao;import com.qwm.ssh_crm.domain.User;import org.hibernate.HibernateException;import org.hibernate.Session;import org.hibernate.criterion.DetachedCriteria;import org.hibernate.criterion.Restrictions;import org.hibernate.query.Query;import org.springframework.orm.hibernate5.HibernateCallback;import org.springframework.orm.hibernate5.support.HibernateDaoSupport;import java.util.List;/** * @author:qiwenming * @date:2017/11/4 0004   17:25 * @description: */public class UserDaoImpl extends HibernateDaoSupport implements UserDao{//    @Override//    public User getByUserCode(String usercode) {//        //HQL方式查询//        return getHibernateTemplate().execute(new HibernateCallback<User>() {//            @Override//            public User doInHibernate(Session session) throws HibernateException {//                String sql = "from User where user_code=?";//                Query query = session.createQuery(sql);//                query.setParameter(0,usercode);//                User user = (User)query.uniqueResult();//                return user;//            }//        });//    }    @Override    public User getByUserCode(String usercode) {        //Criteria 方式查询        //是一个离线 Criteria        DetachedCriteria dc = DetachedCriteria.forClass(User.class);        dc.add(Restrictions.eq("user_code",usercode));        List<User> list = (List<User>) getHibernateTemplate().findByCriteria(dc);        if(list!=null && list.size()>0)            return list.get(0);        return null;    }    @Override    public void save(User u) {        getHibernateTemplate().save(u);    }}

三、Spring中配置

最主要的配置

   <!--dao配置-->    <bean name="userDao" class="com.qwm.ssh_crm.dao.impl.UserDaoImpl">        <property name="sessionFactory" ref="sessionFactory"/>    </bean>

完整的 applicationContext.xml配置

<?xml version="1.0" encoding="UTF-8" ?><beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xmlns="http://www.springframework.org/schema/beans"       xmlns:context="http://www.springframework.org/schema/context"       xsi:schemaLocation="http://www.springframework.org/schema/beans            http://www.springframework.org/schema/beans/spring-beans-4.3.xsd            http://www.springframework.org/schema/context            http://www.springframework.org/schema/context/spring-context-4.3.xsd ">    <!--Action配置 手动组装依赖  必须配置为多例模式-->    <bean name="userAction" class="com.qwm.ssh_crm.web.action.UserAction" scope="prototype">        <property name="userService" ref="userService"/>    </bean>    <!--Service配置-->    <bean name="userService" class="com.qwm.ssh_crm.service.UserServiceImpl"/>    <!-- 指定spring读取db.properties配置 -->    <context:property-placeholder location="classpath:db.properties"/>    <!-- 将连接池放入spring容器 -->    <bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">        <property name="jdbcUrl" value="${jdbc.jdbcUrl}"/>        <property name="driverClass" value="${jdbc.driverClass}"/>        <property name="user" value="${jdbc.user}"/>        <property name="password" value="${jdbc.password}"/>    </bean>    <bean name="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">        <!--装配连接池-->        <property name="dataSource" ref="dataSource"/>        <property name="hibernateProperties">            <props>                <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>                <!--  可选配置 -->                <prop key="hibernate.show_sql">true</prop>                <prop key="hibernate.format_sql">true</prop>                <prop key="hibernate.hbm2ddl.auto">update</prop>            </props>        </property>        <!-- 引入orm元数据,指定orm元数据所在的包路径,spring会自动读取包中的所有配置 -->        <property name="mappingDirectoryLocations" value="classpath:com/qwm/ssh_crm/domain"></property>    </bean>    <!--dao配置-->    <bean name="userDao" class="com.qwm.ssh_crm.dao.impl.UserDaoImpl">        <property name="sessionFactory" ref="sessionFactory"/>    </bean></beans>

四、测试与结果

4.1 测试代码

package com.qwm.test;import com.qwm.ssh_crm.dao.UserDao;import com.qwm.ssh_crm.domain.User;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import javax.annotation.Resource;/** * @author:qiwenming * @date:2017/11/4 0004   17:38 * @description: */@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration("classpath:applicationContext.xml")public class DaoTest {    @Resource(name = "userDao")    private UserDao ud;    /**     * UserDao中 get测试     */    @Test    public void test1(){        User user = ud.getByUserCode("wm");        System.out.println(user);    }}

4.2 结果

Hibernate:    alter table cst_linkman       add constraint FKh9yp1nql5227xxcopuxqx2e7q       foreign key (lkm_cust_id)       references cst_customer (cust_id)Hibernate:    select        this_.user_id as user_id1_2_0_,        this_.user_code as user_cod2_2_0_,        this_.user_name as user_nam3_2_0_,        this_.user_password as user_pas4_2_0_,        this_.user_state as user_sta5_2_0_    from        sys_user this_    where        this_.user_code=?User [user_id=1, user_code=wm, user_name=wiming, user_password=123456]

五、源码下载

https://github.com/wimingxxx/ssh_crm

阅读全文
0 0
原创粉丝点击