【Java】Mybatis框架学习 vol3核心配置解析

对照参考:
https://www.bilibili.com/video/av69742084?p=6

mybatis-config.xml核心配置文件

properties(属性)
settings(设置)
typeAliases(类型别名)
typeHandlers(类型处理器)
objectFactory(对象工厂)
plugins(插件)
environments(环境配置)
environment(环境变量)
transactionManager(事务管理器)
dataSource(数据源)
databaseIdProvider(数据库厂商标识)
mappers(映射器)
环境配置(environments)

可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境。
在这里插入图片描述

事务管理器(transactionManager)

JDBC
直接使用JDBC的提交和回滚事务,依赖从数据源获得连接来管理事务作用域。
MANAGED
它从不提交或回滚一个连接,让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文)。 默认情况下它会关闭连接。然而一些容器并不希望连接被关闭,因此需要将 closeConnection 属性设置为 false 来阻止默认的关闭行为。

<transactionManager type="JDBC"/>

[如果使用Spring + MyBatis,则没必要配置事务管理器,Spring 模块会使用自带的管理器覆盖前面的配置。]

数据源(dataSource)

连接数据库(c3p0、druid、jdbcTemplate)

<dataSource type="POOLED">

三种内建的数据源类型:
UNPOOLED | POOLED | JNDI

UNPOOLED:没有连接池,即用即连,性能没有要求
POOLED: 连接池,用完回收
JNDI:正常连接

综上可知mybatis默认事务管理JDBC,数据源是POOLED


属性(properties)

通过properties来读取配置文件,实现动态配置

切换2为一个动态配置:

<environment id="development2">
	<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>

在当前包下创建对应的properties文件

src\main\resources\jdbc.properties
---------------------------------------------------
driver = com.mysql.jdbc.Driver
url = jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8&amp;useSSL=true&amp;serverTimezone=GMT&amp;useUnicode=true
username = root
password = 123456

回到mybatis-config.xml配置properties映射配置

<properties resource="jdbc.properties"/>

或者直接在properties 元素的子元素中设置。例如:
同时配置外部文件和子元素标签的情况下:
mybatis优先使用外部文件获取配置信息

<properties resource="org/mybatis/example/jdbc.properties">
  <property name="username" value="root"/>
  <property name="password" value="123456"/>
</properties>

注意标签dtd约束,properties必须为最开始的标签
在这里插入图片描述


类型别名(typeAliases)

为 Java 类型设置缩写名字。 它仅用于 XML 配置,降低冗余的全限定类名书写。

<typeAliases>
  <typeAlias alias="Author" type="domain.blog.Author"/>
  
  <!--这样配置Blog可以用在任何使用domain.blog.Blog的地方-->
  <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>

第一种别名方式(一个别名一个类):

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

第二种(绑定包路径,实体类的首字母自动小写):

指定一个包名,
MyBatis 会在包名下面搜索需要的 Java Bean,比如:
[若是要扫描多个包下的类,那就多定义几个packag的属性即可]
------------------------------------------------------
<typeAliases>
  <package name="domain.blog"/>
</typeAliases>
------------------------------------------------------
每一个在包 domain.blog 中的 Java Bean,
在没有注解的情况下,会使用 Bean 的首字母小写的非限定类名来作为它的别名。 
比如 domain.blog.Author 的别名为 author;
若有注解,则别名为其注解值。见下面的例子:
------------------------------------------------------
@Alias("author")
public class Author {
    ...
}

实体类的数量多,则使用第二种绑定包名方式
第一种可以自定义类的别名,第二种则需要注解实现别名

常见的Java 类型内建的类型别名。它们都是不区分大小写的,
注意,为了应对原始类型的命名重复,采取了特殊的命名风格。

基本类型映射:
----------------------------------
别名	映射的类型
_byte		byte
_long		long
_short		short
_int		int
_integer	int
_double		double
_float		float
_boolean	boolean
----------------------------------
包装类型及其他引用类型:
string		String
byte		Byte
long		Long
short		Short
int			Integer
integer		Integer
double		Double
float		Float
boolean		Boolean
date		Date
decimal		BigDecimal
bigdecimal	BigDecimal
object		Object
map			Map
hashmap		HashMap
list		List
arraylist	ArrayList
collection	Collection
iterator	Iterator

设置(settings)

MyBatis的调整设置,改变 MyBatis 的运行时行为

设置名						描述				有效值			默认值
cacheEnabled				开启缓存			true | false	true
lazyLoadingEnabled			懒加载			true | false	false
useGeneratedKeys			自动生成主键		true | false	False
mapUnderscoreToCamelCase	驼峰命名映射		true | false	False
logImpl						指定日志			SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING	未设置

样例:

<settings>
  <setting name="cacheEnabled" value="true"/>
  <setting name="lazyLoadingEnabled" value="true"/>
  <setting name="useGeneratedKeys" value="false"/>  
</settings>
映射器(mappers)

告诉 MyBatis 到哪里去找映射mapper.xml文件。

<mappers>
  <!-- 使用相对于类路径的资源引用 -->
  <mapper resource="org/mybatis/builder/BlogMapper.xml"/>
  
  <!-- 使用完全限定资源定位符(URL-->
  <mapper url="file:///var/mappers/AuthorMapper.xml"/>
  
  <!-- 使用映射器接口实现类的完全限定类名 -->
  <mapper class="org.mybatis.builder.AuthorMapper"/>
  
  <!-- 将包内的映射器接口实现全部注册为映射器 -->
  <package name="org.mybatis.builder"/>
</mappers>

要注意的是选择[class]和[package]属性绑定映射的前提条件是:
1、Dao接口和mapper配置必须同名
2、Dao接口和mapper配置必须在同一目录
推荐resource配置mapper

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值