Mybatis 简介
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
Mybatis 重点配置解析
Mybatis 中文文档网址 | https://mybatis.org/mybatis-3/zh/index.html
Mybatis 编写代理接口和映射文件规范
映射文件中的 namespace 需要和接口的全限定名保持一致
映射文件中 statement 语句中 ID 必须和接口的方法名保持一致
映射文件中 statement 的 parameterType 必须和接口方法的参数类型保持一致
映射文件中 statement 的 resultType 必须和接口方法的返回值保持一致
statement 即 Mapper.xml 文件中的查询语句
环境配置(environments)
Mybatis 可以适应多种环境
Tip:尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境
<environments default="development">
<environment id="development">
<transactionManager type="JDBC">
//POOLED:池连接,下一次连接可以继续在池中连接
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
-
default:选择
默认环境
,根据命中的环境id
名 -
transactionManager:事务管理器( type="[JDBC|MANAGED]"))
-
dataSource:数据源(连接数据库 type="[UNPOOLED|POOLED|JNDI]"))
-
driver
– 这是 JDBC 驱动的 Java 类全限定名(并不是 JDBC 驱动中可能包含的数据源类) -
POOLED
– 这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来,避免了创建新的连接实例时所必需的初始化和认证时间。 这种处理方式很流行,能使并发 Web 应用快速响应请求。
属性(properties)
可以通过 properties 属性来实现引用配置文件
这些属性可以在外部进行配置,并可以进行
动态替换
。你既可以在典型的Java 属性文件
中配置这些属性,也可以在 properties 元素的子元素中设置 Java 属性文件:db.properties
-
resources 包下新建 db.properties 文件中编写配置文件
driver:com.mysql.jdbc.Driver
url:jdbc:mysql://localhost:3306/mybatis?useSSL=true&characterEncoding=UTF-8
username:root
password:root
-
然后在 Mapper.xml 文件中写 properties 标签
-
在 xml 中,所有的标签都需要按规定其顺序书写:
-
properties-setting-typeAliases-typeHandlers-objectFactory-objectWrapperFactory-plugins-environments-databaselProvider-mappers
-
db.properties 文件的优先级>Mapper.xml 文件的优先级
<!--引入外部配置文件-->
<properties resource="db.properties"/>
<!--Mapper.xml文件可以直接引用db.properties的属性-->
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
类型别名(typeAliases)
类型别名可为 Java 类型设置一个缩写名字
它仅用于 XML 配置,意在降低冗余的全限定类名书写
方式一:
<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>
方式二:
指定一个包名,MyBatis 会在包名下面搜索需要的 Java Bean
<typeAliases>
<package name="domain.blog"/>
</typeAliases>
实体类注解别名
@Alias("author")
public class Author {
...
}
设置(settings)
这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。 下表描述了设置中各项设置的含义、默认值等 详见 Mybatis 官方文档
映射器(mappers)
MapperRegistry(映射器注册):注册绑定我们的 Mapper 文件
Tip:
-
接口和 Mapper 配置文件必须同名
-
接口和 Mapper 配置文件必须在同一个包下
方式一:使用相对于类路径的资源引用 [推荐使用]
<!--每一个Mapper.xml都需要在Mybatis核心配置文件中注册-->
<mappers>
<mapper resource="指定映射器Mapper.xml文件路径"/>
</mappers>
方式二:使用映射器接口实现类的完全限定类名
<!-- 使用映射器接口实现类的完全限定类名 -->
<mappers>
<mapper class="指定映射器Mapper接口实现类文件路径"/>
</mappers>
方式三:使用扫描包进行注入绑定
<!-- 将包内的映射器接口全部注册为映射器 -->
<mappers>
<package name="指定映射器Mapper包的文件路径"/>
</mappers>