MyBatis配置解析

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: MyBatis配置解析

1、核心配置文件


  • mybatis-config.xml 系统核心配置文件
  • MyBatis 的配置文件包含了会深深影响 MyBatis行为的设置和属性信息。
  • 能配置的内容如下:
configuration(配置)
    properties(属性)    
    settings(设置)    
    typeAliases(类型别名)    
    typeHandlers(类型处理器)    
    objectFactory(对象工厂)    
    plugins(插件)    
    environments(环境配置)        
    environment(环境变量)            
    transactionManager(事务管理器)            
    dataSource(数据源)    
    databaseIdProvider(数据库厂商标识)    
    mappers(映射器) 
<!-- 注意元素节点的顺序!顺序不对会报错 -->


2、environments元素

<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>


  • 配置MyBatis的多套运行环境,将SQL映射到多个不同的数据库上,必须指定其中一个为默认运行 环境(通过default指定)


  • 子元素节点:environment
  • 具体的一套环境,通过设置id进行区别,id保证唯一!
  • 子元素节点:transactionManager - [ 事务管理器 ] <!-- 语法 --> <transactionManager type="[ JDBC | MANAGED ]"/>
  • 这两种事务管理器类型都不需要设置任何属性。


  • 子元素节点:数据源(dataSource)
  • dataSource 元素使用标准的 JDBC 数据源接口来配置 JDBC 连接对象的资源。
  • 数据源是必须配置的
  • 有三种内建的数据源类型type="[UNPOOLED|POOLED|JNDI]")
  • unpooled: 这个数据源的实现只是每次被请求时打开和关闭连接。
  • pooled: 这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来 , 这是一种使得 并发 Web 应用快速响应请求的流行处理方式。
  • jndi:这个数据源的实现是为了能在如 Spring 或应用服务器这类容器中使用,容器可以 集中或在外部配置数据源,然后放置一个 JNDI 上下文的引用
  • 数据源也有很多第三方的实现,比如dbcp,c3p0,druid等等


3、mappers元素


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


2.引入资源方式

<!-- 使用相对于类路径的资源引用 --> 
<mappers>  
<mapper resource="org/mybatis/builder/PostMapper.xml"/> 
</mappers>
<!-- 使用完全限定资源定位符(URL) --> 
<mappers>  
<mapper url="file:///var/mappers/AuthorMapper.xml"/> 
</mappers>
<!-- 使用映射器接口实现类的完全限定类名 需要配置文件名称和接口名称一致,并且位于同一目录下 --> 
<mappers>  
<mapper class="org.mybatis.builder.AuthorMapper"/> 
</mappers>
<!-- 将包内的映射器接口实现全部注册为映射器 但是需要配置文件名称和接口名称一致,并且位于同一目录下 --> 
<mappers>  
<package name="org.mybatis.builder"/> 
</mappers>


  1. 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">
<mapper namespace="com.kuang.mapper.UserMapper">     
</mapper>


  • namespace中文意思:命名空间,作用如下
  • namespace和子元素的id联合保证唯一 , 区别不同的mapper
  • 绑定DAO接口
  • namespace的命名必须跟某个接口同名
  • 接口中的方法与映射文件中sql语句id应该一一对应
  • namespace命名规则 : 包名+类名


MyBatis 的真正强大在于它的映射语句,这是它的魔力所在。由于它的异常强大,映射器的 XML 文件就 显得相对简单。如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% 的代 码。MyBatis 为聚焦于 SQL 而构建,以尽可能地为你减少麻烦。

4. Properties优化

数据库这些属性都是可外部配置且可动态替换的,既可以在典型的 Java 属性文件中配置,亦可通过 properties 元素的子元素来传递。


优化配置文件


第一步:在资源目录下新建一个db.properties

driver=com.mysql.jdbc.Driver 
url=jdbc:mysql://localhost:3306/mybatis? useSSL=true&useUnicode=true&characterEncoding=utf8 
username=root 
password=123456


第二步:将文件导入properties配置文件

configuration>
    <!--引入外部配置文件-->
    <properties resource="db.properties">
    </properties>
    <!--可以给实体类起别名-->
    <typeAliases>
        <typeAlias type="com.zang.pojo.User" alias="User"/>
    </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="${pwd}"/>
            </dataSource>
        </environment>
    </environments>
    <!--每一个Mapper.XML都需要在Mybatis核心配置文件中注册!-->
    <mappers>
        <mapper resource="com/zang/dao/UserMapper.xml"/>
        <!--<mapper class="com.kuang.zang.UserMapperper-->
        <!--<package name="com.zang.dao"/>-->
    </mappers>
