几分钟带你快速了解MyBatis框架理论知识!

2023-11-11

1.Mybatis框架是什么?

mybatis是一款非常优秀的持久化框架,也是一个半ORM(对象关系映射)框架。mybatis框架它支持sql语句的定制化、存储过程和高级映射。mybatis避免了JDBC代码和手动设置参数和获取结果集。mybatis使用简单的xml或者是注解方式配置和映射原生类型、接口和java的实体类为数据库中的记录。

2.Mybatis编程步骤是什么?

第一步:创建SqlSessionFactory

第二步:通过SqlSessionFactory创建sqlSession

第三步:使用sqlSession执行数据库的操作

第四步:使用sqlSession.commit完成事务的提交

第五步:使用sqlSession.close进行资源的关闭

3.在Mybatis中,$和#的区别是什么?

${}是字符串替换,#{}是占位符

${}在执行的过程中,直接将字符串内容进行了替换

#{}在执行的过程中,会将#{}替换成?,使用preparedStatement调用set来完成数据的赋值,然后执行。使用#{}能够防止sql注入,安全性更高。

4.在Mybatis中,resultType和resultMap的区别是什么?

如果数据库结果的列名和实体类的属性可以一一对应的话,使用resultType。如果数据库结果的列名和实体类的属性不能实现一一对应的话,使用resultMap完成映射,resultMap需要配置一下表和类的一一对应关系,因此数据库结果的列名和属性名可以不用一致,也能够给你映射出来。

5.在Mybatis中,常用的动态sql标签有哪些?分别有什么作用?

<if>:if用来匹配是否满足某种特定规则,比如是否为空

<where>:where是用来动态拼接查询条件,和if配合使用可以省略掉无效的where 1=1 的写法

<include>:如果有大量可重复利用的代码,可以用include进行整合,完了需要的时候完成调用即可,实现了代码的复用。

<foreach>:foreach可以将传入的集合对象进行循环遍历,将对象作为参数传入sql语句。

<set>:set用于更新,只有匹配成功才能够完成更新操作。

6.Mybatis缓存机制?

一级缓存:sqlSession级别的,默认是开启状态,不能够被关闭。数据查询顺序:一级缓存->数据库。

场景:例如查询用户为用户1的数据,在执行的时候会从缓存里面获取数据,如果没获取到的话会从数据库里面查询,查到后也会同时放到缓存里面。等到第二次查询用户为用户1的数据,直接从缓存里面获取即可。

在里面需要注意的是,如果sqlSession失效了,或者sqlSession关闭了,或者在两次查询中间执行了CUD操作,或者执行了clear操作,缓存里面的数据都可能失效。

二级缓存:mapper级别的,默认是关闭状态,如果需要使用需要开启。在配置文件里面将cacheEnable设置为true。数据查询顺序:二级缓存->一级缓存->数据库。

场景:例如查询用户为用户1的数据,在执行的时候会从二级缓存里面获取,然后没有的话再去一级缓存获取,若还是没有找到则从数据库里面获取。由于不同的业务可能需要获取相同的数据,但是每个service层都有自己的sqlSession在完成后都会被关闭,但是使用了二级缓存后当sqlSession关闭或提交后二级缓存的数据都会被放置里面。等到有需要获取的时候,就可以先从二级缓存里面获取到,如果发现没获取到失效了可以从一级缓存、数据库依次获取。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

几分钟带你快速了解MyBatis框架理论知识! 的相关文章

