SpringBoot整合MybatisPlus实战动态SQL,java定时器实现原理
- 打印结果
- 也就是说,你传什么值 它会根据你传的值来拼接sql,不传值则不拼接,这种相对来说比较简单,易于理解。
【注意】 下文所有的请求都是通过postman发出的。
include标签
=========================================================================
- 一个非常好用的辅助性标签,用于放一些公共的返回结果集,方便其他的查询方法使用,比如在mapper中使用方式如下:username, lastloginTime select from test where id = #{id,jdbcType=BIGINT}
choose标签 ,配合when ,otherwise 标签使用
================================================================================================
choose when otherwise 标签可以帮我们实现 if else 的逻辑。一个 choose 标签至少有一个 when,
最多一个otherwise。
mapperselect from test where 1=1 and id=#{id} and username=#{username} and 1=2
打印结果
找不到 周 ,因为我只有周杰伦或者周杰 。 这个choose和 if 的功能有点类似,但是和if 不同的是choose 有点你有什么我就根据你给的查,而if 则是你传了所有条件,我逐个判断你的条件然后给你查。if 更多适用于表单查询的时候用。而choose 更多的时候。。。其实这两个达到的目的是一样的,我更喜欢用choose.
where 标签
========================================================================
mapperselect from test and username like concat(’%’, #{username}, ‘%’) and ip=#{ip}
结果
- 我什么条件也没传,他在where中找不到匹配的条件就查找了全部给了我,这种其实和上面choose 中的最后那个条件有异曲同工之处,上变改成1=1 一样的效果。
foreach 标签
==================================
《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》
【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享
========================================
- mapperselect from test where id in #{id}
代码
@RequestMapping(value = “/dongtaiSql3”)
@ResponseBody
public void dongtaiSql3() {
ArrayList arrayList = new ArrayList();
arrayList.add(6);
arrayList.add(5);
List selectByTestSelective = testMapper.selectByTestIdList(arrayList);
for (Test test : selectByTestSelective) {
System.out.println(test.getUsername());
}
}
- 结果
这个标签太好用了,foreach 也可以用来批量插入数据,比如:
mapperinsert into test(username, gender, ip) values ( #{test.username}, #{test.gender},#{test.ip} )
代码
Test example2 = new Test();
example2.setUsername(“郭富城”);
example2.setGender(1);
example2.setIp(“123232113122”);
Test example3 = new Test();
example3.setUsername(“邱淑贞”);
example3.setGender(0);
example3.setIp(“123232113333”);
ArrayList arrayList = new ArrayList();
arrayList.add(example);
arrayList.add(example2);
arrayList.add(example3);
int selectByTestSelective = testMapper.insertList(arrayList);
if (selectByTestSelective == 1) {
System.out.println(“批量插入:”+arrayList.size()+“条数据”);
}
}
- 结果
妈的 这里的mapper 每次修改都要重新启动,很是麻烦。注意这里 #{test.username}, #{test.gender},#{test.ip} 最后不要有逗号,否则会报一个sql语法错误,原因是多了,。还有就是这里如果传的值是list等非实体类的参数的时候,是不用声明parameterType 的。
foreach 的变量说明collection: 必填, 集合/数组/Map的名称. item: 变量名。即从迭代的对象中取出的每一个值 index: 索引的属性名。当迭代的对象为 Map 时, 该值为 Map 中的 Key. open: 循环开头的字符串 close: 循环结束的字符串 separator: 每次循环的分隔符
bind 标签
=======================================================================
使用 bind 来让该 SQL 达到支持两个数据库的作用
mapperselect from test where 1=1 and username like #{nameLike} and ip=#{ip}
代码
@RequestMapping(value = “/dongtaiSql5”) @ResponseBody public void dongtaiSql5() { Test example = new Test(); example.setUsername(“周”); example.setIp(“cium”); example.setId(27); int selectByTestSelective = testMapper.updateTestSetTag(example); System.out.println(selectByTestSelective);
}
- 结果
发现依然可以。 说明这个bind 就是绑定一些变量的 ,nameLike 就代表了username 的模糊搜索,就是如果别的地方用得到它的模糊搜索,拿来用即可。用法是 like 后面直接加上 #{nameLike }。
set 标签
======================================================================
这个标签常用于做修改语句,比如
mapperUPDATE Products username = #{username}, ip = #{ip}, id = #{id}
代码
@RequestMapping(value = “/dongtaiSql5”) @ResponseBody public void dongtaiSql5() { Test example = new Test(); example.setUsername(“周”); example.setIp(“cium”); example.setId(27); int selectByTestSelective = testMapper.updateTestSetTag(example); System.out.println(selectByTestSelective);}
- 结果
- 这个set 说白了就是update语句的 set 时候的一个灵活操作。
trim 标签
=======================================================================
mapperselect * from test AND username=#{username} AND ip=#{ip}
【注意】
SpringBoot整合MybatisPlus实战动态SQL,java定时器实现原理相关推荐
- SpringBoot整合MybatisPlus实战动态SQL,java分布式架构
choose标签 ,配合when ,otherwise 标签使用 =================================================================== ...
- Springboot框架整合Mybatis-plus实战动态SQL以及常见的Mybatis面试题
目录 MyBatis的动态SQL是最令人喜欢的功能 if 标签 include标签 choose标签 ,配合when ,otherwise 标签使用 where 标签 foreach 标签 bind ...
- Mybatis最拿得出手的功能之一 SpringBoot整合Mybatis-Plus 实战之动态SQL
MyBatis的动态SQL是最令人喜欢的功能 在了解 动态SQL之前,你首先得知道一个表达式 OGNL,这个是基础! 面试常问问题 : Mybatis 中$与#的区别? #是将传入的值当做字符串的形式 ...
- SpringBoot整合Mybatis-plus实现增删查改
今天给大家分享一下SpringBoot整合Mybatis-plus的增删查改案例. pom.xml <?xml version="1.0" encoding="UT ...
- 实践丨SpringBoot整合Mybatis-Plus项目存在Mapper时报错
本文分享自华为云社区<SpringBoot整合MybatisPlus项目存在Mapper时运行报错的问题分析与修复>,作者:攻城狮Chova . 异常信息 在SpringBoot运行测试M ...
- SpringBoot整合Mybatis-Plus
这篇文章介绍一个SpringBoot整合Mybatis-Plus,提供一个小的Demo供大家参考. 已经很久没有写文章了,最近家里有点事刚刚处理完,顺便也趁机休息了一段时间.刚回到公司看了一下码云,发 ...
- 超详细教程:SpringBoot整合MybatisPlus
本文分享自华为云社区<SpringBoot整合MybatisPlus[超详细]>,原文作者:牛哄哄的柯南. 创建个SpringBoot项目 选生所需的依赖:== 我把application ...
- SpringBoot整合Mybatis-Plus,代码生成器Generator以及Swagger(附源码、图文学习、Postman、ApiPost第三方工具的使用)
目录 一.SpringBoot整合Mybatis-plus 1.引入依赖 2.创建数据库 3.整合代码生成器Generator 二.什么是Swagger2,有什么作用? 三.SpringBoot整合S ...
- 10-Java框架-SpringBoot整合MyBatis-Plus
一.MyBatis-Plus介绍 官网 https://baomidou.com/ MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变 ...
最新文章
- frida的用法--Hook Java层类方法
- 230. Kth Smallest Element in a BST
- php支持二级域名共享,PHP二级域名session共享方案
- 笔记:Chrome 对浏览器的改进
- 学习java_java学习册之立FLAG
- Delphi中对Jpeg格式文件的处理
- Mercurial使用简单介绍zz
- Hive的概述、流程和优化
- java dvr_java – 如何设置与DVR的连接并解码数据?
- 中标麒麟桌面版7.0(NeoKylin linux desktop release 7.0)配置pyqt5运行环境说明
- 数字信号处理中均值、均方值、均方差、均方根值、均方误差、均方根误差、方差、协方差、标准差对比分析及统计学意义
- Karma、Jasager与WiFiPineApple之间的关系
- 如何使用谷歌浏览器Chrome把整个网页保存成图片
- 五一不看人人人人人人,哪儿耍合适? | Alfred数据室
- Chrome浏览器显示“Adobe flash player已过期”问题之解决
- 易语言安卓模拟器adb模块制作认识adb
- 中国高空作业平台何时摆脱外国的影子
- uni-app-------长按下载图片
- 10个python接私活的平台,整整10个!总有适合你的,你有技术就有钱
- sqlserver2005 sql server database services安装失败解决方法
热门文章
- iOS调试_Couldn't load project
- Qt中鼠标的双击事件和单击事件的实现方式
- scp + expect 实现全自动传送文件
- 【踩坑日记 · 嵌入式 Linux】在香橙派 Zero 2 上编译安装 CH340 驱动(OrangePi Zero 2)
- 使用Eclipse Memory Analyzer分析Tomcat内存溢出
- 21.08.01 cnvoron带你玩转Voron2.4
- Python制作自己的第一人称射击游戏
- 不能用float、double 存储金额——BigDecimal详解
- iphonex 底部遮挡返回键 解决方法
- Freefilesync自动同步