录🤺
🕊XML配置前言
MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置(settings)和属性(properties)信息。
在mybatis中配置信息是存在先后顺序的
具体顺序:
🕊Properties属性
这些属性可以在外部进行配置,并可以进行动态替换。你既可以在典型的 Java 属性文件中配置这些属性,也可以在 properties 元素的子元素中设置。
在与mybatis-config.xml配置文件同级目录下建一个db.properties
🕊第一种: Java 属性文件中配置
🔺db.properties
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
username=root
password=123456
🔺mybatis-config.xml
<?xml version="1.0" encoding="UTF8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--核心配置文件-->
<configuration>
<properties resource="db.properties"></properties>
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<typeAliases>
<package name="com.xmonster.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>
</configuration>
🕊第二种:在 properties 元素的子元素中设置
🔺db.properties
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
#注释以下两个属性
#username=root
#password=123456
🔺mybatis-config.xml
<!-- 引入外部配置文件-->
<properties resource="db.properties">
<property name="username" value="root"/>
<property name="password" value="123456"/>
</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>
🕊优先级
如果两个文件有同一个字段,优先使用外部配置文件,而且外部配置文件错了,里面对也没有用
🕊类型别名(typeAliases)
🌐类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写。
🕊方式一:typeAlias
特点:可以DIY别名
🔺mybatis-config.xml
<typeAliases>
<typeAlias type="com.xmonster.pojo.User" alias="User"></typeAlias>
</typeAliases>
🔺UserMapper.xml
<select id="getUserList" resultType="User">
select * from mybatis.user
</select>
🕊方式二:使用package
指定一个包名,Myabtis会在包名下面搜索需要的java bean
它的默认名就为这个类的类名首字母小写
<typeAliases>
<!-- <typeAlias type="com.xmonster.pojo.User" alias="User"></typeAlias>-->
<package name="com.xmonster.pojo"/>
</typeAliases>
🕊使用注解
🔺UserMapper.xml
<select id="getUserList" resultType="xmonster">
select * from mybatis.user
</select>
🕊适用场景和注意事项
- 当对象比较少的时候选择第一种
- 当对象比较多的时候选择第二种
- 第一种可以DIY别名;第二种则不可,若想指定,可以使用注解
- 一般情况下,使用了第一种情况,我们就用首字母大写,使用了第二种就是首字母小写,这样方便我们知道使用了哪一种方式
🕊配置环境
🌐MyBatis 可以配置成适应多种环境,这种机制有助于将 SQL 映射应用于多种数据库之中, 现实情况下有多种理由需要这么做。例如,开发、测试和生产环境需要有不同的配置;或者想在具有相同 Schema 的多个生产数据库中使用相同的 SQL 映射。还有许多类似的使用场景。
不过要记住:尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境。
环境切换:
直接修改< environments default=“development”>里default里的值即可
🕊事务管理器(transactionManager)
🌐在 MyBatis 中有两种类型的事务管理器(也就是 type="[JDBC|MANAGED]"):
🔺JDBC – 这个配置直接使用了 JDBC 的提交和回滚设施,它依赖从数据源获得的连接来管理事务作用域。(默认选择这个)
🔺MANAGED – 这个配置几乎没做什么。它从不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文)。 默认情况下它会关闭连接。然而一些容器并不希望连接被关闭(老一辈的EGB),因此需要将 closeConnection 属性设置为 false 来阻止默认的关闭行为。
🔺如果你正在使用 Spring + MyBatis,则没有必要配置事务管理器,因为 Spring 模块会使用自带的管理器来覆盖前面的配置。
🕊数据源(dataSource)
🌐dataSource 元素使用标准的 JDBC 数据源接口来配置 JDBC 连接对象的资源。
有三种内建的数据源类型(也就是 type="[UNPOOLED|POOLED|JNDI]")
数据库“池子”概念回顾:就是用完可以回收,让web响应更加快
🔺UNPOOLED– 这个数据源的实现会每次请求时打开和关闭连接。虽然有点慢,但对那些数据库连接可用性要求不高的简单应用程序来说,是一个很好的选择。 性能表现则依赖于使用的数据库,对某些数据库来说,使用连接池并不重要,这个配置就很适合这种情形。
🔺POOLED– 这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来,避免了创建新的连接实例时所必需的初始化和认证时间。 这种处理方式很流行,能使并发 Web 应用快速响应请求。(默认选择这个)
🔺JNDI – 这个数据源实现是为了能在如 EJB 或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个 JNDI 上下文的数据源引用。
🕊映射器Mappers
方式一:找到他的完全限定名即可,使用相对于类路径的资源引用
<!-- 使用相对于类路径的资源引用 -->
<mappers>
<mapper resource="com/xmonster/dao/UserMapper.xml"/>
</mappers>
方式二:使用class文件方法, 使用映射器接口实现类的完全限定类名
<mappers>
<mapper class="com.xmonster.dao.UserMapper"/>
</mappers>
方法三:使用包内的映射器接口(扫描包进行注入绑定),将包内的映射器接口实现全部注册为映射器
<mappers>
<package name="com.xmonster.dao"/>
</mappers>
方法二、方法三注意点:
- 接口和它的Mapper配置文件必须同名!
- 接口和它的Mapper配置文件必须在同一个包下!
-并且它们的连接都是用“.”进行连接
<mappers>
<mapper resource="com.xmonster.dao.*Mapper.xml"/>
</mappers>
将该目录下所有xml文件通配