mybatis 动态传入表名 注解_mybatis 标签 和注解 ( 动态 sql的 用法)

1. 动态 sql

mybatis  select 元素

总结:一般下执行完commit操作都需要刷新缓存,flushCache=true表示刷新缓存,这样可以避免数据库脏读。

注意:

(1)当为select语句时:

flushCache默认为false,表示任何时候语句被调用,都不会去清空本地缓存和二级缓存。

useCache默认为true,表示会将本条语句的结果进行二级缓存。

(2)当为insert、update、delete语句时:

flushCache默认为true,表示任何时候语句被调用,都会导致本地缓存和二级缓存被清空。

useCache属性在该情况下没有。

当为select语句的时候,如果没有去配置flushCache、useCache,那么默认是启用缓存的,所以,如果有必要,那么就需要人工修改配置

3.对应的pojo实现序列化(implements Serializable)

4.mybatis自身实现二级缓存弊端在于只能作用于数据库,此时需要我们引用第三方库作为缓存库,这样缓存更具有扩展性。。。(待

mybatis中还可以配置userCache和flushCache等配置项,userCache是用来设置是否禁用二级缓存的,useCache=false禁用当前select语句的二级缓存,即每次查询都会发出sql去查询,默认情况是true,即该sql使用二级缓存。

flushCache=”true”,默认情况下为true,即刷新缓存,如果改成false则不会刷新。使用缓存时如果手动修改数据库表中的查询数据会出现脏读。

注意:开启缓存的弊端是数据没有实时性,当数据库中的数据一旦修改,查询的数据还是缓存中的数据没有实时性,对于某些需要实时性显示数据的接口我们可以设置useCache="false",设置该属性后,该接口每次查询出来都是去执行sql查询出实时性数据。

https://mybatis.org/mybatis-3/zh/sqlmap-xml.html

官方文档赏析:

https://mybatis.org/mybatis-3/zh/java-api.html

如何获取最后一次插入的 ID

useGenerateKeys 只支持 mysql , sql server 这种

如果 用 mysql ,order 要设置 为 after , 而 Oracle 则是 设置 为 before ,因为 Oracle 是先拿到 id ,再插入到数据, mysql 则是插入后 自动生成的。

mybatis 动态 sql 用法

如果所有 的 if 都不成功, 不会加 where

如果只有一个 if 成功,就删除 where 后面的 那一个 and

mybatis 动态 sql 部分更新

但是 以上写法有问题, 最后一个 if 没有成功,前面 if 成功了, 会 加个 逗号,于是就出问题了

set 标签 会把最后一个 if 的逗号 去掉,这样 sql 更新就不会出问题了。。。

上面 的 where  ,set 分别解决 查询 和 更新问题, 还有一个 插入问题,也是用来解决多一个逗号的标签,trim

insert  只能用 trim 实现动态 sql

foreach 标签 用于解决 数组参数遍历问题

mybatis 使用批量操作的实现:

1. 使用 foreach 标签 批量执行

2. jdbc标准: jdbc本来就支持批量操作: 【mybatis 也可以使用 jdbc的批量操作】

之后 executeBatch() 返回数组,即 每条 sql 影响的 行数

Choose 和 when 的基本使用:

这个 是 最重要的: ddd ,最后 最重要的

为什么要配合 choose when 来使用:

不知道 有没有经历过这种处境:

1. 一张表,有多个  属性可以推导出 表中的某一行

比如:

1. 我使用自增主键 可以推到 那一行的数据

2. 比如我可以使用  学校 Id  + 个人学号 ID   推导出 那一行数据

3. 我可以使用 微信的 unionId  唯一确定 表中的那个数据

4. 我可以使用 微信 的 openID 唯一确定表中的那一行数据

5. 我还可以使用 身份证 唯一确定表中的那行数据

6. 我可以使用 email 账号 + password 的方式 唯一确定表中的那行数据

现在问题来了: 这么多属性,都可以唯一确定 表中的那行数据,我需不需要 把 6种场景 都写一条 sql ,还是 使用动态 sql 的方法?

答案是配合 where + choose 来实现多条件的选择,类似 switch 语句

这里就有个 优先级别判断了,比如 一张表的主键不为 null, 那么 优先使用主键查询

如果 unionID 不为null,再使用 unionID 查询,其他的也是这样

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/503486.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微型计算机的alu部件是包含在,微型计算机的ALU部件是什么?

计算机中执行各种算术和逻辑运算操作的部件。运算器的基本操作包括加、减、乘、除四则运算,与、或、非、异或等逻辑操作,以及移位、比较和传送等操作,亦称算术逻辑部件(ALU)。计算机运行时,运算器的操作和操作种类由控制器决定。运…

yolov4 开发环境搭建_YOLOv4 的各种新实现、配置、测试、训练资源汇总

点击上方“计算机视觉life”,选择“星标”快速获得最新干货近日最火的莫过于 YOLOv4 的横空出世,CV君在第一时间进行了 YOLOv4的论文解读:得到了大家的广泛关注。以下视频为 YOLOv4 在驾驶环境的测试结果:来自 https://www.youtub…

计算机基础知识的重点,计算机基础知识重点

计算机基础知识重点1、 第一台电子计算机诞生时间?2、 计算机的发展按照逻辑元件分为哪几个阶段?3、 计算机之父是谁?提出了什么原理?原理内容是什么?4、 计算机系统的组成5、 常见的输入输出设备有哪些?6、…

交换机putty怎么调试_使用在300和500系列托管型交换机的一个控制台连接通过PuTTY访问CLI...

目标交换机可以通过命令行界面(CLI)访问和配置。访问CLI在一个终端的基于窗口允许命令被输入。对于有更多体验用终端命令的用户,这可能是一更加容易的替代方案到导航Web配置工具。某些任务例如恢复管理员密码可能通过CLI只执行。为了访问CLI您必须使用SSH客户端。Pu…

春考天津计算机知识点,天津春季高考计算机模拟试题

天津春季高考计算机模拟试题一、单项选择题:每题2分,共20分。在每小题给出的四个选项中,只有一项是最符合题目要求的。1. 第一代电子计算机使用的电子元器件是( )A、晶体管 B、电子管 C、中小规模集成电路 D、大或超大规模集成电路2. 二进制数…

layui 传递前端请求_layui弹出层如何传值?

layui弹出层如何传值?下面本篇文章给大家介绍一下layui弹窗间的传值(layui弹出层传值)(窗口传值)。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。主要有两部分从主窗口传值到弹出层从弹出层传值到主窗口通过session互传通…

长春学校计算机科学技术学院,长春大学计算机科学技术学院

长春大学计算机科学技术学院介绍:长春大学计算机科学技术学院成立于1996年。目前,学院下设计算机科学与技术系、网络工程系、软件工程系、计算机基础教学部、计算机实验教学中心五个部门;有计算机科学与技术、网络工程、软件工程三个全日制本…

工具系列:TensorFlow决策森林_(5)使用文本和神经网络特征

文章目录 设置使用原始文本作为特征使用预训练的文本嵌入同时训练决策树和神经网络构建模型训练和评估模型 欢迎来到 TensorFlow决策森林( TF-DF)的 中级教程。 在本文中,您将学习有关 TF-DF的一些更高级的功能,包括如何处理自…

hive 导出json格式 文件_hive支持json格式的数据

Hive支持完全json格式的数据现有json格式的数据test.txt,如下{"name":"zhang","age":"20","sex":"man"}{"name":"li","age":"21","sex":"m…

超级计算机游戏电脑,Salad邀请PC玩家参与全球最大分布式超级计算机的构建

(来自:Salad 官网)据悉,自 2018 年成立以来,Salad 已经在 25 万名 PC 玩家的帮助下,利用闲置的硬件算力、以及开源的桌面应用程序,来帮助验证区块链交易。作为奖励,Salad 用户能够分享计算资源,…

pd对焦速度_捕捉爆炸瞬间!魅蓝Note6双PD对焦速度逆天

随着手机拍照技术的不断突破,手机拍照效果让我们惊叹不已。全新发布的魅蓝Note6手机之前已经被曝光了拍照样张,同时官网也在发布会前夕提出“全球最快的双摄,对焦速度是多少?今天就让我们通过实际样张,感受一下魅蓝Note6给我们带…

更换锁定计算机图片,电脑锁屏图片怎么设置

电脑锁屏图片怎么设置觉得电脑锁屏的图片单调没有新意?其实大家想知道电脑锁屏图片应该怎么设置吗?下面是小编推荐给大家的电脑锁屏图片怎么设置,希望大家有所收获。同时按下窗口键winR,调出运行对话框,如下图所示运行…

单片机音频谱曲软件_【自己写的小软件】CLY单片机音乐代码超级生成器

我比较喜欢动漫歌曲,最近用它打了《东京泰迪熊》到单片机里面,用P0.0做蜂鸣器输出口,挺好听的,分享一下源代码应该没什么问题吧?/*--------------------------------------------------------8051单片机音乐代码生成器…

六年级计算机应用计划,2017六年级信息技术下册教学计划

2017六年级信息技术下册教学计划制订教学计划必须按学生的特点制订,不能仿制照搬的计划,只有自己去试着做,摸索出自己的完整方法,才是最有用的。下面应届毕业生考试网小编为大家提供了2017六年级信息技术下册教学计划,…

aop统计请求数量_Spring-Boot+AOP+统计单次请求方法的执行次数和耗时情况-Go语言中文社区...

本篇结合aop(面向切面编程)的特性,对spring-boot项目下后端开发人员所关心的java代码的性能做了一次简单的统计,比如,前端发了一个post请求(一连串数据的保存),到了后端,首先是指定Controller的某个方法做接收&#xf…

xadmin的html文件,django xadmin(2) 在xadmin基础上完成自定义页面

1.在xadmin.py,GlobalSettings中自定义菜单2.自定义视图函数,并获取原来的菜单等一下信息(主要是为了用xadmin的模板),具体的自己看xadmin源码3.在adminx.py中注册路由4.html继承。例:xadmin.py:class GlobalSettings(object):sit…

python教程苹果版_python教程

https://www.xin3721.com/eschool/pythonxin3721/1、安装Homebrewhttps://brew.sh/index_zh-cn.html2、通过brew安装pyenv1)命令行输入:$ brew install pyenv(如果一直卡在Updating Homebrew就按ctrlc一次跳转brew update)2)在home目录的 .bash_profile文件中添加&a…

计算机网络与通信思维导图,用思维导图描述5G场景

随着全球首个5G火车站在上海虹桥火车站启动建设,5G时代离我们越来越近。去年底,工业和信息化部向三大运营商发送了5G系统中低频段试验频率使用许可,5G设备将开始试商用。5G毕竟是新技术,小编今天用思维导图给大家讲解一下5G场景&a…

pytorch 指定卡1_在pytorch中指定显卡

1. 利用CUDA_VISIBLE_DEVICES设置可用显卡在CUDA中设定可用显卡,一般有2种方式:(1) 在代码中直接指定import osos.environ[CUDA_VISIBLE_DEVICES] gpu_ids(2) 在命令行中执行代码时指定CUDA_VISIBLE_DEVICESgpu_ids python3 train.py如果使用sh脚本文件…

计算机学院五名学生开发手语app,大学生团队研发成功“聋人自然手语翻译器”APP...

把语音转换成文字,再将文字翻译成手语,在第25个“全国助残日”到来之际,江苏科技大学的一群平均年龄不到22岁的年轻创业者们,研发出了一款“聋人自然手语翻译器”,为普通人与聋哑群体搭建沟通的桥梁。拿起手机&#xf…