什么是Mybatis配置解析?(源码+图文)
什么是Mybatis配置解析?(源码+图文)
1. 核心配置文件
- mybatis-config.xml
configuration(配置)properties(属性)settings(设置)typeAliases(类型别名)typeHandlers(类型处理器)objectFactory(对象工厂)plugins(插件)environments(环境配置)environment(环境变量)transactionManager(事务管理器)dataSource(数据源)databaseIdProvider(数据库厂商标识)mappers(映射器)
2. 环境配置(environments)
MyBatis 可以配置成适应多种环境
不过要记住:尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境。
Mybatis 默认的事务管理器是JDBC,连接池:POOLED
3. 属性
我们可以通过properties属性来引用配置文件
这些属性可以在外部进行配置,并可以进行动态替换。你既可以在典型的 Java 属性文件中配置这些属性,也可以在 properties 元素的子元素中设置。 (db.properties)
编写一个配置文件
db.properties
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true
username=root
password=123456
在核心配置文件中引入
mybatis-config.xml (同时有的话,优先走外面properties)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--核心配置文件-->
<configuration><!-- 引入外部配置文件--><properties resource="db.properties"><property name="username" value="root"/><property name="password" value="123456"/></properties><!-- 给实体类起别名--><typeAliases>
<!-- <typeAlias type="com.kk.pojo.User" alias="User"></typeAlias>--><package name="com.kk.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><!-- 每一个Mapper.xml都需要在Mybatis核心配置文件中注册--><mappers><mapper resource="com/kk/dao/UserMapper.xml"/>
<!-- <mapper class="com.kk.dao.UserMapper"></mapper>-->
<!-- <package name="com.kk.dao"/>--></mappers></configuration>
4. 类型别名(typeAliases)
类型别名可为 Java 类型设置一个缩写名字。
<!-- 给实体类起别名--><typeAliases>
<typeAlias type="com.kk.pojo.User" alias="User"></typeAlias></typeAliases>
扫描实体类的包,默认别名就为这个类的类名首字母小写
<typeAliases><package name="com.kk.pogo"></package>
</typeAliases>
在实体类,比较少的时候使用第一种,实体类多使用第二种。
第一种可以自定义,第二则不行,但是 若有注解,则别名为其注解值 。
@Alias("hello")
public class User {}
5. 设置
设置名 | 描述 | 有效值 | 默认值 |
---|---|---|---|
cacheEnabled | 全局性地开启或关闭所有映射器配置文件中已配置的任何缓存。 | true | false | true |
lazyLoadingEnabled |
延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。 特定关联关系中可通过设置 fetchType 属性来覆盖该项的开关状态。
|
true | false | false |
logImpl | 指定 MyBatis 所用日志的具体实现,未指定时将自动查找。 | SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING | 未设置 |
6. 其他
- typeHandlers(类型处理器)
- objectFactory(对象工厂)
- plugins(插件)
- mybatis-generator-core
- mybatis-plus
- 通用mapper
7. 映射器
方式一: [推荐使用]
<mappers><mapper resource="com/kk/dao/UserMapper.xml"/>
</mappers>
方式二:
<mappers><mapper class="com.kk.dao.UserMapper" />
</mappers>
- 接口和它的Mapper必须同名
- 接口和他的Mapper必须在同一包下
方式三:
<!-- 每一个Mapper.xml都需要在Mybatis核心配置文件中注册--><mappers>
<package name="com.kk.dao"/></mappers
- 接口和它的Mapper必须同名
- 接口和他的Mapper必须在同一包下
8.生命周期和作用域
作用域和生命周期类别是至关重要的,因为错误的使用会导致非常严重的并发问题。
SqlSessionFactoryBuilder:
- 一旦创建了 SqlSessionFactory,就不再需要它了 。
- 局部变量
SqlSessionFactory:
- 就是数据库连接池。
- 一旦被创建就应该在应用的运行期间一直存在 ,没有任何理由丢弃它或重新创建另一个实例 。 多次重建 SqlSessionFactory 被视为一种代码“坏习惯”。
- 因此 SqlSessionFactory 的最佳作用域是应用作用域。
- 最简单的就是使用单例模式或者静态单例模式。
SqlSession:
- 每个线程都应该有它自己的 SqlSession 实例。
- 连接到连接池的请求!
- SqlSession 的实例不是线程安全的,因此是不能被共享的 ,所以它的最佳的作用域是请求或方法作用域。
- 用完之后赶紧关闭,否则资源被占用。
什么是Mybatis配置解析?(源码+图文)相关推荐
- 【SpringBoot】最新版2019Spring Boot配置解析,源码解析(速成SpringBoot)——学习笔记版【2】
SpringBoot配置文件 文章目录 SpringBoot配置文件 四.配置文件 1.简介 2.YAML用法 2.1 简介 2.2语法 3.为属性注入值 3.1使用.yml配置文件 3.1编写.ym ...
- Mybatis 缓存系统源码解析
Mybatis 缓存系统源码解析 转载于:https://juejin.im/post/5bfa50905188251d0920006c
- 超详细!ArrayList源码图文解析
不诗意的女程序媛不是好厨师~ 转载请注明出处,From李诗雨-[https://blog.csdn.net/cjm2484836553/article/details/104329665] <超 ...
- ❤️缓存集合(一级缓存、二级缓存、缓存原理以及自定义缓存—源码+图文分析,建议收藏) ❤️
❤️缓存集合(一级缓存.二级缓存.缓存原理以及自定义缓存-源码+图文分析,建议收藏) ❤️ 查询 : 连接数据库 ,耗资源!一次查询的结果,给他暂存在一个可以直接取到的地方!--> 内存 : 缓 ...
- Java-Mybatis(二): Mybatis配置解析、resultMap结果集映射、日志、分页、注解开发、Mybatis执行流程分析
Java-Mybatis-02 学习视频:B站 狂神说Java – https://www.bilibili.com/video/BV1NE411Q7Nx 学习资料:mybatis 参考文档 – ht ...
- 【JAVA秘籍心法篇-Spring】Spring XML解析源码详解
[JAVA秘籍心法篇-Spring]Spring XML解析源码详解 所谓天下武功,无坚不摧,唯快不破.但有又太极拳法以快制慢,以柔克刚.武功外式有拳打脚踢,刀剑棍棒,又有内功易筋经九阳神功.所有外功 ...
- java B2B2C springmvc mybatis电子商务平台源码-Consul服务发现原理...
Consul 是什么 Consul 是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件,由 HashiCorp 公司用 Go 语言开发, 基于 Mozilla Public License ...
- java B2B2C springmvc mybatis电子商务平台源码
用java实施的电子商务平台太少了,使用spring cloud技术构建的b2b2c电子商务平台更少,大型企业分布式互联网电子商务平台,推出PC+微信+APP+云服务的云商平台系统,其中包括B2B.B ...
- 《一步一步看源码:Nacos》框架源码系列之一(其1,配置服务源码)
Nacos源码 因为最近项目在做容器化处理,容器化后涉及到不同进程对同一个文件的读写,考虑到可能会存在同一文件的配置文件,可能会把彼此覆盖掉,所以这里学习一下Nacos源码. 整体结构图 这边 ...
最新文章
- 分享一个MD5加密的工具类
- pld与微型计算机的区别,VLSI 复习题与思考题
- CentOS-6.4 minimal - 安装VMware Tools(linux)
- Linux 基础学习(第一节)
- 华硕计算机用户名默认,华硕路由器后台默认网址是多少
- android电池(五):电池 充电IC(PM2301)驱动分析篇【转】
- 创建 Spring容器的三种方式
- java vector_Java Vector elements()方法与示例
- linux查看机器配置命令,linux 下查看机器配置的几个命令
- android横向纵向切换,【报Bug】安卓竖屏切换到横屏后,再切换回竖屏,不能正常还原...
- Ubuntu下Chrome打不开解决办法
- 力软使用技巧-前端(index)
- 【密码学】抽象代数——群(学习笔记)
- EXCEL表格F4绝对引用突然失效,无反应
- 巧用GoldWave预设,设置音频效果模板!
- 电脑眼病和干眼症的相关知识
- 转一篇千与千寻的影评。。。
- 百度语音识别jar下载
- ubuntu18.04配置静态ip
- 用JSP/Servlet构建三层式管理信息系统