一、全局配置文件中的属性
mybatis全局配置中的文件非常多,主要有如下几个:
- properties(属性)
- settings(全局配置参数)
- typeAliases(类型别名)
- typeHandlers(类型处理器)
- objectFactory(对象工厂)
- plugins(插件)
- environments(环境集合属性对象)
- environment(环境集合属性子对象)
- transactionManager(事务管理器)
- dataSource(数据源)
- mappers(映射器)
1.1、properties
properties可以用来引入一个外部配置,最常见的例子就是引入数据库的基本配置信息,例如在resources目录新建了一个db.properties文件,内容如下:
db.driver=com.mysql.cj.jdbc.Driver db.url=jdbc:mysql://localhost:3306/20231101_mybatis?useSSL=false&useUnicode=true&characterEncoding=UTF8&serverTimezone=GMT db.username=root db.password=123456mybatis-config可配置为如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!-- 引入外部的配置文件 --><properties resource="db.properties"></properties><environments default="deployment"><environment id="deployment"><transactionManager type="JDBC"></transactionManager><dataSource type="POOLED"><!--# yml中的写法,xml中要把&转换为 &driver: jdbc:mysql://localhost:3306/20231101_mybatis?useSSL=false&useUnicode=true&characterEncoding=UTF8&serverTimezone=GMT--><!--<property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/20231101_mybatis?useSSL=false&useUnicode=true&characterEncoding=UTF8&serverTimezone=GMT"/><property name="username" value="root"/><property name="password" value="123456"/>--><!-- 读取外部配置文件中的信息进行注入 --><property name="driver" value="${db.driver}"/><property name="url" value="${db.url}"/><property name="username" value="${db.username}"/><property name="password" value="${db.password}"/></dataSource></environment></environments><!--配置mapper的位置注意事项:如果xxxMapper.xml是在resources目录配置的,那么需要创建和src中mapper同名的Directory才行,否则的话就会报"org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)错误"(1)如果xxxMapper.xml文件和xxxMapper在同一个目录,需要配置为package方式,并且修改pom.xml的配置信息(2)如果xxxMapper.xml文件想单独配置在resources目录,如将其放在resources/mappers目录,可以使用mapper的方式--><mappers><!----><package name="org.star.mapper"/><!--<mapper resource="mappers/UserMapper.xml"></mapper>--></mappers></configuration>
1.2、settings
1.3、typeAliases
<typeAliases><!--批量起别名:此处配置的是为 org.star.entity.model 包下的所有持久层类起别名起别名规则:首字母小写,例如UserDO的别名是userDO,这样配置的话在xxxMapper.xml中的返回值就不用写类的完整路径了--><package name="org.star.entity.model"/>
</typeAliases>
1.4、typeHandlers
八种基本数据类型的增删改查之所以能够处理成功,就是因为有上边的各种类型的默认处理器,这些处理器处理基本数据类型够用了,但是要是处理特殊类型就需要我们自定义类型处理器了,比如User有一个爱好字段,类型为 private List<String> interests; 在数据库中对应的类型为varchar,那么这种情况下就需要我们自定义类型处理器了,这个自定义的类型处理器需要满足如下功能:
(1)数据存储时,自动地将List集合转换为字符串(格式自定义);
(2)数据查询时,将查询到的字符串在转换为List集合;
1.5、mappers
xxxMapper.xml配置位置的几种写法:
<mappers><!-- 方式一: --><!--<mapper resource="mappers/UserMapper.xml"></mapper>--><!--方式二:使用绝对路径,不推荐--><!--<mapper url="D:\augenstemn@gitee\mybatis-parent\mybatis\src\main\java\org\star\mapper\UserMapper.xml"></mapper>--><!-- 方式三:使用mapper接口路径注意事项:此种方式要求mapper接口和映射文件的名称相同,且放在同一个目录中 --><!--<mapper class="org/star/mapper/UserMapper.xml"></mapper>--><!-- 方式四:注册指定包下的所有mapper接口注意事项:此种方式要求mapper接口和映射文件的名称相同,且放在同一个目录中 实际项目中多采用此种方式,推荐 --><package name="org.star.mapper"/>
</mappers>