欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

(crm笔记1-2) Dao层的搭建

程序员文章站 2022-05-08 14:33:53
...

Dao层的搭建

(crm笔记1-2) Dao层的搭建
上一节里面提到的,现在还在搭建dao层的阶段
目录如下:
(crm笔记1-2) Dao层的搭建
首先创建一个共有的Dao层,里面设置共有的方法的接口

package com.huiyu.crm.dao;

public interface ICommonDao<T> {
     public void save(T entity);

}

然后创建实现类:

public class CommonDaoImpl<T> extends HibernateDaoSupport implements ICommonDao<T> {
    @Override
    public void save(T entity) {
        this.getHibernateTemplate().save(entity);
    }
}

里面继承spring里面的HibernateDaoSupport支持类
并通过该类实现接口的方法。

beans.xml的配置


首先我们对beans.xml进行一些基本的配置,配置的代码如下:

    <!-- 配置注解的自动扫描 -->
    <context:component-scan base-package="com.huiyu.crm"></context:component-scan>

    <!-- 配置本地化代理工厂bean,这是spring整合hibernate的入口 -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="configLocation">
            <value>classpath:hibernate.cfg.xml</value>
        </property>
    </bean>

    <!-- 事物管理器     aop切面 -->
    <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>

    <!-- 配置处理事务的注解 -->
    <tx:annotation-driven transaction-manager="txManager"/>

主要是配置一些spring中特有的aop等一些,将事物代理工厂设置好。然后将beans.xml文件中的会话工厂和java文件中的会话工厂相对应,需要更改CommonDaoImpl.java的代码:
增加:

    //通过注解的方式注入sessionfactory
    @Resource(name="sessionFactory")
    public void setSessionFactoryDI(SessionFactory sessionFactory){
        System.out.println("sessionFactory+"+sessionFactory);
        //调用父类,hibernateDaoSupport中的setSessionFactory方法,注入sessionFactory
        super.setSessionFactory(sessionFactory);
    }

然后就开始对Dao层代码进行完善。主要是完成右边的两个代码文件:ISysUserGroupDao和SysUserGroupDaoImpl
代码如下:
ISysUserGroupDao .java

public interface ISysUserGroupDao extends ICommonDao<SysUserGroup>{

    public final static String  SERVICE_NAME="com.huiyu.crm.dao.impl.SysUserGroupDaoImpl"; 

}

SysUserGroupDaoImpl .java

@Repository(ISysUserGroupDao.SERVICE_NAME)
public class SysUserGroupDaoImpl extends CommonDaoImpl<SysUserGroup> implements ISysUserGroupDao{

}

这样就实现了整个Dao层如最上图所示的架构。下面进行junit单元测试
测试类:

public class TestSysUserGroupDao {
    @Test
    public void testSave() {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
        ISysUserGroupDao sysUserGroupDao = (ISysUserGroupDao) ctx
                .getBean(ISysUserGroupDao.SERVICE_NAME);
//插入数据
        SysUserGroup sysUserGroup = new SysUserGroup();
        sysUserGroup.setId(2);
        sysUserGroup.setIncumbent("销售部");
        sysUserGroup.setName("李四");
        sysUserGroup.setPrincipal("张三");
        sysUserGroup.setRemark("no remark");

        sysUserGroupDao.save(sysUserGroup);
    }
}

这里运行junit单元会发现运行出现输入如下:

(crm笔记1-2) Dao层的搭建
这里在数据库中会发现,其实没有数据真正的插入,需要更改一下hibernate配置文件。

<property name="hibernate.connection.autocommit">true</property>

这样就成功运行插入保存数据了。

相关标签: crm