配置在核心配置文件中

QQ图片20210412193957.png

Properties(属性)

1.据库这些属性都是可外部配置且可动态替换的,既可以在典型的 Java 属性文件中配置,亦可通过 properties 元素的子元素来传递。(查自官方文档)
屏幕截图 2021-04-12 203947.png
在xml中,所有标签都可以规定其顺序:properties必须写在最前面
2.外部导入配置文件
在目录资源下新建一个dp.properties文件

  1. driver=com.mysql.cj.jdbc.Driver
  2. url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=GMT&useSSL=false&useUnicode=true&characterEncoding=UTF-8
  3. username=root
  4. password=root

将文件导入properties 配置文件

  1. <properties resource="db.properties"/>
  2. <environments default="development">
  3. <environment id="development">
  4. <!--transactionManager事务管理-->
  5. <transactionManager type="JDBC"/>
  6. <dataSource type="POOLED">
  7. <property name="driver" value="${driver}"/>
  8. <property name="url" value="${url}"/>
  9. <property name="username" value="${username}"/>
  10. <property name="password" value="${password}"/>
  11. </dataSource>
  12. </environment>
  13. </environments>

3.内部导入
在核心配置文件中编写属性

<properties resource="db.properties">
        <property name="" value=""/>
 </properties>

外部导入优先级大于内部

Enviroments(环境配置)

MyBatis 可以配置成适应多种环境,这种机制有助于将 SQL 映射应用于多种数据库之中, 现实情况下有多种理由需要这么做。例如,开发、测试和生产环境需要有不同的配置;或者想在具有相同 Schema 的多个生产数据库中使用相同的 SQL 映射。还有许多类似的使用场景。
不过要记住:尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境。
(查自官网)

<environments default="development">
  <environment id="development">
    <transactionManager type="JDBC">
      <property name="..." value="..."/>
    </transactionManager>
    <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>

子元素节点:environment

transactionManager事务管理器

在Mynatis里有两种事务管理器:
JDBC: 这个配置直接使用了 JDBC 的提交和回滚设施,它依赖从数据源获得的连接来管理事务作用域。(默认)
MANAGED:让容器来管理事务的整个生命周期。一些容器并不希望连接被关闭,因此需要将 closeConnection 属性设置为 false 来阻止默认的关闭行为。

dataSource 数据源

连接数据库 dbcp c3p0 drUid
有三种内建的数据源类型(也就是 type=”[UNPOOLED|POOLED|JNDI]”):
UNPOOLED:没有连接池
POOLED:数据库连接池这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来,避免了创建新的连接实例时所必需的初始化和认证时间。 这种处理方式很流行,能使并发 Web 应用快速响应请求。 ( 默认)
JNDI:EGB

typeAliaases(类型别名)

类型别名是为Java类型设置一个短的名字。它只和 XML 配置有关,存在的意义仅在于用来减少类完全限定名的冗余。<br />

<typeAliases>
        <typeAlias type="com.sy.pojo.User" alias="User"/>
    </typeAliases>

User可以用在任何使用com.kuang.pojo.User的地方。

<typeAliases>
        <package name="com.sy.pojo"/>
    </typeAliases>

每一个在包 com.kuang.pojo 中的 Java Bean,在没有注解的情况下,会使用 Bean 的首字母小写的非限定类名来作为它的别名。
若有注解,则别名为其注解值。见下面的例子:

@Alias("hello")
public class User {

Setting(设置)

一个配置完整的 settings 元素的示例如下:

<settings>
  <setting name="cacheEnabled" value="true"/>
  <setting name="lazyLoadingEnabled" value="true"/>
  <setting name="multipleResultSetsEnabled" value="true"/>
  <setting name="useColumnLabel" value="true"/>
  <setting name="useGeneratedKeys" value="false"/>
  <setting name="autoMappingBehavior" value="PARTIAL"/>
  <setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
  <setting name="defaultExecutorType" value="SIMPLE"/>
  <setting name="defaultStatementTimeout" value="25"/>
  <setting name="defaultFetchSize" value="100"/>
  <setting name="safeRowBoundsEnabled" value="false"/>
  <setting name="mapUnderscoreToCamelCase" value="false"/>
  <setting name="localCacheScope" value="SESSION"/>
  <setting name="jdbcTypeForNull" value="OTHER"/>
  <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
</settings>

描述了设置中各项设置的含义、默认值的表:
https://mybatis.org/mybatis-3/zh/configuration.html#environments

typeHandlers(类型处理器)

识别sql语句中的字段名并转印,如果名字与数据库中不服,则查询为null

objectFactory(对象工厂)

plugins(插件)

mapper( 映射器)

是一个定义映射SQL语句文件
既然 MyBatis 的行为其他元素已经配置完了,我们现在就要定义 SQL 映射语句了。但是首先我们需要告诉 MyBatis 到哪里去找到这些语句。Java 在自动查找这方面没有提供一个很好的方法,所以最佳的方式是告诉 MyBatis 到哪里去找映射文件。你可以使用相对于类路径的资源引用, 或完全限定资源定位符(包括 file:/// 的 URL),或类名和包名等。映射器是MyBatis中最核心的组件之一,在MyBatis 3之前,只支持xml映射器,即:所有的SQL语句都必须在xml文件中配置。而从MyBatis 3开始,还支持接口映射器,这种映射器方式允许以Java代码的方式注解定义SQL语句,非常简洁。

引入资源方式

















Mapper文件

<?xml version=”1.0” encoding=”UTF-8” ?>
<!DOCTYPE mapper
PUBLIC “-//mybatis.org//DTD Mapper 3.0//EN”
http://mybatis.org/dtd/mybatis-3-mapper.dtd">


**