码迷,mamicode.com
首页 > 数据库 > 详细

11Mybatis_SqlMapConfig.xml专题讲解

时间:2016-08-16 21:56:47      阅读:258      评论:0      收藏:0      [点我收藏+]

标签:

Mybatis的SqlMapConfig.xml中以下的标签:

properties(属性)

settings(全局配置参数)

typeAliases(类型别名)

typeHandlers(类型处理器)

objectFactory(对象工厂)

plugins(插件)

environments(环境集合属性对象)

environment(环境子属性对象)

transactionManager(事务管理)

dataSource(数据源)

mappers(映射器)

 

 

 

 

 

第一部分:讲解properties属性:

将数据库连接参数单独配置在db.properties中,只需要在SqlMapConfig.xml中加载db.properties的属性值。

在SqlMapConfig.xml中就不需要对数据库连接参数硬编码。

 将数据库连接参数只配置在db.properties中,原因:方便对参数进行统一管理,其它xml可以引用该db.properties。

做法如下:

         先给出案例图:

技术分享
这个修改如下:1.增加了一个db.propertiese文件里面的内容如下:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybaits
jdbc.username=root
jdbc.password=root

2.修改SqlMapConfig.xml文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!-- 和spring整合后 environments配置将废除-->
    <properties resource="db.properties"></properties>
    <environments default="development">
        <environment id="development">
        <!-- 使用jdbc事务管理-->
            <transactionManager type="JDBC" />
        <!-- 数据库连接池-->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}" />
                <property name="url" value="${jdbc.url}" />
                <property name="username" value="${jdbc.username}" />
                <property name="password" value="${jdbc.password}" />
            </dataSource>
        </environment>
    </environments>
    
    <!-- 把映射文件(sqlmap/user.xml)加载进sqlMapConfig.xml-->
        <mappers>
           <!--  把mapper.xml加载进sqlMapConfig.xml-->
            <mapper resource="mapper/userMapper.xml"/>
         </mappers>
    
    
    
</configuration>

 

 

 

properties特性:

注意: MyBatis 将按照下面的顺序来加载属性:

在 properties 元素体内定义的属性首先被读取。

 然后会读取properties 元素中resource或 url 加载的属性,它会覆盖已读取的同名属性。

最后读取parameterType传递的属性,它会覆盖已读取的同名属性。

 

建议:

不要在properties元素体内添加任何属性值,只将属性值定义在properties文件中。

在properties文件中定义属性名要有一定的特殊性,如:XXXXX.XXXXX.XXXX

 

 

 

运行之后一切正常。

 

 

 

----------------------------------------------------------------------------------------------------------------------------------------------------------

第二部分:Settings全局参数配置:

mybatis框架在运行时可以调整一些运行参数。

比如:开启二级缓存、开启延迟加载。。

 全局参数将会影响mybatis的运行行为。不要随便乱设置参数。

 

---------------------------------------------------------------------------------------------------------------------------------------------------------------

第三部分:typeAilases(别名)重点,很常用的

需求:

在mapper.xml中,定义很多的statement,statement需要parameterType指定输入参数的类型、需要resultType指定输出结果的映射类型。

 如果在指定类型时输入类型全路径,不方便进行开发,可以针对parameterType或resultType指定的类型定义一些别名,在mapper.xml中通过别名定义,方便开发。

我们可以这么做:

1.在sqlMapper.xml中修改如下代码:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    
      
    
    <!-- properties的配置必须写在typeAliases的上面 -->
    <properties resource="db.properties"></properties>

<!-- 配置别名 -->
<typeAliases>
    <!-- 针对别名定义
    type:类型的路径
    alias:别名
     -->
    <typeAlias type="cn.itcast.mybatis.po.User" alias="user"/>
 </typeAliases>
 
       
 <!-- 和spring整合后 environments配置将废除-->
    <environments default="development">
        <environment id="development">
        <!-- 使用jdbc事务管理-->
            <transactionManager type="JDBC" />
        <!-- 数据库连接池-->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}" />
                <property name="url" value="${jdbc.url}" />
                <property name="username" value="${jdbc.username}" />
                <property name="password" value="${jdbc.password}" />
            </dataSource>
        </environment>
    </environments>

    <!-- 把映射文件(sqlmap/user.xml)加载进sqlMapConfig.xml-->
        <mappers>
            
           <!--  把mapper.xml加载进sqlMapConfig.xml-->
            <mapper resource="mapper/userMapper.xml"/>
         </mappers>
    
    
    
</configuration>

