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

来源:互联网 发布:静态网页源码 编辑:程序博客网 时间:2024/06/06 06:49

Dao层的搭建

这里写图片描述
上一节里面提到的,现在还在搭建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单元会发现运行出现输入如下:

这里写图片描述
这里在数据库中会发现,其实没有数据真正的插入,需要更改一下hibernate配置文件。

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

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

原创粉丝点击