一、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>
但是这样也有问题,当一个项目有上百个实体类时候,如果通过类的别名去使用则将会非常麻烦,需要写上百行类别名标签。所以还有一种方法,设置标签,该标签会自动将该包下所有类名称改为默认类名
<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 语句。 |