配置文件

核心配置

1、标签规则

(1)必须按照固定顺序(从上至下):properties、settings、typeAliases、typeHandlers、objectFactory、objectWrapperFactory、reflectorFactory、plugins、environments、databaseIdProvider、mappers

(2)有的标签可以不写,但顺序一定不能乱

2、创建包

(1)src\main\java 目录下,直接创建包,包名之间使用 . 分隔

(2)src\main\resources 目录下,创建目录,包名之间使用 / 分隔;若使用 . 分隔,则为一个包

3、properties 标签

(1)引入外部 properties 配置文件的内容

(2)resource 属性:引入类路径下的资源

(3)url 属性:引入网络路径,或磁盘路径下的资源

(4)如果属性在不只一个地方进行了配置,那么 MyBatis 将按照下面的顺序来加载

(5)首先读取 properties 标签内指定的属性

(6)然后根据 properties 标签中的 resource 属性,读取类路径下属性文件,或根据 url 属性指定的路径读取属性文件,并覆盖已读取的同名属性

(7)最后读取作为方法参数传递的属性,并覆盖已读取的同名属性

4、settings 标签:包含多个设置项

(1)setting 子标签:设置一个设置项

(2)name 属性:设置项名称

(3)value 属性:设置项取值

5、typeAliase 标签:别名处理器

(1)typeAlias 子标签:为某个 JavaBean 起别名

(2)type 属性:需要别名的类型的全类名,默认别名即类名

(3)alias 属性:指定新的别名

(4)package 子标签:为某个包下的所有类批量起别名

(5)name 属性:指定包名,为当前包以及下面所有的后代包,每一个类都起一个默认别名

(6)缺点:若多个包下有相同的类,该方式的别名不能识别具体是哪个包下的类

(7)批量起别名的情况下,在需要别名的 JavaBean 上,使用 @Alias 注解,为某个类型指定新的别名

(8)别名对大小写不敏感的,起别名时不要占用已有的别名

6、typeHandlers 标签:类型处理器

(1)MyBatis 在预处理语句(PreparedStatement)中设置一个参数时,或从结果集中取出一个值时,都会用类型处理器将获取的值,以合适的方式转换成 Java 类型

(2)日期时间处理上,可以使用 Mybatis 基于 JSR310(Date and Time API)编写的各种日期的时间类型处理器

(3)Mybaits3.4 以前的版本需要手动注册处理器,以后的版本都是自动注册

7、plugins 标签:插件

(1)可以通过插件来修改 Mybatis 的一些核心行为

(2)插件通过动态代理机制,可以介入四大对象的任何一个方法的执行

(3)默认情况下,MyBatis 允许使用插件来拦截的方法调用包括

(4)Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)

(5)ParameterHandler (getParameterObject, setParameters)

(6)ResultSetHandler (handleResultSets, handleOutputParameters)

(7)StatementHandler (prepare, parameterize, batch, update, query)

8、environments 标签:环境

(1)每个 SqlSessionFactory 实例只能选择一种环境

(2)每个数据库对应一个 SqlSessionFactory 实例

(3)自定义事务管理器:实现 TransactionFactory 接口,type 为全类名

(4)使用 Spring + MyBatis,则没有必要配置事务管理器,因为 Spring 模块会使用自带的管理器来覆盖前面的配置

(5)自定义数据源:实现 DataSourceFactory 接口,type 为全类名

(6)实际开发中使用 Spring 提供数据源

9、databaseIdProvider 标签:数据库厂商标识

<databaseIdProvider type="DB_VENDOR">
    <property name="MySQL" value="mysql" />
</databaseIdProvider>

(1)Mybatis 可以根据不同的数据库厂商执行不同的语句

(2)使用 MyBatis 提供的 VendorDatabaseldProvider 解析数据库厂商标识,也可以使用实现 DatabaseldProvider 接口来自定义

(3)name 属性:数据库厂商标识

(4)value 属性:为标识起一个别名,方便 SQL 语句使用 databaseld 属性引用

