zoukankan      html  css  js  c++  java
  • mybatis学习(四)——config全局配置文件解析

    在全集配置文件中引入dtd约束“http://mybatis.org/dtd/mybatis-3-config.dtd”,主要有以下几个标签,现在详细解释下这几个标签的使用

    1、properties属性----引入外部properties配置文件

    <?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>
        <!-- 1、mybatis使用properties来引入外部properties配置文件的内容 
        resource 引入类路径下资源 
        url 引入网络路径或磁盘路径下资源 -->
        <properties resource="db.properties"></properties>
    
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC" />
                <!-- 配置数据库连接信息 -->
                <dataSource type="POOLED">
                    <property name="driver" value="${jdbc.driver}" />
                    <property name="url" value="${jdbc.url}" />
                    <property name="username" value="${jdbc.name}" />
                    <property name="password" value="${jdbc.password}" />
                </dataSource>
            </environment>
        </environments>
        <mappers>
            <mapper resource="com/pjf/mybatis/mapper/hotelMapper.xml"></mapper>
        </mappers>
    </configuration>

    db.properties文件

    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/spring_mybatis
    jdbc.name=root
    jdbc.password=tuniu520

    相比有之前写的,这里的jdbc连接信息写在datasource中的property属性下,没有引入外部配置文件

    <?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>
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC" />
                <!-- 配置数据库连接信息 -->
                <dataSource type="POOLED">
                    <property name="driver" value="com.mysql.jdbc.Driver" />
                    <property name="url" value="jdbc:mysql://localhost:3306/spring_mybatis" />
                    <property name="username" value="root" />
                    <property name="password" value="tuniu520" />
                </dataSource>
            </environment>
        </environments>
        <mappers>
        <mapper resource="com/pjf/mybatis/mapper/hotelMapper.xml"></mapper>
        </mappers>
    </configuration>

    2、settings 运行时行为设置

    可查看mybatis文档,settings有很多配置项,如

    这里试验下mapUnderscoreToCamelCase,可以自动完成hotelName到数据库中字段hotel_name的转

    <?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>
        <!-- 1、mybatis使用properties来引入外部properties配置文件的内容
                 resource 引入类路径下资源
                 url 引入网络路径或磁盘路径下资源 -->
        <properties resource="db.properties"></properties>
        <!-- 2、settings包含很多重要的设置项
                setting标识具体的设置项
                     name表示设置项的名字
                     value表示设置项的值 
         -->
        <settings>
            <setting name="mapUnderscoreToCamelCase" value="true" />
        </settings>
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC" />
                <!-- 配置数据库连接信息 -->
                <dataSource type="POOLED">
                    <property name="driver" value="${jdbc.driver}" />
                    <property name="url" value="${jdbc.url}" />
                    <property name="username" value="${jdbc.name}" />
                    <property name="password" value="${jdbc.password}" />
                </dataSource>
            </environment>
        </environments>
        <mappers>
            <mapper resource="com/pjf/mybatis/mapper/hotelMapper.xml"></mapper>
        </mappers>
    </configuration>

    之前写的sql语句可以直接修改成

    <select id="getHotel" resultType="com.pjf.mybatis.po.Hotel">
            select id,hotel_name as hotelName, hotel_address as hotelAddress, price from hotel
            where id=#{id}
        </select>
    
    修改为
    <select id="getHotel" resultType="com.pjf.mybatis.po.Hotel"> select * from hotel where id=#{id} </select>

    mybatis会自动完成驼峰转换

    3、typeAliases别名配置

         查看代码中3的注解

    <?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>
        
        <!-- 1、mybatis使用properties来引入外部properties配置文件的内容
                   resource 引入类路径下资源 
                   url 引入网络路径或磁盘路径下资源 -->
        <properties resource="db.properties"></properties>
        
        <!-- 2、settings包含很多重要的设置项
                 setting标识具体的设置项 
                     name表示设置项的名字 
                     value表示设置项的值 -->
        <settings>
            <setting name="mapUnderscoreToCamelCase" value="true" />
        </settings>
        
        <!-- 3、typeAliases 为java类型起别名,别名不区分大小写 
                  typeAlias 为某个具体的java类型取别名 
                       type java类的全类名,默认别名就是类名小写 
                       alias 自定义别名 --> 
        <typeAliases>
            <typeAlias type="com.pjf.mybatis.po.Hotel" alias="hotel" />
            <!-- package为某个包下面所有类批量起别名 
               name 表示包的名称 默认别名为类名小写  
    这里重复配置了Hotel类,复制的时候注掉一种配置--> <package name="com.pjf.mybatis.po" /> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <!-- 配置数据库连接信息 --> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.name}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment> </environments> <mappers> <mapper resource="com/pjf/mybatis/mapper/hotelMapper.xml"></mapper> </mappers> </configuration>

    3.1、typeAliases

    typeAliases可以用来自定义别名。在mapper.xml中,定义很多的statement,而statement需要parameterType指定输入参数的类型、需要resultType指定输出结果的映射类型。如果在指定类型时输入类型全路径,不方便进行开发,可以针对parameterType或resultType指定的类型定义一些别名,在mapper.xml中通过别名定义,方便开发。
    例如:

    <typeAliases>
    <!-- 单个别名定义 -->
    <typeAlias alias="user" type="com.kang.pojo.User"/>
    <!-- 批量别名定义,扫描整个包下的类,别名为类名(首字母大小写都可以) -->
    <package name="com.kang.pojo"/>
    <package name="其它包"/>
    </typeAliases>

    mapper.xml的引用形式

    <select id="findUserById" parameterType="int" resultType="user">
    SELECT * FROM USER WHERE id=#{value}
    </select>

    已经为许多常见的 Java 类型内建了相应的类型别名。它们都是大小写不敏感的,需要注意的是由基本类型名称重复导致的特殊处理,8种基本数据类型类型别名是下划线加数据类型。

    4、typeHandlers 类型处理器

    将java中的类型和数据库中的类型进行映射

    <!-- typeHandlers 类型处理器
      mybatis3.4之后,这些类型处理器都是自动注册的
    -->
        <typeHandlers>
        <typeHandler handler="BooleanTypeHandler"/>
        </typeHandlers>

    可以填写以下处理器

    5、environments环境配置

    <?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>
        
        <!-- 1、mybatis使用properties来引入外部properties配置文件的内容
                   resource 引入类路径下资源 
                   url 引入网络路径或磁盘路径下资源 -->
        <properties resource="db.properties"></properties>
        
        <!-- 2、settings包含很多重要的设置项
                 setting标识具体的设置项 
                     name表示设置项的名字 
                     value表示设置项的值 -->
        <settings>
            <setting name="mapUnderscoreToCamelCase" value="true" />
        </settings>
        
        <!-- 3、typeAliases 为java类型起别名,别名不区分大小写 
                  typeAlias 为某个具体的java类型取别名 
                       type java类的全类名,默认别名就是类名小写 
                       alias 自定义别名 --> 
        <typeAliases>
            <typeAlias type="com.pjf.mybatis.po.Hotel" alias="hotel" />
            <!-- package为某个包下面所有类批量起别名 
               name 表示包的名称 默认别名为类名小写
            <package name="com.pjf.mybatis.po" />
            -->
        </typeAliases>
        
        <!-- 4、typeHandlers 类型处理器-->
        <typeHandlers>
        <typeHandler handler=""/>
        </typeHandlers>
        
        <!-- 5、environments环境配置,可以配置多种环境  default指定使用某种环境,可以达到快速切换
                   environment配置一个具体的环境信息,必须有如下两个标签,id表示当前环境的唯一标识
                       transactionManager 事物管理器
                            type 事物管理器的类型   有两种取值 
                                  JDBC
                                  managed
                       dataSource 数据源   
                            type    有三种[UNPOOLED|POOLED|JNDI]
                    -->
        <environments default="development">
            <environment id="test">
            <transactionManager type="JDBC" />
                <!-- 配置数据库连接信息 -->
                <dataSource type="POOLED">
                    <property name="driver" value="${jdbc.driver}" />
                    <property name="url" value="${jdbc.url}" />
                    <property name="username" value="${jdbc.name}" />
                    <property name="password" value="${jdbc.password}" />
                </dataSource>
            </environment>
            
            <environment id="development">
                <transactionManager type="JDBC" />
                <!-- 配置数据库连接信息 -->
                <dataSource type="POOLED">
                    <property name="driver" value="${jdbc.driver}" />
                    <property name="url" value="${jdbc.url}" />
                    <property name="username" value="${jdbc.name}" />
                    <property name="password" value="${jdbc.password}" />
                </dataSource>
            </environment>
        </environments>
        
        <mappers>
            <mapper resource="com/pjf/mybatis/mapper/hotelMapper.xml"></mapper>
        </mappers>
    </configuration>

    6、mappers  sql映射文件注册

    <?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>
        
        <!-- 1、mybatis使用properties来引入外部properties配置文件的内容
                   resource 引入类路径下资源 
                   url 引入网络路径或磁盘路径下资源 -->
        <properties resource="db.properties"></properties>
        
        <!-- 2、settings包含很多重要的设置项
                 setting标识具体的设置项 
                     name表示设置项的名字 
                     value表示设置项的值 -->
        <settings>
            <setting name="mapUnderscoreToCamelCase" value="true" />
        </settings>
        
        <!-- 3、typeAliases 为java类型起别名,别名不区分大小写 
                  typeAlias 为某个具体的java类型取别名 
                       type java类的全类名,默认别名就是类名小写 
                       alias 自定义别名 --> 
        <typeAliases>
            <typeAlias type="com.pjf.mybatis.po.Hotel" alias="hotel" />
            <!-- package为某个包下面所有类批量起别名 
               name 表示包的名称 默认别名为类名小写
            <package name="com.pjf.mybatis.po" />
            -->
        </typeAliases>
        
        <!-- 4、typeHandlers 类型处理器-->
        <typeHandlers>
        <typeHandler handler=""/>
        </typeHandlers>
        
        <!-- 5、environments环境配置,可以配置多种环境  default指定使用某种环境,可以达到快速切换
                   environment配置一个具体的环境信息,必须有如下两个标签,id表示当前环境的唯一标识
                       transactionManager 事物管理器
                            type 事物管理器的类型   有两种取值 
                                  JDBC
                                  managed
                       dataSource 数据源   
                            type    有三种[UNPOOLED|POOLED|JNDI]
                    -->
        <environments default="development">
            <environment id="test">
            <transactionManager type="JDBC" />
                <!-- 配置数据库连接信息 -->
                <dataSource type="POOLED">
                    <property name="driver" value="${jdbc.driver}" />
                    <property name="url" value="${jdbc.url}" />
                    <property name="username" value="${jdbc.name}" />
                    <property name="password" value="${jdbc.password}" />
                </dataSource>
            </environment>
            
            <environment id="development">
                <transactionManager type="JDBC" />
                <!-- 配置数据库连接信息 -->
                <dataSource type="POOLED">
                    <property name="driver" value="${jdbc.driver}" />
                    <property name="url" value="${jdbc.url}" />
                    <property name="username" value="${jdbc.name}" />
                    <property name="password" value="${jdbc.password}" />
                </dataSource>
            </environment>
        </environments>
            
        <!--6、 mappers将sql映射注册到全局配置文件中
                  mapper注册一个sql映射
                     1、注册配置文件
                          resource引用类路径下文件
                          url  引用网络上或磁盘路径下文件
                     2、注册mapper接口
                         class  有映射文件,接口和映射文件必须同名,而且放在同一个路径里
                                如果没有映射文件,sql语句使用注解的方式,就需要注册接口了
                     3、package批量注册  
                          使用批量注册,  接口和映射文件必须同名,而且放在同一个路径里                                                      
         -->
        <mappers>
            <mapper resource="com/pjf/mybatis/mapper/hotelMapper.xml"></mapper>
            <mapper class=""/>
            <package name="com.pjf.mybatis.po"/>
        </mappers>
    </configuration>

    6.1Mapper配置的几种方法:

    第一种(常用)

    <mapper resource=" " />

    resource指向的是相对于类路径下的目录

    如:<mapper resource="sqlmap/User.xml" />


    第二种

    <mapper url=" " />

    使用完全限定路径
    如:<mapper url="file:///D:workspacemybatis1configsqlmapUser.xml" />

    第三种

    <mapper class=" " />

    使用mapper接口类路径
    如:<mapper class="cn.kang.mapper.UserMapper"/>
    注意:此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。


    第四种(推荐)

    <package name=""/>

    注册指定包下的所有mapper接口
    如:<package name="cn.kang.mapper"/>
    注意:此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中。
    使用示例:

    <mappers>
    <mapper resource="sqlmap/User.xml"/>
    <package name="cn.kang.mapper"/>
    </mappers>

    7、databaseIdProvider多数据库支持

    MyBatis 可以根据不同的数据库厂商执行不同的语句,这种多厂商的支持是基于映射语句中的 databaseId 属性。 MyBatis 会加载不带 databaseId 属性和带有匹配当前数据库 databaseId 属性的所有语句。 如果同时找到带有 databaseId 和不带 databaseId 的相同语句,则后者会被舍弃。 

    <databaseIdProvider type="DB_VENDOR"></databaseIdProvider>

    8、plugins 插件

    MyBatis 允许你在已映射语句执行过程中的某一点进行拦截调用。

    <plugins>
        <plugin interceptor=""></plugin>
    </plugins>

    注:这些标签编写是有先后顺序的,可以吧鼠标放在configuration上,就可以看到顺序了

    (properties?, settings?, typeAliases?, typeHandlers?, objectFactory?, objectWrapperFactory?, reflectorFactory?, plugins?, environments?, databaseIdProvider?, mappers?)
  • 相关阅读:
    Mac环境下,终端命令行开启、关闭和重启mysql数据库
    Java连接Mysql数据库详细代码
    强制关闭MySQL数据库
    ssh登录服务器出现Permission denied (publickey,gssapi-keyex,gssapi-with-mic)警告
    JSP中“转发”和“重定向”的区别
    Mac环境下配置Tomcat服务器
    TCP和UDP的区别
    div宽高未知,设置小的div位于大的div的中心
    HTML:使用Jquery动态生成二级选项列表
    $(document).ready()和window.onload的区别
  • 原文地址:https://www.cnblogs.com/JonaLin/p/11578872.html
Copyright © 2011-2022 走看看