mybatis-config.xml配置

原始xml

上一篇有提到过config的内容,现在基于上一篇的config上一点点添加。

<?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://192.168.102.128:3306/test"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="mybatis/UserMapper.xml"/>
    </mappers>
</configuration>

属性值

上面的property可以配置在property标签里面,也可以从外部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>
    <properties resource="config.properties">
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
    </properties>

    <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>
        <mapper resource="mybatis/UserMapper.xml"/>
    </mappers>

</configuration>

resource目录下新建config.properties文件,内容如下:

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://192.168.102.128:3306/test

外部的属性值可以成功导入mybatis.config.xml里面。

settings

MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。

一般可设置的settings如下。

<?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 resource="config.properties">
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
    </properties>

    <settings>
        <!--	全局性地开启或关闭所有映射器配置文件中已配置的任何缓存 -->
        <setting name="cacheEnabled" value="true"/>
        <!--	延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。
        特定关联关系中可通过设置 fetchType 属性来覆盖该项的开关状态 -->
        <setting name="lazyLoadingEnabled" value="true"/>
        <!--	是否允许单个语句返回多结果集(需要数据库驱动支持) -->
        <setting name="multipleResultSetsEnabled" value="true"/>
        <!--	使用列标签代替列名。实际表现依赖于数据库驱动,具体可参考数据库驱动的相关文档,或通过对比测试来观察。 -->
        <setting name="useColumnLabel" value="true"/>
        <!--	允许 JDBC 支持自动生成主键,需要数据库驱动支持 -->
        <setting name="useGeneratedKeys" value="false"/>
        <!--	指定 MyBatis 应如何自动映射列到字段或属性 -->
        <setting name="autoMappingBehavior" value="PARTIAL"/>
        <!--	指定发现自动映射目标未知列(或未知属性类型)的行为。
            NONE: 不做任何反应
            WARNING: 输出警告日志('org.apache.ibatis.session.AutoMappingUnknownColumnBehavior' 的日志等级必须设置为 WARN)
            FAILING: 映射失败 (抛出 SqlSessionException) -->
        <setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
        <!--	配置默认的执行器。SIMPLE 就是普通的执行器;REUSE 执行器会重用预处理语句(PreparedStatement);
         BATCH 执行器不仅重用语句还会执行批量更新。 -->
        <setting name="defaultExecutorType" value="SIMPLE"/>
        <!--	设置超时时间,它决定数据库驱动等待数据库响应的秒数。 -->
        <setting name="defaultStatementTimeout" value="25"/>
        <!--	为驱动的结果集获取数量(fetchSize)设置一个建议值。此参数只可以在查询设置中被覆盖。 -->
        <setting name="defaultFetchSize" value="100"/>
        <!--	是否允许在嵌套语句中使用分页(RowBounds)。如果允许使用则设置为 false。 -->
        <setting name="safeRowBoundsEnabled" value="false"/>
        <!--	是否开启驼峰命名自动映射,即从经典数据库列名 A_COLUMN 映射到经典 Java 属性名 aColumn。 -->
        <setting name="mapUnderscoreToCamelCase" value="false"/>
        <!--	MyBatis 利用本地缓存机制(Local Cache)防止循环引用和加速重复的嵌套查询。
        默认值为 SESSION,会缓存一个会话中执行的所有查询。 若设置值为 STATEMENT,本地缓存将仅用于执行语句,
        对相同 SqlSession 的不同查询将不会进行缓存。 -->
        <setting name="localCacheScope" value="SESSION"/>
        <!--		当没有为参数指定特定的 JDBC 类型时,空值的默认 JDBC 类型。 某些数据库驱动需要指定列的 JDBC
        类型,多数情况直接用一般类型即可,比如 NULL、VARCHAR 或 OTHER。 -->
        <setting name="jdbcTypeForNull" value="OTHER"/>
        <!--	指定对象的哪些方法触发一次延迟加载。 -->
        <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
    </settings>

    <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>
        <mapper resource="mybatis/UserMapper.xml"/>
    </mappers>

</configuration>

类型别名

增加typeAliases标签,定义实体类的别名。如下,使用到test.entity.User的地方都已用user来代替。