</configuration>


  1. typeAliases优化
    类型别名是为 Java 类型设置一个短的名字。它只和 XML 配置有关,存在的意义仅在于用来减少类完全 限定名的冗余
<!--配置别名,注意顺序--> 
<typeAliases>    
<typeAlias type="com.zang.pojo.User" alias="User"/> 
</typeAliases>


当这样配置时, User 可以用在任何使用 com.zang.pojo.User 的地方

也可以指定一个包名,MyBatis 会在包名下面搜索需要的 Java Bean,比如:

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


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

若有注解,则别名为其注解值。见下面的例子:

@Alias("user") 
public class User {    
... 
}



相关文章
|
23天前
|
缓存 NoSQL Java
Mybatis学习:Mybatis缓存配置
MyBatis缓存配置包括一级缓存(事务级)、二级缓存(应用级)和三级缓存(如Redis,跨JVM)。一级缓存自动启用,二级缓存需在`mybatis-config.xml`中开启并配置映射文件或注解。集成Redis缓存时,需添加依赖、配置Redis参数并在映射文件中指定缓存类型。适用于查询为主的场景,减少增删改操作,适合单表操作且表间关联较少的业务。
|
2月前
|
SQL Java 数据库连接
canal-starter 监听解析 storeValue 不一样,同样的sql 一个在mybatis执行 一个在数据库操作,导致解析不出正确对象
canal-starter 监听解析 storeValue 不一样,同样的sql 一个在mybatis执行 一个在数据库操作,导致解析不出正确对象
|
2月前
|
域名解析 存储 缓存
DNS是什么?内网电脑需要配置吗?
【10月更文挑战第22天】DNS是什么?内网电脑需要配置吗?
492 1
|
3月前
|
机器学习/深度学习 调度
mmseg配置解析 Polynomial Decay 多项式衰减
Polynomial Decay(多项式衰减)是一种常用的学习率调度方法,通过多项式函数逐步减少学习率,帮助模型更好地收敛。公式为:\[ lr = (lr_{initial} - \eta_{min}) \times \left(1 - \frac{current\_iter}{max\_iters}\right)^{power} + \eta_{min} \]。参数包括初始学习率、最小学习率、当前迭代次数、总迭代次数和衰减指数。适用于需要平滑降低学习率的场景,特别在训练后期微调模型参数。
99 0
mmseg配置解析 Polynomial Decay 多项式衰减
|
3月前
|
JSON JavaScript 前端开发
深入解析ESLint配置:从入门到精通的全方位指南,精细调优你的代码质量保障工具
深入解析ESLint配置:从入门到精通的全方位指南,精细调优你的代码质量保障工具
142 0
|
3月前
|
编解码 计算机视觉
mmseg配置解析 align_corners=False
`align_corners=False` 是图像插值操作中的一个参数,影响输入和输出图像的角点对齐方式。`align_corners=True` 严格对齐角点,而 `align_corners=False` 均匀分布像素点,更适用于保持整体比例关系的任务,如语义分割。
70 0
|
3月前
|
机器学习/深度学习 编解码
mmseg配置解析 contract_dilation=True
`contract_dilation=True` 是 ResNetV1c 中的一种设置,用于解决多层膨胀卷积中的“栅格效应”。通过调整膨胀率,使卷积核在不同阶段更密集地覆盖输入特征图,避免信息丢失,提升特征提取质量,尤其在语义分割任务中效果显著。
65 0
|
11天前
|
前端开发 Java 数据库连接
Java后端开发-使用springboot进行Mybatis连接数据库步骤
本文介绍了使用Java和IDEA进行数据库操作的详细步骤,涵盖从数据库准备到测试类编写及运行的全过程。主要内容包括: 1. **数据库准备**:创建数据库和表。 2. **查询数据库**:验证数据库是否可用。 3. **IDEA代码配置**:构建实体类并配置数据库连接。 4. **测试类编写**:编写并运行测试类以确保一切正常。
27 2
|
3月前
|
Java 数据库连接 Maven
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和MyBatis Generator,使用逆向工程来自动生成Java代码,包括实体类、Mapper文件和Example文件,以提高开发效率。
188 2
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
|
3月前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
122 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块

推荐镜像

更多