2.userMapper.xml修改代码如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- nanmespace:命名空间。 作用就是对sql进行分类话管理,理解Sal分离

注意:使用mapper代理方式,namespace有特殊重要的作用
-->

<mapper namespace="cn.itcast.mybatis.Dao.UserMapper">
   
   

    
    
    
    
    <!-- 根据id获取用户信息 -->
    <!-- 在映射文件中配置很多sql语句 -->
    <!-- 
    id:标识映射文件中的sql;
    将sql语句封装到mappedStatement对象中,所以将id称为statement的id;parmenterType:指定输入的参数的类型,这里指定的int型
    #{}表示一个占位符号;
    #{id}:其中的id表示接收输入的参数,参数名称就是id,如果输入参数就是简单类型,#{}中的参数名可以任意,可以value或其它名称
    resultType:指定的sql输出结果的所映射的java对象类型,select指定resultType表示将单条记录映射成的java对象;
    
     -->
     <!-- 这里因为用了typeAliases所以 resultType直接写user-->
    <select id="findUserById" parameterType="int" resultType="user">
        select * from user where id = #{id}
    </select>
    <!--where username like ‘%${value}%‘ 这句话中必须写value不然就报错。因为规则上明确说过
    ${}接收输入参数,类型可以是简单类型,pojo、hashmap。
       如果接收简单类型,${}中只能写成value。
    
      -->
  <select id="findUserByName" parameterType="String" resultType="user">
        select * from user where username like ‘%${value}%‘
    </select>

   
</mapper>

测试:代码运行正常。

 

 

 

 

 

 

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------

第四部分:mappers(映射配置)这个非常重要

mapper的映射配置分为三种:

1.通过rsource加载单个映射配置文件((修改SqlMapConfig.xml文件))

技术分享

2.通过mapper接口加载单个mapper(修改SqlMapConfig.xml文件以及包的结构)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    
      
    
    <!-- properties的配置必须写在typeAliases的上面 -->
    <properties resource="db.properties"></properties>

<!-- 配置别名 -->
<typeAliases>
    <!-- 针对别名定义
    type:类型的路径
    alias:别名
     -->
    <typeAlias type="cn.itcast.mybatis.po.User" alias="user"/>
 </typeAliases>
 
       
 <!-- 和spring整合后 environments配置将废除-->
    <environments default="development">
        <environment id="development">
        <!-- 使用jdbc事务管理-->
            <transactionManager type="JDBC" />
        <!-- 数据库连接池-->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}" />
                <property name="url" value="${jdbc.url}" />
                <property name="username" value="${jdbc.username}" />
                <property name="password" value="${jdbc.password}" />
            </dataSource>
        </environment>
    </environments>

   
        <mappers>
            
          
            <!-- 用mapper接口来加载单个mapper -->
              <!-- 
           遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致
           且在一个目录中。
           当着这个规范的前提是:使用mapper代理方法。
           
            -->

<mapper resource="cn.itcast.mybatis.Dao.UserMapper" /> </mappers> </configuration>

 

把包的结构改一下:需要将mapper接口类名和mapper.xml映射文件名称保持一致且在一个目录中。

技术分享

运行一切正常。

 

3.批量加载mapper(推荐使用,企业中用的)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    
      
    
    <!-- properties的配置必须写在typeAliases的上面 -->
    <properties resource="db.properties"></properties>

<!-- 配置别名 -->
<typeAliases>
    <!-- 针对别名定义
    type:类型的路径
    alias:别名
     -->
    <typeAlias type="cn.itcast.mybatis.po.User" alias="user"/>
 </typeAliases>
 
       
 <!-- 和spring整合后 environments配置将废除-->
    <environments default="development">
        <environment id="development">
        <!-- 使用jdbc事务管理-->
            <transactionManager type="JDBC" />
        <!-- 数据库连接池-->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}" />
                <property name="url" value="${jdbc.url}" />
                <property name="username" value="${jdbc.username}" />
                <property name="password" value="${jdbc.password}" />
            </dataSource>
        </environment>
    </environments>

    
        <mappers>
            
    
           <!-- 
           
           采用批量加载mapper的方式来加载也必须遵循下面的规范
           
           遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致
           且在一个目录中。
           当着这个规范的前提是:使用mapper代理方法。
           
            -->
           
            <package name="cn.itcast.mybatis.mapper"/>
            
         </mappers>
    
    
    
</configuration>

技术分享

结果:运行一切正常

 

11Mybatis_SqlMapConfig.xml专题讲解

标签:

原文地址:http://www.cnblogs.com/shenxiaoquan/p/5777931.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!