首页 > 代码库 > 002医疗项目-主工程模块yycgproject三层构建(三大框架的整合)

002医疗项目-主工程模块yycgproject三层构建(三大框架的整合)

 

先给出项目结构图:

技术分享

Log4j.properties—》日志配置文件

Db.properties----》连接数据库

配置连接数据库的参数

Mybatis/SqlMapConfig.xml---》 mybatis的核心配置文件

Mybatis配置项

Spring/applicationContext.xml  -àspring的核心配置文件

配置公用的内容:数据源、事务管理

Spring/applicationContext- base-dao.xml   à配置dao

配置SqlSessionFactory,dao(mapper)

 

Spring/applicationContext-base-service.xml -à配置service

配置业务接口

Spring/Springmvc.xml---》配置springmvc

  处理器映射器

  处理器适配器

  视图解析器

   拦截器

 

 

 

一:我们先整合Dao和Spring框架:

达到目标:将spring和mybatis整合,将spring管理dao接口。

让spring对SqlSessionFactory管理,再由SqlSessionFactory自动生成sqlSession,SqlSession就是dao接口中要用的。

 

 

 

整合方式1(传统的Dao方式)

程序员创建dao接口及dao接口的实现类,

 

Dao接口实现类继承SqlSessionDaoSupport

在spring容器中配置dao接口,并将SqlSessionFactory注入到dao接口实现中,

在dao接口方法中调用this.getSqlSession()获取SqlSession。

举例:

接口实现类继承SqlSessionDaoSupport

使用此种方法需要编写mapper接口,mapper接口实现类、mapper.xml文件

1、  在sqlMapConfig.xml中配置mapper.xml的位置

<mappers>

  <mapper resource="mapper.xml文件的地址" />

<mapper resource="mapper.xml文件的地址" />

</mappers>

 

2、  定义mapper接口

 

3、  实现类集成SqlSessionDaoSupport

 

mapper方法中可以this.getSqlSession()进行数据增删改查。

4、  spring 配置

     <!--  SessionFactory -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <!-- 整合mybatis,包扫描 mapper文件 -->
        <property name="configLocation" value="http://www.mamicode.com/classpath:/mybatis/sqlMapConfig.xml"/>
    
    </bean>

<bean id=" " class="mapper接口的实现">

     <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>

    </bean>

 

 

 

 

整合方式2用Mapper动态代理的方法:

 

程序员只需要编写mapper接口(相当于dao接口),不需要编写 mapper接口的实现类,mybatis提供根据mapper接口和mapper.xml(映射文件)生成mapper接口动态代理对象(mapper接口的实现)。

 

具备什么规则生成mapper代理对象:

Mapper.xml中的namespace等于mapper接口的地址。

Mapper.xml中定义的sql的id(mapped statement的id)等于mapper.java中方法名

Mapper.xml中定义的statement的parametertype等于mapper.java中方法的形参类型。

Mapper.xml中定义的statement的resultType等于mapper.java中方法的返回值类型。

 

开发两个文件:mapper.java和mapper.xml

 

方式1:使用MapperFactoryBean

 第一步:

编写mapper.xml:

<!-- SysuserMapperCustom就是mapper接口 -->

<mapper namespace="yycg.base.dao.mapper.SysuserMapperCustom">

  

   <!-- 根据id查询用户信息 -->

   <select id="findSysuserById" parameterType="string"

   resultType="yycg.base.pojo.po.Sysuser">

      select * from sysuser where id = #{id}

   </select>

</mapper>

 

 

 第二步:

编写mapper.java,

 

然后在spring容器中进行配置mapper:

 

使用MapperFactoryBean,根据mapper接口生成代理对象。

 技术分享

 

 mapper.xml和mapper.java不同名或不在一个目录下的情况下,我们就要在SqlMapConfig.xml中去配置mapper.xml的地址。

注意:mapper.xml和mapper.java同名且在一个目录 ,那么不需要在SqlMapConfig.xml中加载mapper文件。这特性是由MapperFactoryBean提供的。

 

 

 

使用MapperFactoryBean需要在spring容器对每个mapper进行配置,麻烦。所以就产生了Mapper动态代理的第二种方式。

 

l  方式2:使用mapper自动扫描器

 

使用mybaits和spring整合包中提供的mapper扫描器,自动扫描mapper,生成动态代理对象,在spring容器注册。

 技术分享

 

 

配置mapper自动扫描器

 技术分享

 

 

开发两个文件:mapper.java和mapper.xml,注意:mapper.xml和mapper.java同名且在一个目录

 

测试:

获得spring容器,从容器中得SysuserCustomMapper

 

本系统采用扫描器方法创建mapper对象。

 

002医疗项目-主工程模块yycgproject三层构建(三大框架的整合)