当前位置: 首页 > news >正文

Mybatis配置详解 | 深入理解 『带上CSDN一起玩转国庆』

在这里插入图片描述

文章目录

      • Mybatis简介
      • Mybatis重点配置解析
      • Mybatis编写代理接口和映射文件规范
      • 环境配置(environments)
      • 属性(properties)
      • 类型别名(typeAliases)
      • 设置(settings)
      • 映射器(mappers)

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>

相关文章:

  • 断断续续学习算法的5年
  • Qt 精确定时器
  • mysql中int(11)与int(1)的区别与联系
  • 【Vue】Vue的v-for指令
  • 【Hadoop---09】MapReduce:MapReduce概述
  • 黑马旅游网-配置项目(一)
  • 【C语言】continue 关键字
  • java基于springboot+Vue+nodejs的高校网上二手闲置跳蚤市场 element
  • JAVA计算机毕业设计超市进销存管理系统Mybatis+系统+数据库+调试部署
  • Java中ArrayList对象中trimToSize()方法具有什么功能呢?
  • B01-快速入门CSS
  • makefile的基础规则与命名方式
  • 自动驾驶仿真:角雷达坐标系转换详解
  • 教你如何制作浪漫的3D相册表白网站 HTML+CSS+JavaScript
  • 【Shell编程】Shell中for循环、while循环、until循环语句
  • 【Leetcode】104. 二叉树的最大深度
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • ➹使用webpack配置多页面应用(MPA)
  • CSS 三角实现
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • java小心机(3)| 浅析finalize()
  • Java知识点总结(JavaIO-打印流)
  • Less 日常用法
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • Vue 重置组件到初始状态
  • 番外篇1:在Windows环境下安装JDK
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 前端之Sass/Scss实战笔记
  • 区块链将重新定义世界
  • 使用parted解决大于2T的磁盘分区
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • (02)vite环境变量配置
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (C)一些题4
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • .Net 8.0 新的变化
  • .net Application的目录
  • .Net开发笔记(二十)创建一个需要授权的第三方组件
  • @RunWith注解作用
  • @Transactional类内部访问失效原因详解
  • [Android开源]EasySharedPreferences:优雅的进行SharedPreferences数据存储操作
  • [BJDCTF2020]The mystery of ip
  • [C++]二叉搜索树
  • [DAX] MAX函数 | MAXX函数
  • [HTML]Web前端开发技术12(HTML5、CSS3、JavaScript )——喵喵画网页
  • [java后端研发]——文件上传与下载(2种方式)
  • [JS真好玩] 掘金创作者必备: 监控每天是谁取关了你?
  • [NLP] 使用Llama.cpp和LangChain在CPU上使用大模型