xml配置文件指的是MyBatis的核心配置文件,包括数据库连接信息、mapper映射器、别名配置等,本文只是简单记了一点学习笔记,想要了解更多,可以参考MyBatis中文文档 https://mybatis.org/mybatis-3/zh/configuration.html
可以根据官网介绍新建一个基础的xml文件,然后根据自己的需要配置指定项即可,文件名可以自定义,文件位置也可以自己指定,只需要在 SqlSessionFactoryBuilder
的 build
中传入进行使用即可。
// mybatis_config.xml就是我自定义的配置文件,并放在src/main/resources目录下, // 因为是在maven项目中,所以maven会自动到src/main/resources下寻找对应的文件 String resource = "mybatis_config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
注: mybatis中的配置项是有先后顺序的,不能随意配置,配置的先后顺序为 properties > settings > typeAliases > typeHandlers > objectFactory > objectWrapperFactory > reflectorFactory > plugins > environments > databaseIdProvider > mappers
,如果没有该配置项,则可以跳过。在IDEA中如果配置错了顺序,它会提示你正确的顺序的。
可以将一些配置项(如数据库连接信息)单独配置在properties文件中,然后在xml配置文件中使用 properties
标签将properties文件的内容引入到xml配置文件中,properties文件中的配置项以 ${config_name}
的方式进行引用。 properties
标签下也可以定义 property
子标签,用于单独配置属性。
例如:在 src/main/resources
下新建一个db.properties文件配置数据库连接信息。
driver=com.mysql.cj.jdbc.Driver url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8 password=123456
然后在mybatis配置文件中进行引用。
<configuration> <!-- 引入外部配置文件 --> <properties resource="db.properties"> <!-- 单独配置属性 --> <property name="username" value="root"/> </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> </configuration>
在mapper.xml映射文件中引用实体类时,每次都需要输入实体类的完整路径,如果使用到地方比较多的话,可以为对应实体类的路径配置别名。可以在mybatis配置文件中使用 typeAliases
标签为实体类配置别名,配置方式有两种,一种是直接在mybatis配置文件中指定别名,另一种是在mybatis配置文件中指定包名,指定包名后,mybatis可以直接在包中寻找对应的实体类。
直接指定别名
配置别名后直接在对应mapper.xml映射文件中使用别名即可。
mybatis配置文件
<configuration> <properties resource="db.properties"/> <typeAliases> <!-- 直接为某个具体的实体类指定别名 --> <typeAlias type="com.mb.pojo.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.xml映射文件 --> <mapper resource="com/mb/dao/UserMapper.xml" /> </mappers> </configuration>
UserMapper.xml文件
<mapper namespace="com.mb.dao.UserMapper"> <!-- resultType的值使用的就是配置后的别名 --> <select id="getUserList" resultType="User"> select * from mybatis.user; </select> </mapper>
指定包路径
指定了包路径后,mybatis可以直接扫描该包下的所有实体类,然后自动为该类指定别名为类的首字母小写形式。如果不想使用它默认的别名方式,可以在实体类上使用注解进行自定义。
mybatis配置文件
<configuration> <properties resource="db.properties"/> <typeAliases> <!-- 指定包路径,默认别名为类的首字母小写形式 --> <package name="com.mb.pojo"/> </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.xml映射文件 --> <mapper resource="com/mb/dao/UserMapper.xml" /> </mappers> </configuration>
mapper.xml文件
<mapper namespace="com.mb.dao.UserMapper"> <!-- resultType的值使用的就是类名首字母小写形式的别名 --> <select id="getUserList" resultType="user"> select * from mybatis.user; </select> </mapper>
通过在实体类上使用注解自定义别名
package com.mb.pojo; import org.apache.ibatis.type.Alias; // 通过注解的方式配置别名 @Alias("common_user") // 实体类 public class User {}
默认别名
除了自定义别名之外,mybatis还有一些默认的别名可以直接使用,具体见 https://mybatis.org/mybatis-3/zh/configuration.html#typeAliases
别名 | 映射的类型 |
---|---|
_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 |
映射器即 mappers
配置项,作用就是将mapper.xml映射文件和操作实体类的接口对应起来,让接口中的方法时可以与mapper.xml映射文件中的SQL关联起来,配置方式有三种:配置xml文件路径、配置接口路径和配置包路径。
配置xml文件路径
示例如下:
<configuration> <mappers> <!-- 路径分隔符为斜杠 --> <mapper resource="com/mb/dao/UserMapper.xml" /> </mappers> </configuration>
配置接口路径
配置接口路径的方式需要注意:mapper.xml需要和接口同名,且在同一包下。
<configuration> <mappers> <mapper class="com.mb.dao.UserMapper"/> </mappers> </configuration>
配置包路径
配置包路径和配置接口路径一样:mapper.xml需要和接口同名,且在同一包下。
<configuration> <mappers> <package name="com.mb.dao"/> </mappers> </configuration>