随机推荐

  • html怎样去除超链接的样式_前端从入门到精通

    HTML 标题 标题 Heading 是通过 h1 h6 等标签进行定义的 h1 定义最大的标题 h6 定义最小的标题 注释 浏览器会自动地在标题的前后添加空行 注释 默认情况下 HTML 会自动地在块级元素前后添加一个额外的空行 比如段落
  • 基于卷积神经网络(cnn)的手写数字识别(PyTorch)

    目录 1 1 卷积神经网络简介 1 2 神经网络 1 2 1 神经元模型 1 2 2 神经网络模型 1 3 卷积神经网络 1 3 1卷积的概念 1 3 2 卷积的计算过程 1 3 3 感受野 1 3 4 步长 1 3 5 输出特征尺寸计算
  • mac塔防闯关游戏:气球塔防6 for Mac(BloonsTD6)v38.3中文原生版

    气球塔防6 是由Ninja Kiwi制作的一款塔防游戏 是该系列作品的第六代 游戏于2018年11月发布 在游戏中 玩家需要使用各种防御塔和特殊技能 防止气球带着猴子进入终点 并摧毁猴子们的城镇 游戏中有多种不同类型的气球和猴子 每个气球和
  • 系统重装系列(三)

    系统重装系列 三 接着上期的一系列操作完成后 接下来是我对于系统设置调整 使得系统更加简洁好用 上期回顾 系统重装系列 二 打酱油的杯具的博客 CSDN博客 任务栏 这是刚刚到手的任务栏 个人喜欢小图标 并且要去掉搜索框和右边更新的这个无卵
  • javaJDBC——连接mysql数据库

    java连接数据库的五种方法 最好的效率最高的是第五种 package com webtest connection import java io IOException import java io InputStream import
  • thinkphp:在解决join多表联查的时候,解决关联表默认加上前缀的问题

    问题 由上图看出正确的应该是表so lines all 而现在变为了fa so line all 故表不存在 初始代码 data db table wip jobs all gt alias a 设置wip jobs all的别名 gt j
  • vue el-form-item :rules动态校验实现

    1 form表单中
  • 【Transformer】15、PoolFormer: MetaFormer is Actually What You Need for Vision

    文章目录 一 背景和动机 二 方法 2 1 MetaFormer 2 2 PoolFormer 三 效果 四 代码 论文链接 https arxiv org pdf 2111 11418 pdf 代码链接 https github com
  • 写Python爬虫的准备工作

    写Python爬虫的准备工作 学习Python也有一段时间了 前段时间开始搞爬虫 刚开始真是头再铁也撞出血来 不过经过一段时间的摸索 总是是基本入门了 以后的路只能慢慢爬了 今天就来总结下开始爬虫之前 需要做什么准备工作 同时也是作为第一篇
  • 如何找到优秀的软件外包开发公司

    软件项目是一个复杂的系统工程 需要全面考虑 顶层设计 底层细化的方式 找公司前还是要自己懂一些技术 不懂就找一个懂技术的朋友帮着把关一下 否则很可能做不好项目 目前创业的人多 开发公司也很多 当你自己不懂的时候很难选择 北京木奇移动技术有限
  • 声音合集

    系统声音 package com ahsoft tachymeterapp utils import android media Ringtone import android media RingtoneManager import an
  • 计算机网络期末复习

    资料篇 计算机网络谢希仁版简答题题库 百度文库 习题篇 计算机网络简答题总结 百度文库 计算机网络第5章试题 百度文库 HCNE题库官网最新完整第篇传输层协议原理 附答案详解 百度文库 我又来了 想好好说一下这个复习题 you know关于
  • 哈希表(散列表)详解

    今天的每一秒都是珍贵的 因为它永远不会再次出现 作者 不能再留遗憾了 专栏 Java学习 本文章主要内容 深入理解哈希表 散列表 散列函数的几种构造方法以及解决哈希冲突的方法 文章目录 前言 什么是哈希表 哈希表相对于其他的查找结构有什么优
  • npm报错Error: ENOENT: no such file or directory, mkdir

    报错如下 解决方法 检查C Users Administrator目录下的 npmrc是否有问题 笔者的电脑上面没有F盘 删掉这一行后直接就能用了 最后 排错不易 如果问题没解决可以看这个文章 https blog csdn net kel
  • Faster R-CNN/R-FCN里mAP的计算过程(voc_eval.py解析)

    Faster R CNN R FCN在github上的python源码用mAP来度量模型的性能 mAP是各类别AP的平均 而各类别AP值是该类别precision prec 对该类别recall rec 的积分得到的 即PR曲线下面积 关于
  • C 语言使用Libcurl /curl 发送数据 (可以设置http header)

    1 环境Windows 2 依赖库文件 头文件
  • swoole-redis连接池的问题总结

    答题小程序遇到的问题 1 使用swoole的redis池爆满之后 无法调试 也不会报错 但是使用strace调试代码跟踪会出现 出现原因如下 1 代码出错 2 连接池爆满 解决方案 使用下面插件作为连接池 因为他有 一个定时关闭redis链
  • 【Teradata】windows部署安装Teradata数据库(附虚拟机扩展包)

    一 teradata 官网地址 点击此处 注 下载 需要科学上网 安装包链接 Teradata17 10版本 二 解压压缩包 注 第一个是Teradata for ODBC 第二个是Teradata虚拟机扩展包 三 安装 3 1打开VMwa
  • AlexNet imagenet classification with deep convolutional neural networks 阅读笔记

    NIPS 2012 imagenet classification with deep convolutional neural networks Paper 该网络有60 000 000个参数 650 000个神经元 包含5个卷积层 有一
  • 几分钟带你快速了解MyBatis框架理论知识!

    1 Mybatis框架是什么 mybatis是一款非常优秀的持久化框架 也是一个半ORM 对象关系映射 框架 mybatis框架它支持sql语句的定制化 存储过程和高级映射 mybatis避免了JDBC代码和手动设置参数和获取结果集 myb