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 标签

==========================================================================

  • 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);

arrayLis

《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》

【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享

t.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 标签

SpringBoot整合MybatisPlus实战动态SQL,java分布式架构相关推荐

  1. SpringBoot整合MybatisPlus实战动态SQL,java定时器实现原理

    打印结果 也就是说,你传什么值 它会根据你传的值来拼接sql,不传值则不拼接,这种相对来说比较简单,易于理解. [注意] 下文所有的请求都是通过postman发出的. include标签 ====== ...

  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. 10-Java框架-SpringBoot整合MyBatis-Plus

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

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

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

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

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

最新文章

  1. 笑傲江湖,独孤求败-NetScaler MAS应用交付神功详解
  2. 11.23关于微信JSAPI缺少参数的问题解决
  3. 套接字有哪些类型?socket有哪些类型?
  4. Java开发中文件读取方式总结
  5. Asp.Net Core(.net内核)
  6. java netty html_源码时代JAVA干货分享|带你用Netty框架实现WebSocket通信
  7. matlab自动排版,工具方法| Matlab 简单绘图与排版
  8. 【图像融合】简单加权融合
  9. 团队作业2 需求分析与原型设计
  10. VMware OVF 协议
  11. virtuoso根据原理图绘制版图并联接_Cadence教程2——反相器原理图仿真以及版图绘制...
  12. UAV运动学方面的约束
  13. 分享109个PHP源码,总有一款适合您
  14. 媒体查询(Media Query)
  15. ajax 等待,等待所有的ajax请求都完成
  16. 基于高德地图JsAPI进行浏览器精确定位,实现手机端考勤打卡功能
  17. VoIP通话-基于SIP协议的Asterisk(一)-实现流程
  18. 计算机网络:验证性试验
  19. 计算机维修知识题库,职业技能鉴定国家题库统一试卷 中级计算机维修工知识试卷 B卷...
  20. JQuery 大写输入提示

热门文章

  1. 初入python世界——python基础语法
  2. token系统讲解及过期处理
  3. php捕捉Warning、Notice错误
  4. 东芝笔记本出现w ndows,夏日白色清新范 13.3英寸东芝L830评测
  5. vue基础模板代码块设置
  6. 自控力如何改善了我的生活
  7. 管理者需换位思考 员工都是CEO
  8. ubuntu20.04下安装qq和微信(最新)
  9. python Numpy模块汇总(字母排序) 备注:内容很多,用control/command(Mac系统)+ F可以在网页内关键词查找,希望你能找到想要的内容
  10. PureMVC游戏框架解析 理解其中包含的设计模式