Mybatis配置文件

本文详细介绍了MyBatis的配置文件,包括configure和mapping文件的头信息,以及主要元素的作用。重点讲解了typeAliases(类型别名)的配置,如何简化SQL映射文件中类型声明,并展示了批量定义别名的方法。此外,还解析了settings标签,特别是常用配置项如缓存启用、自动映射行为和执行器类型等,帮助理解MyBatis的运行机制。
摘要由CSDN通过智能技术生成

Mybatis配置文件

configure配置文件头:

<?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">

mapping映射文件头:

<?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">

所含有元素

<?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/> <!-- 属性 -->
    <settings/> <!-- 设置 -->
    <typeAliases/> <!-- 类型命名 -->
    <typeHandlers/> <!-- 类型处理器 -->
    <objectFactory/> <!-- 对象工厂 -->
    <plugins/> <!-- 插件 -->
    <environments> <!-- 配置环境 -->
        <environment> <!-- 环境变量 -->
            <transactionManager/> <!-- 事务管理器 -->
            <dataSource/> <!-- 数据源 -->
        </environment>
    </environments>
    <databaseIdProvider/> <!-- 数据库厂商标识 -->
    <mappers/> <!-- 映射器 -->
</configuration>

但是需要注意的是,MyBatis 配置项的顺序不能颠倒。如果颠倒了它们的顺序,那么在 MyBatis 启动阶段就会发生异常,导致程序无法运行。

1.typeAliases作用
标签介绍:
在MyBatis的SQL映射配置文件中,常使用 parameterType、resultType之类的参数设置SQL语句的输入/输出参数,一般参数都是一个Java类型的数据,有基本数据类型或封装类型,但是一般都要声明该类型的全路径名称,例如“java.lang.String”、“java.util.HashMap”或者“com.pjb.mybatis.po.User”,如下:

<select id="findUserByUsername" parameterType="java.lang.String" resultType="com.gaga.shopping.pojo.User">
    SELECT * FROM USER WHERE username LIKE '%${value}%'
</select>

那么,是否可以像在Java类中一样,在某个地方声明该类的全路径名称,然后在使用是仅使用该类型的别名呢?通过设置MyBatis的全局配置文件中的typeAliases属性,就可以为SQL映射文件中的输入/输出参数设置类型别名,然后在SQL映射配置文件中指定输入/输出参数类型时使用别名,配置如下:

<!--别名设置-->
<typeAliases>
    <typeAlias alias="user" type="com.gaga.shopping.pojo.User"/>
    <typeAlias alias="str" type="java.lang.String"/>
</typeAliases>

此时在SQL映射配置文件中可以使用别名来指定输入/输出参数的类型:

<select id="findUserByUsername" parameterType="str" resultType="user">
    SELECT * FROM USER WHERE username LIKE '%${value}%'
</select>

当然,一般会将JavaBean类型的封装类放置在一个包下面(如本示例中的 com.pjb.mybatis.po 包)一个一个配置别名很繁琐,所以MyBatis提供了批量定义别名的方法,指定包名即可,程序会为该包下的所有包装类加上别名。c程序定义别名的规则就是对应包装类的类名首字母变为小写。配置如下:

<!--别名设置-->
<typeAliases>
    <package name="com.gaga.shopping.pojo"/>
</typeAliases>

别名也可以使用注解来实现,实现方式就是在需要指定别名的类声明头添加“@Alias”注解,其中的参数就是该类对应的别名,代码如下:

@Alias("user")
public class User{
    //其他代码
}

settings标签
在 MyBatis 中 settings 是最复杂的配置,它能深刻影响 MyBatis 底层的运行,但是在大部分情况下使用默认值便可以运行,所以在大部分情况下不需要大量配置它,只需要修改一些常用的规则即可,比如自动映射、驼峰命名映射、级联规则、是否启动缓存、执行器(Executor)类型等。settings 配置项说明

在这里插入图片描述
在这里插入图片描述
settings 的配置项很多,但是真正用到的不会太多,我们把常用的配置项研究清楚就可以了,比如关于缓存的 cacheEnabled,关于级联的 lazyLoadingEnabled 和 aggressiveLazy Loading,关于自动映射的 autoMappingBehavior 和 mapUnderscoreToCamelCase,关于执行器类型的 defaultExecutorType 等。

这里给出一个全量的配置样例:

<settings>
    <setting name="cacheEnabled" value="true"/>
    <setting name="lazyLoadingEnabled" value="true"/>
    <setting name="multipleResultSetsEnabled" value="true"/>
    <setting name="useColumnLabel" value="true"/>
    <setting name="useGeneratedKeys" value="false"/>
    <setting name="autoMappingBehavior" value="PARTIAL"/>
    <setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
    <setting name="defaultExecutorType" value="SIMPLE"/>
    <setting name="defaultStatementTimeout" value="25"/>
    <setting name="defaultFetchSize" value="100"/>
    <setting name="safeRowBoundsEnabled" value="false"/>
    <setting name="mapUnderscoreToCamelCase" value="false"/>
    <setting name="localCacheScope" value="SESSION"/>
    <setting name="jdbcTypeForNull" value="OTHER"/>
    <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
</settings>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值