目录
一、environments环境配置
二、propertis资源配置
三、typeAliases类型别名
四、mappers映射
五、其他标签
一、environments环境配置
标签名 | 描述 |
---|---|
<environments> | 用于配置多个环境的容器标签,可以包含多个 <environment> 子标签。 |
<environment> | 用于配置单个环境的标签,在 <environments> 内使用,包含数据库连接信息、事务管理器等配置。 |
<transactionManager> | 用于配置事务管理器的标签,在 <environment> 内使用,用于管理数据库操作的事务。 |
<dataSource> | 用于配置数据源的标签,在 <environment> 内使用,包含数据库连接池、连接参数等配置。 |
<?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选择其中的某一个环境
如下所示,一般一个项目只用一个环境,而此处使用的环境是id为development也可以改成test
-->
<environments default="development">
<!-- environment:设置一个具体连接数据库的环境
id为唯一标识,不能重复
-->
<environment id="development">
<!--
transactionManager:设置事务管理器
type:设置事务管理方式
type只有两种类型:JDBC || MANAGED
JDBC:表示使用原生的JDBC的事务管理方式
MANAGED:被管理,在Spring整合MyBatis时候可以由AOP声明式事务管理
-->
<transactionManager type="JDBC"/>
<!--
dataSource:设置数据源
type:设置数据源的类型
type类型 POOLED || UNPOOLED || JNDI
POOLED:表示数据库连接池,当连接完毕后,每一次连接时候就不需要重新去与数据库进行连接,直接从数据库连接池中获取
UNPOOLED:表示不使用数据库连接池,每一次的连接都需要重新进行连接
JNDI:(了解) 表示使用上下文中的数据源
-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mysqltest"/>
<property name="username" value="mysql"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
<!-- environment为环境配置,id为唯一标识-->
<environment id="test">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mysqltest"/>
<property name="username" value="mysql"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!-- 配置映射文件-->
<mappers>
<!-- 这个暂时不需要设置默认为空就行,在后面具体操作的时候再进行配置-->
<mapper resource="mappers/UserMapper.xml"/>
</mappers>
</configuration>
二、propertis资源配置
标签名 | 描述 |
---|---|
<properties> | 用于包含一组属性配置的容器标签。 |
<property> | 用于定义单个属性的标签,在 <properties> 内使用,包含属性的键值对信息。 |
有两种方式可以使用properties资源配置
第一种是直接使用property标签表示资源名称与对应的值
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!--
资源:通过设置资源,进行配置
-->
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mysqltest"/>
<property name="username" value="mysql"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
第二种是通过propertis文件导入的形式配置文件内容
资源包内容
jdbc.driver = com.mysql.cj.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/mysqltest
jdbc.username = mysql
jdbc.password = xxxxxx
通过引入资源包后,使用${key}访问对应value的值
<configuration>
<!-- 1.记得先通过引入资源包(jdbc.properties)后,此后可以通过${key}的方式访问value
-->
<properties resource="jdbc.properties"/>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!--
通过使用"${key}"的方式访问对应的value
-->
<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>
<mapper resource="mappers/UserMapper.xml"/>
</mappers>
</configuration>
注意在配置文件中使用配置标签的顺序是 properties?,settings?,typeAliases?,typeHandlers?, objectFactory?,objectWrapperFactory?,reflectorFactory?, plugins?,environments?,databaseIdProvider?,mappers? 如果不按照此顺序执行则会报错
三、typeAliases类型别名
标签名 | 描述 |
---|---|
<typeAliases> | 用于配置类型别名的容器标签,用于简化 MyBatis 的配置。 |
<typeAlias> | 用于定义单个类型别名的标签,在 <typeAliases> 内使用,可以将 Java 类型映射为短的别名。 |
<package> | 用于扫描指定包下的类并自动添加类型别名,在 <typeAliases> 内使用,该标签会自动扫描指定包下的类并将其类名作为别名。 |
<configuration>
<!-- 注意在配置文件中使用配置标签的顺序是
properties?,settings?,typeAliases?,typeHandlers?,
objectFactory?,objectWrapperFactory?,reflectorFactory?,
plugins?,environments?,databaseIdProvider?,mappers?
如果不按照此顺序执行则会报错
-->
<properties resource="jdbc.properties"/>
<!-- typeAliases 类型别名复数标签-->
<typeAliases>
<!-- type:设置类型的值
alias:设置类型的别名
-->
<typeAlias type="com.alphamilk.mybatis.pojo.User" alias="UserReal"/>
</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>
<mapper resource="mappers/UserMapper.xml"/>
</mappers>
</configuration>
在接口方法对应映射的xml配置文件中可以通过
typeAliases有两种设计模式,一种是通过设置alias对应值,另一种是默认标签,不设置alias,则当前类型有默认的类名,并且不区分大小写。
<typeAliases>
<!-- type:设置类型的值
alias:设置类型的别名
-->
<!-- 有两种类型别名方法,一种是通过设置alias-->
<typeAlias type="com.alphamilk.mybatis.pojo.User" alias="UserReal"/>
<!-- 第二种是只设置type,alias默认为类名,并且不区分大小写
如下所示,默认名称为User
-->
<typeAlias type="com.alphamilk.mybatis.pojo.User"></typeAlias>
</typeAliases>
但是这样也有问题,当一个项目有上百个实体类时候,如果通过类的别名去使用则将会非常麻烦,需要写上百行类别名标签。所以还有一种方法,设置<package>标签,该标签会自动将该包下所有类名称改为默认类名
<typeAliases>
<!-- type:设置类型的值
alias:设置类型的别名
-->
<!-- 有两种类型别名方法,一种是通过设置alias-->
<typeAlias type="com.alphamilk.mybatis.pojo.User" alias="UserReal"/>
<!-- 第二种是只设置type,alias默认为类名-->
<!-- <typeAlias type="com.alphamilk.mybatis.pojo.User"></typeAlias>-->
<package name="com.alphamilk.mybatis.pojo"/>
</typeAliases>
四、mappers映射
标签名 | 描述 |
---|---|
<mappers> | 用于配置映射器(Mapper)的容器标签,用于指定 MyBatis 映射器的配置方式。 |
<mapper> | 用于指定单个映射器(Mapper)的标签,在 <mappers> 内使用,用于指定映射器的配置文件路径或类名。 |
<package> | 用于扫描指定包下的映射器接口,并自动添加到 MyBatis 的配置中,在 <mappers> 内使用,该标签会自动扫描指定包下的映射器接口,并将其添加到 MyBatis 的配置中。 |
由于ORM结构,一张表对应一个实体类对应一个接口对应一个映射
而映射的设置有两种
一种是正常导入映射文件,但是缺点很明显,一次只能导入一个xml映射,当有很多个实体类时候就会变得非常麻烦,所以引入了包package,大批量导入映射xml
<mappers>
<mapper resource="mappers/UserMapper.xml"/>
</mappers>
使用包导入
<mappers>
<!-- <mapper resource="mappers/UserMapper.xml"/>-->
<!-- 使用package导入映射文件-->
<!-- 以包的方式引入映射文件,但是必须满足两个条件
1,mapper接口和映射文件所在的包必须一致
2,mapper接口的名字和映射文件的名字必须一致 -->
<package name="com.alphamilk.mybatis.mapper"/>
</mappers>
注意:
以包的方式引入映射文件,但是必须满足两个条件
1,mapper接口和映射文件所在的包必须一致
2,mapper接口的名字和映射文件的名字必须一致
五、其他标签
标签名 | 描述 |
---|---|
<plugins> | 用于配置插件的容器标签,可以在 MyBatis 执行过程中拦截和修改某些操作行为。 |
<settings> | 用于配置 MyBatis 全局设置的标签,包含各种全局配置选项。 |
<typeHandlers> | 用于配置类型处理器的容器标签,用于处理 Java 类型与数据库类型之间的映射。 |
<objectFactory> | 用于配置对象工厂的标签,用于创建结果对象的实例。 |
<objectWrapperFactory> | 用于配置对象包装工厂的标签,用于包装结果对象。 |
<reflectorFactory> | 用于配置反射工厂的标签,用于缓存类的反射信息。 |
<databaseIdProvider> | 用于配置数据库标识提供者的标签,用于根据数据库产品名称动态选择 SQL 语句。 |