Spring -----Spring中整合mybatis

1、在xml中定义MyBatis的配置文件,包括一些属性信息。

xmlversion="1.0"encoding="UTF-8"?>

DOCTYPEconfigurationPUBLIC"-//mybatis.org//DTDConfig3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

      <settings>  1

             

             <settingname="mapUnderscoreToCamelCase"value="true"/>

      settings>

configuration>

1处提供可控制myBatis框架运行行为的属性信息。

2、在Spring配置文件整合mybatis

要在Spring中整合mybatis,第一项工作必须将mybatis-spring类包添加到项目的类库中。

21配置SqlSessionFactoryBean

      <beanid="dataSource"class="org.apache.commons.dbcp.BasicDataSource"

             destroy-method="close"

             p:driverClassName="oracle.jdbc.driver.OracleDriver"

             p:url="jdbc:oracle:thin:@localhost:1521:orcl"

             p:username="system"

             p:password="111111"/>

 

<beanid="sqlSessionFactory"

   class="org.mybatis.spring.SqlSessionFactoryBean">               1

<propertyname="dataSource"ref="dataSource"/>                   2

<propertyname="configLocation"value="classpath:mybatis-config.xml" />3

<propertyname="mapperLocations"

value="classpath*:com/forms/**/*.xml"/>               4

bean>

1        mybatis-spring类包提供一个SqlSessionFactoryBean,以便通过Spring风格创建myBatisSqlSessionFactory,如(1)所示。

2        注入数据源如(2)所示。

3        指定mybatis的总装配置文件(类路径下的mybatis-config.xml文件),如(3)所示。

4        通过mapperLocations属性,设置扫描式加载SQL映射文件。如(4)所示

注意:

1          如果没有设置这个属性,Dao接口的命名与映射文件的命名要完全相同,才能找到对应的映射项。(所以在spring中配置mybatis时,最好加上这个mapperLocations属性。

2          如果要指定扫描多个不同风格的SQL映射文件。可以采用如下方式:

      

             classpath*:sql-mapper/beneform4j/*.xml     

      classpath*:com/forms/beneform4j/**/*.beneform4j.xml

         classpath*:com/forms/fdfx/**/*.beneform4j.xml

      

22配置MapperScannerConfigurer

mybatis-spring提供了一个转换器MapperScannerConfigurer,它可以将映射接口直接转换为Spring容器中的Bean,这样我们就可以在Service注入映射接口的Bean了。

<beanclass="org.mybatis.spring.mapper.MapperScannerConfigurer">

             "basePackage"value="com.forms"/>  1

             <propertyname="sqlSessionFactoryBeanName"value="sqlSessionFactory"/>

bean>

MapperScannerConfigurer将扫描basePackage所指定的包下的所有接口类(包括子包),如果它们在SQL映射文件中定义过,则将它们动态定义一个Spring BeanService层就可以直接使用@Autowired注入

这些映射接口的bean

3、编写DAO文件

packagecom.forms.common.dao;

importorg.apache.ibatis.annotations.Param;

importorg.springframework.stereotype.Repository;

import com.forms.common.domain.User;

@Repository

publicinterface UserDao {

     publicint getMatchCount(

@Param("userName") String userName,

@Param("password"String password) ;

}

 

4、编写xml文件

xmlversion="1.0"encoding="UTF-8"?>

DOCTYPEmapperPUBLIC"-//mybatis.org//DTDMapper3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mappernamespace="com.forms.common.dao.UserDao"1

     <selectid="getMatchCount"resultType="Integer">  2

           SELECT count(*) FROMt_user  U

           <where>

          <iftest="null !=userName and '' != userName">

                AND U.user_name like  #{userName, jdbcType=VARCHAR}

          if>

          <iftest="null !=password and '' != password">

                AND U.password =#{password, jdbcType=VARCHAR}

          if>

         where>

      select>

mapper>

在(1)处指定了映射所在的命名空间。(注意:命名空间的字符串(例如:namespace="com.forms.common.dao.UserDao")中不能出现空格,要不然程序会报找不到对应的映射项错误),每个具体的映射项都有一个id,可以通过命名空间和映射项的id定位到具体的映射项。

映射项的parameterType指定传入的参数对象,可以是全限定名的类,也可以是类的别名,类别名在mybatis的主配置文件中定义。(其实实际项目中,不是必须配置别名)。如果映射项的入参是基础类型或String类型,则可以使用如intlongString的基础类型名。映射项中通过#{xxx}绑定parameterType指定参数类的属性,支持级联属性,如#{topic.forumId}

你可能感兴趣的:(spring)