Mybatis核心配置文件
命名:习惯命名为 mybatis-config.xml(习惯命名,非强制) 位置:resources文件夹下 加粗代表文件,正常代表文件夹
先放上一篇文章中配置的Mybaits核心配置文件。
<!-- 声明xml的版本号和编码类型-->
<?xml version="1.0" encoding="UTF-8" ?>
<!-- 设置mybatis约束 -->
<!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"/> //事务管理器,类型JDBC
<dataSource type="POOLED"> //数据源,pooled表示数据库连接池
<property name="driver" value="com.mysql.jdbc.Driver"/> //驱动名称
//链接地址
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8"/>
//数据库账号和密码(按实际情况来)
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!-- 引入映射文件-->
<mappers>
<mapper resource="mappers/UserMapper.xml"/>
</mappers>
</configuration>
在configuration中,我们可以添加标签,用来管理Mybatis配置,类似"environments","mappers"等,可以称为标签。
核心配置文件中的 引入标签的顺序: 是由约束决定的 通过约束 【ctrl+鼠标左键】 可以进入 约束查看
下面介绍几个常用的标签
1、properties
- 作用:用于设置属性,这些属性都是可外部配置和可动态替换的。引入properties文件,此时就可以${属性名}的方式访问属性值
- 例子:
在resources中添加文件jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
#jdbc:url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=123456
此时,在mybatis-config.xml中,就可使用${属性名}的方式访问属性值
此时的environments 如下所示
<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.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
可以看到,原来的配置信息都使用${jdbc.xxx}来代替。
2、settings
- 作用:用来配置一些改变运行时行为的信息,例如是否使用缓存机制,是否使用延迟加载,是否使用错误机制等。并且可以设置最大并发请求数量、最大并发事务数量,以及是否启动命名空间等
- 例子:
<settings>
<!--将表中字段的下划线自动转换为驼峰-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
<!--开启延迟加载-->
<setting name="lazyLoadingEnabled" value="true"/>
<!-- 设置是否启动缓存 -->
<setting name="cacheEnabled" value="true"/>
</settings>
3、typeAliases
- 作用:别名设置,用来设置一些别名来代替Java的长类型声明(如java.lang.int变成int),减少配置编码的冗余
- 例子:
<typeAliases>
<!--
type:需要设置别名的类型的全类名
alias:设置此类型的别名,且别名不区分大小写。若不设置此属性,该类型拥有默认的别名,即类名
-->
<!--方法一-->
<!--<typeAlias type="com.mlzx.entity.User"></typeAlias>-->
<!--方法二-->
<!--<typeAlias type="com.mlzx.entity.User" alias="user"></typeAlias>-->
<!--方法三-->
<!--以包为单位,设置改包下所有的类型都拥有默认的别名,即类名且不区分大小写-->
<package name="com.mlzx.mapper"/>
</typeAliases>
- 区别:方法一和二和方法三比较,在配置类较多的时候,会有一定的冗余,所以一般采用方法三。
4、mappers
- 作用:引入映射文件
<!--引入映射文件-->
<mappers>
<!--方法一-->
<!-- <mapper resource="UserMapper.xml"/> -->
<!--方法二-->
<!--以包为单位,将包下所有的映射文件引入核心配置文件
注意:
1. 此方式必须保证mapper接口和mapper映射文件必须在相同的包下
2. mapper接口要和mapper映射文件的名字一致
-->
<package name="com.mlzx.entity"/>
</mappers>
最终配置文件
<?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文件,此时就可以${属性名}的方式访问属性值-->
<properties resource="jdbc.properties" />
<typeAliases>
<!--
typeAlias:设置某个具体的类型的别名
属性:
type:需要设置别名的类型的全类名
alias:设置此类型的别名,且别名不区分大小写。若不设置此属性,该类型拥有默认的别名,即类名
-->
<!-- <typeAlias type="com.mlzx.entity.User" alias="User"></typeAlias>-->
<!--以包为单位,设置改包下所有的类型都拥有默认的别名,即类名且不区分大小写-->
<package name="com.mlzx.entity"/>
</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.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!-- 引入映射文件-->
<mappers>
<package name="com.mlzx.mapper"/>
</mappers>
</configuration>
查询测试结果
[User{id=1, username='张三', password='12345', age=23, sex='男', email='1234@qq.com'},
User{id=6, username='admins', password='12345', age=23, sex='男', email='1234@qq.com'}]