首页 > 其他分享 >MyBatis

MyBatis

时间:2022-09-30 10:25:18浏览次数:50  
标签:缓存 作用域 Mybatis 二级缓存 SQL MyBatis

1. 概念

Mybatis 是一款半 ORM(对象关系映射)的持久层框架,支持定制化 SQL、存储过程以及高级映射。避免了几乎所有的 JDBC 代码和手动设置参数及获取结果集。可以使用注解或 XML 来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects) 为数据库中的记录。

2. ${} 与 #{} 区别

#{} 是占位符,预编译处理。Mybatis 在处理 #{} 时,会将 SQL 中的 #{} 替换为 ?号,然后再调用 PreparedStatement 的 set 方法赋值。

${} 是字符串替换。Mybatis 在处理 ${} 时,就是直接将 ${} 替换为变量的值。

使用 #{} 能有效地防止 SQL 注入,提高系统安全性。

3. Mybatis 执行步骤

  • 创建 SqlSessionFactory
  • 通过 SqlSessionFactory 创建 SqlSession
  • 通过 SqlSession 执行数据库操作
  • 调用 session.commit() 提交事务
  • 调用 session.close() 关闭会话

4. ResultType 与 ResultMap 区别

如果数据库结果集中列名与要封装的实体类属性名一致就用 ResultType。

如果不一致就用 ResultMap 手动配置对象关系映射,配置表和类的对应关系。

5. 动态 SQL

  • <if>

判断传入值是否符合某种规则,比如是否不为空。

  • <where>

动态拼接查询条件。

  • <foreach>

把传入的集合对象遍历,然后将每一项内容传入到 SQL 语句中。

  • <include>

将大量重复代码整理起来,使用直接调用。

  • <set>

适用于更新操作中,当匹配某个条件后才会对该字段进行更新操作。

6. MyBatis 缓存机制

MyBatis 有两级缓存,一级缓存是 SqlSession 级别的,默认开启且无法关闭。二级缓存是 Mapper 级别的,需要手动开启。

一级缓存是基于 PerpetualCache 的 HashMap 本地缓存,其作用域为 Session,当 Session commit 或 close 后,一级缓存将被清空。

二级缓存的作用域为 Mapper,使用二级缓存的属性需要实现 Serializable 接口。

对于缓存的数据更新,当某一个作用域执行增/删/改操作后,默认该作用域下所有缓存将被清空。

当配置文件配置了 cacheEnabled=true 时就会开启二级缓存,此时查询顺序为“二级缓存 -> 一级缓存 -> 数据库”。

标签:缓存,作用域,Mybatis,二级缓存,SQL,MyBatis
From: https://www.cnblogs.com/apachewang/p/16744019.html

相关文章

  • Mybatis学习
    什么是Mybatis?看官网的定义:MyBatis是一款优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的......
  • Mybatis(2022-09-29)
    SSMSpringMVC+Spring+Mybatis3SpringMVC:充当的就是Servlet的角色。可以理解为SpringMVC是Spring的WEB支持。1Mybatis:充当的就是Dao层。2Spring:充当的时一个润滑油......
  • springboot+mybatis 双数据源配置
    maven依赖spring-boot-starter-webmybatis-spring-boot-startermysql-connector-javalombokapplication.ymlserver:port:8080#启动端口spring:datasource:......
  • 05. MyBatis缓存
    一、MyBatis的一级缓存  一级缓存是SqlSession级别的,通过同一个SqlSession查询的数据会被缓存,下次查询相同的数据,就会从缓存中直接获取,不会从数据库重新访问。  ......
  • mybatis 参数为String,用_parameter 取值
    mybatis参数为String,iftest读取该参数代码:<selectid="getMaxDepartId"parameterType="java.lang.String"resultType="java.lang.String">SELECTMAX(DEPART_ID......
  • mybatis中大于等于小于等于的写法
    第一种写法(1):原符号<<=>>=&'"替换符号<<=>>=&amp;&apos;"例如:sql如下:create_date_time>=#{startTime}andcreate_date_time<=#{endTime} 第二种写法......
  • MyBatisPlus入门
    1、MyBatisPlus简介MyBatisPlus(简称MP)是基于MyBatis框架基础上开发的增强型工具,旨在简化开发、提高效率。官网:https://mybatis.plus/  https://mp.baomidou.com/1.1、......
  • Spring(十五):Spring整合MyBatis的两种方式
    在学习之前,我们先了解一个网站mybatis-spring,这是mybatis-spring整合的官方文档,里面有详细的教程,网址如下:https://mybatis.org/spring/zh/index.html一、什么是mybatis-s......
  • mybatis在spring mvc中的加载过程
    本地搭建了一套工程,把spring-5.2.x源码与mybatis-3.5.11源码做了整合,debug了一下mybatis-spring在springmvc中的加载过程。画了下面的图,删减了一些说明,图比较简练。后续......
  • mybatisPlus属性自动填充配置之MetaObjectHandler接口实战
    链接:https://blog.csdn.net/qq_42875345/article/details/113273533链接:https://www.cnblogs.com/liyh321/p/14430883.html ......