• 打印结果

  • 也就是说,你传什么值 它会根据你传的值来拼接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定时器实现原理相关推荐

  1. SpringBoot整合MybatisPlus实战动态SQL,java分布式架构

    choose标签 ,配合when ,otherwise 标签使用 =================================================================== ...

  2. Springboot框架整合Mybatis-plus实战动态SQL以及常见的Mybatis面试题

    目录 MyBatis的动态SQL是最令人喜欢的功能 if 标签 include标签 choose标签 ,配合when ,otherwise 标签使用 where 标签 foreach 标签 bind ...

  3. Mybatis最拿得出手的功能之一 SpringBoot整合Mybatis-Plus 实战之动态SQL

    MyBatis的动态SQL是最令人喜欢的功能 在了解 动态SQL之前,你首先得知道一个表达式 OGNL,这个是基础! 面试常问问题 : Mybatis 中$与#的区别? #是将传入的值当做字符串的形式 ...

  4. SpringBoot整合Mybatis-plus实现增删查改

    今天给大家分享一下SpringBoot整合Mybatis-plus的增删查改案例. pom.xml <?xml version="1.0" encoding="UT ...

  5. 实践丨SpringBoot整合Mybatis-Plus项目存在Mapper时报错

    本文分享自华为云社区<SpringBoot整合MybatisPlus项目存在Mapper时运行报错的问题分析与修复>,作者:攻城狮Chova . 异常信息 在SpringBoot运行测试M ...

  6. SpringBoot整合Mybatis-Plus

    这篇文章介绍一个SpringBoot整合Mybatis-Plus,提供一个小的Demo供大家参考. 已经很久没有写文章了,最近家里有点事刚刚处理完,顺便也趁机休息了一段时间.刚回到公司看了一下码云,发 ...

  7. 超详细教程:SpringBoot整合MybatisPlus

    本文分享自华为云社区<SpringBoot整合MybatisPlus[超详细]>,原文作者:牛哄哄的柯南. 创建个SpringBoot项目 选生所需的依赖:== 我把application ...

  8. SpringBoot整合Mybatis-Plus,代码生成器Generator以及Swagger(附源码、图文学习、Postman、ApiPost第三方工具的使用)

    目录 一.SpringBoot整合Mybatis-plus 1.引入依赖 2.创建数据库 3.整合代码生成器Generator 二.什么是Swagger2,有什么作用? 三.SpringBoot整合S ...

  9. 10-Java框架-SpringBoot整合MyBatis-Plus

    一.MyBatis-Plus介绍 官网 https://baomidou.com/ MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变 ...

最新文章

  1. frida的用法--Hook Java层类方法
  2. 230. Kth Smallest Element in a BST
  3. php支持二级域名共享,PHP二级域名session共享方案
  4. 笔记:Chrome 对浏览器的改进
  5. 学习java_java学习册之立FLAG
  6. Delphi中对Jpeg格式文件的处理
  7. Mercurial使用简单介绍zz
  8. Hive的概述、流程和优化
  9. java dvr_java – 如何设置与DVR的连接并解码数据?
  10. 中标麒麟桌面版7.0(NeoKylin linux desktop release 7.0)配置pyqt5运行环境说明
  11. 数字信号处理中均值、均方值、均方差、均方根值、均方误差、均方根误差、方差、协方差、标准差对比分析及统计学意义
  12. Karma、Jasager与WiFiPineApple之间的关系
  13. 如何使用谷歌浏览器Chrome把整个网页保存成图片
  14. 五一不看人人人人人人,哪儿耍合适? | Alfred数据室
  15. Chrome浏览器显示“Adobe flash player已过期”问题之解决
  16. 易语言安卓模拟器adb模块制作认识adb
  17. 中国高空作业平台何时摆脱外国的影子
  18. uni-app-------长按下载图片
  19. 10个python接私活的平台,整整10个!总有适合你的,你有技术就有钱
  20. sqlserver2005 sql server database services安装失败解决方法

热门文章

  1. iOS调试_Couldn't load project
  2. Qt中鼠标的双击事件和单击事件的实现方式
  3. scp + expect 实现全自动传送文件
  4. 【踩坑日记 · 嵌入式 Linux】在香橙派 Zero 2 上编译安装 CH340 驱动(OrangePi Zero 2)
  5. 使用Eclipse Memory Analyzer分析Tomcat内存溢出
  6. 21.08.01 cnvoron带你玩转Voron2.4
  7. Python制作自己的第一人称射击游戏
  8. 不能用float、double 存储金额——BigDecimal详解
  9. iphonex 底部遮挡返回键 解决方法
  10. Freefilesync自动同步