(5)DB_VENDOR:会通过 DatabaseMetaData#getDatabaseProductName() 返回的字符串进行设置,通常情况下该字符串较长,且相同产品的不同版本会返回不同的值,所以最好通过设置属性别名来使其变短

(6)MyBatis 匹配规则如下

(7)如果没有配置 databaseldProvider 标签,则 databaseld=null

(8)如果配置 databaseldProvider 标签,使用标签配置的 name 去匹配数据库信息,匹配上设置 databaseld=配置指定的值,否则依旧为 null

(9)如果 databaseld 不为 null,则只会找到配置 databaseld 的 SQL 语句

(10)MyBatis 会加载不带 databaseld 属性,和带有匹配当前数据库 databaseld 属性的所有语句,如果同时找到带有 databaseld 与不带 databaseld 的相同语句,则舍弃后者

<?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">
<!-- dtd约束文件,规定xml标签语法规则 -->
<configuration>
    
    <!-- properties文件创建在src\main\resources下,引入properties文件,此时可以${key}的方式访问键值对-->
    <properties resource="文件名.properties"></properties>
    
    <settings>
        <!-- 将表中字段的下划线自动转换为驼峰 -->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <!-- 开启延迟加载 -->
        <setting name="lazyLoadingEnabled" value="true"/>
    </settings>
    
    <!-- typeAlias:设置某个具体类型的别名 -->
    <typeAliases>
        <!--
            type:需要设置别名的类型的全类名
            alias:设置此类型的别名,且别名不区分大小写,即reslutType填写别名时,对大小写不敏感;若不设置此属性,该类型拥有默认的别名,即类名
            例:<typeAlias type="org.test.mybatis.bean.User"></typeAlias>
        -->
        <!-- 以包为单位,设置该包下所有的类型都拥有默认的别名,即类名,且不区分大小写 -->
        <package name="org.test.mybatis"/>
    </typeAliases>
    
    <!--
        environments:设置多个连接数据库的环境
        default属性:设置默认使用的环境的id
    -->
    <environments default="mysql">
        <!--
            environment:设置具体的连接数据库的环境信息
            id属性:设置环境的唯一标识,不可重复,可通过environments标签中的default设置某一个环境的id,表示默认使用的环境
        -->
        <environment id="mysql">
            <!--
                transactionManager:设置事务管理方式
                type属性:设置事务管理方式
                type="JDBC / MANAGED"
                JDBC:表示当前环境执行SQL时,使用JDBC原生事务管理方式,事务提交与回滚都必须手动处理
                MANAGED:设置事务被管理,例如:Spring中的AOP
            -->
            <transactionManager type="JDBC"/>
            <!--
                dataSource:设置数据源
                type属性:设置数据源的类型
                type="POOLED / UNPOOLED / JNDI"
                POOLED:使用数据库连接池,即将创建的连接进行缓存,下次使用可以从缓存中直接获取,不需要重新创建
                UNPOOLED:不使用数据库连接池,即每次使用连接都需要重新创建
                JNDI:调用上下文中的数据源
                MyBatis整合后,不需要使用该配置,由Spring提供数据源
            -->
            <dataSource type="POOLED">
                <!-- 引入properties文件,value可以使用${key},填充properties文件中的key对应的value -->
                <!-- 设置连接数据库的驱动类的全类名 -->
                <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 resource="UserMapper.xml"/> 
        -->
        <!--
            以包为单位,将包下所有的映射文件引入核心配置文件
            mapper接口和mapper映射文件必须在相同的包下
            mapper接口名和mapper映射文件名必须一致
        -->
        <package name="org.test.mybatis.mapper"/>
    </mappers>
    
</configuration>

 

IDEA 设置模板

1、路径文件 | 设置 | 编辑器 | 文件和代码模板

2、核心配置模板 

<?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="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    
    <mappers>
        <package name=""/>
    </mappers>
    
</configuration>

3、映射模板

<?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">
<mapper namespace="">
    
</mapper>
posted @   半条咸鱼  阅读(116)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示