<?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 resource="config.properties">
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
    </properties>

    <settings>
        <!--	全局性地开启或关闭所有映射器配置文件中已配置的任何缓存 -->
        <setting name="cacheEnabled" value="true"/>
        <!--	延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。
        特定关联关系中可通过设置 fetchType 属性来覆盖该项的开关状态 -->
        <setting name="lazyLoadingEnabled" value="true"/>
        <!--	是否允许单个语句返回多结果集(需要数据库驱动支持) -->
        <setting name="multipleResultSetsEnabled" value="true"/>
        <!--	使用列标签代替列名。实际表现依赖于数据库驱动,具体可参考数据库驱动的相关文档,或通过对比测试来观察。 -->
        <setting name="useColumnLabel" value="true"/>
        <!--	允许 JDBC 支持自动生成主键,需要数据库驱动支持 -->
        <setting name="useGeneratedKeys" value="false"/>
        <!--	指定 MyBatis 应如何自动映射列到字段或属性 -->
        <setting name="autoMappingBehavior" value="PARTIAL"/>
        <!--	指定发现自动映射目标未知列(或未知属性类型)的行为。
            NONE: 不做任何反应
            WARNING: 输出警告日志('org.apache.ibatis.session.AutoMappingUnknownColumnBehavior' 的日志等级必须设置为 WARN)
            FAILING: 映射失败 (抛出 SqlSessionException) -->
        <setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
        <!--	配置默认的执行器。SIMPLE 就是普通的执行器;REUSE 执行器会重用预处理语句(PreparedStatement);
         BATCH 执行器不仅重用语句还会执行批量更新。 -->
        <setting name="defaultExecutorType" value="SIMPLE"/>
        <!--	设置超时时间,它决定数据库驱动等待数据库响应的秒数。 -->
        <setting name="defaultStatementTimeout" value="25"/>
        <!--	为驱动的结果集获取数量(fetchSize)设置一个建议值。此参数只可以在查询设置中被覆盖。 -->
        <setting name="defaultFetchSize" value="100"/>
        <!--	是否允许在嵌套语句中使用分页(RowBounds)。如果允许使用则设置为 false。 -->
        <setting name="safeRowBoundsEnabled" value="false"/>
        <!--	是否开启驼峰命名自动映射,即从经典数据库列名 A_COLUMN 映射到经典 Java 属性名 aColumn。 -->
        <setting name="mapUnderscoreToCamelCase" value="false"/>
        <!--	MyBatis 利用本地缓存机制(Local Cache)防止循环引用和加速重复的嵌套查询。
        默认值为 SESSION,会缓存一个会话中执行的所有查询。 若设置值为 STATEMENT,本地缓存将仅用于执行语句,
        对相同 SqlSession 的不同查询将不会进行缓存。 -->
        <setting name="localCacheScope" value="SESSION"/>
        <!--		当没有为参数指定特定的 JDBC 类型时,空值的默认 JDBC 类型。 某些数据库驱动需要指定列的 JDBC
        类型,多数情况直接用一般类型即可,比如 NULL、VARCHAR 或 OTHER。 -->
        <setting name="jdbcTypeForNull" value="OTHER"/>
        <!--	指定对象的哪些方法触发一次延迟加载。 -->
        <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
    </settings>

    <typeAliases>
        <typeAlias type="test.entity.User" alias="user"/>
    </typeAliases>

    <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>
        <mapper resource="mybatis/UserMapper.xml"/>
    </mappers>

</configuration>

下面是一些为常见的 Java 类型内建的类型别名。它们都是不区分大小写的。

别名		映射的类型
_byte		byte
_long		long
_short		short
_int		int
_integer	int
_double		double
_float		float
_boolean	boolean
string		String
byte		Byte
long		Long
short		Short
int		Integer
integer		Integer
double		Double
float		Float
boolean		Boolean
date		Date
decimal		BigDecimal
bigdecimal	BigDecimal
object		Object
map	        Map
hashmap		HashMap
list		List
arraylist	ArrayList
collection	Collection
iterator	Iterator

类型处理器(typeHandlers)

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

如下列举几种

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值