- 属性优化
- 别名优化
- 映射器说明
1.核心配置文件说明(mybatis-config.xml)
先看一下我的核心配置文件的总体大概:
代码语言:javascript复制<?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="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=utf8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/xiong/dao/UserMapper.xml"/>
</mappers>
</configuration>
configuration(配置):
properties(属性) settings(设置) typeAliases(类型别名) typeHandlers(类型处理器) objectFactory(对象工厂) plugins(插件) environments(环境配置) — environment(环境变量) — transactionManager(事务管理器) — dataSource(数据源) databaseIdProvider(数据库厂商标识) mappers(映射器)
1.1 环境变量(environments)
Mybatis可以适用于多种环境配置,其中选择default就行。
- transactionManager(事务管理器)-- JDBC / MANAGED (我们一般选择JDBC)
- dataSource(数据源)-- UNPOOLED / POOLED / JNDI (在这里我们也选择POOLED) 需要注意的地方: 1.也许Mybatis可以配置很多的环境,但是每个SqlSessionFactory 只会选择一个环境去执行 2.学会使用对个环境…在下面添加就行 3.Mybatis 默认的事务管理器就是 JDBC , 连接池 : POOLED
<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="${pwd}"/>
</dataSource>
</environment>
</environments>
1.2 属性(properties)
通过设置db.properties去引用该配置文件吗,可通过 properties 元素的子元素来传递。 之前的配置:
代码语言:javascript复制 <environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=utf8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
如何编写一个db.properties呢? 通过 properties 元素的子元素来传递(db.properties)
代码语言:javascript复制driver = com.mysql.jdbc.Driver
url = jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=utf8
user = root
password = 123456
注意:千万不要忘记在配置文件中引入properties。 以下是更改后的配置文件
代码语言:javascript复制 <properties resource="db.properties"></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="${user}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
关于这个优先级的问题:(如果属性在配置文件中也进行了配置,不止在db.properties中进行配置)
1.首先读取db.properties中属性的配置 2.然后根据 properties 元素中的 resource 属性读取类路径下属性文件,或根据 url 属性指定的路径读取属性文件,并覆盖之前读取过的同名属性。 3.最后读取作为方法参数传递的属性,并覆盖之前读取过的同名属性。 因此,通过方法参数传递的属性具有最高优先级,resource/url 属性中指定的配置文件次之,最低优先级的则是 properties 元素中指定的属性。
2.别名
2.1 类型别名(typeAliases)
方法一: 类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写。例如:
代码语言:javascript复制<typeAliases>
<typeAlias alias="Author" type="domain.blog.Author"/>
<typeAlias alias="Blog" type="domain.blog.Blog"/>
<typeAlias alias="Comment" type="domain.blog.Comment"/>
<typeAlias alias="Post" type="domain.blog.Post"/>
<typeAlias alias="Section" type="domain.blog.Section"/>
<typeAlias alias="Tag" type="domain.blog.Tag"/>
</typeAliases>
方法二: 当这样配置时,Blog 可以用在任何使用 domain.blog.Blog 的地方。也可以指定一个包名,MyBatis 会在包名下面搜索需要的 Java Bean,比如:
代码语言:javascript复制<typeAliases>
<package name="domain.blog"/>
</typeAliases>
方法三: 每一个在包 domain.blog 中的 Java Bean,在没有注解的情况下,会使用 Bean 的首字母小写的非限定类名来作为它的别名。 比如 domain.blog.Author 的别名为 author;若有注解,则别名为其注解值。见下面的例子:
代码语言:javascript复制@Alias("author")
public class Author {
...
}
2.2 设置(settings)
这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。 具体配置参数查看 Mybatis 中文官方文档:https://mybatis.org/mybatis-3/zh/configuration.html#settings 以下展示部分参数(不需要全部记住,用的时候查就行)
3.映射器设置
3.1 Mappers映射
既然 MyBatis 的行为已经由上述元素配置完了,我们现在就要来定义 SQL 映射语句了。 但首先,我们需要告诉 MyBatis 到哪里去找到这些语句。 在自动查找资源方面,Java 并没有提供一个很好的解决方案,所以最好的办法是直接告诉 MyBatis 到哪里去找映射文件。 方法一(推荐使用)-- 使用相对于类路径的资源引用
代码语言:javascript复制<!-- 使用相对于类路径的资源引用 -->
<mappers>
<mapper resource="org/mybatis/builder/AuthorMapper.xml"/>
<mapper resource="org/mybatis/builder/BlogMapper.xml"/>
<mapper resource="org/mybatis/builder/PostMapper.xml"/>
</mappers>
方法二(不推荐) – 使用完全限定资源定位符(URL)
代码语言:javascript复制<!-- 使用映射器接口实现类的完全限定类名 -->
<mappers>
<mapper class="org.mybatis.builder.AuthorMapper"/>
<mapper class="org.mybatis.builder.BlogMapper"/>
<mapper class="org.mybatis.builder.PostMapper"/>
</mappers>
方法三 – 使用映射器接口实现类的完全限定类名
代码语言:javascript复制<!-- 使用映射器接口实现类的完全限定类名 -->
<mappers>
<mapper class="org.mybatis.builder.AuthorMapper"/>
<mapper class="org.mybatis.builder.BlogMapper"/>
<mapper class="org.mybatis.builder.PostMapper"/>
</mappers>
注意:
- 接口和他的 Mapper 配置文件必须同名
- 接口和他的 Mapper 配置文件必须在同一个包下
方法四 – 将包内的映射器接口实现全部注册为映射器
代码语言:javascript复制<!-- 将包内的映射器接口实现全部注册为映射器 -->
<mappers>
<package name="org.mybatis.builder"/>
</mappers>