在开发时候,经常会用到涉及到in exist 等子查询。

myabtis

①以注解的方式进行操作

@Select("select column_1 from table_name where column_2 in (${column_parms}) ")public List<String> getNames(@Parms("column_parms") String column_parms)
@Select("select column_1 from table_name <where> <if test =\"column_parms!=null and column_parms.size()\">column_2  in <foreach collcetion=\"column_parms\" item=\"item\" index=\"index\" open=\"(\" separator = \",\" close=\")\">#{item}</foreach></if>
</where>public List<String> getNames(@Parms("column_parms") List<String> column_parms)

②以xml方式

mapper.xml文件

    <select id="getNames" resultType="String">select column_1  from  table_name where column_2 in (${column_parms})
<select id="getNames" resultType="String">
select column_1 from table_name <where> <if test ="column_parms!=null and column_parms.size()">column_2  in <foreach collcetion="column_parms" item="item" index="index" open="(" separator = "," close=")">#{item}</foreach></if>
</where>

IService 文件

List<String> getNames(@Param("column_parms") String column_parms)List<String> getNames(@Param("column_parms")List<String> column_parms)

仔细观察上面代码,只有两个地方是不同的:

${}取值  String参数         ${} 这种是取值以后再去编译SQL语句

#{}取值  List参数             #{} 这种取值是编译好SQL语句再取值  

但是如果在in里面又涉及到子查询,那么只能用${}取值

eg:select column_1 from table_name1 where column_2 in

( select column_3 from table_name2 where column_4 in(result集合) )

这种的话是无法使用foreach 进行操作的 ,因为对table_name1 表的in操作 字段属性 这个参数是无法取到的,因此在执行的会报空值针异常错误。

正确的写法:

  @Delete("DELETE FROM  HJ_GG_HXY_QXGXB WHERE HQXGXB_HYID IN " +"( SELECT HJSGXB_HYID FROM GG_HXY_JSGXB WHERE HJSGXB_HXID " +"  IN (${ids}) " +")")void del(@Param("ids") String ids);

mybatis/mybatis-plus 子查询实现 涉及到in、exist操作相关推荐

  1. MySQL子查询嵌套查询

    子查询:嵌套在其他查询中的查询. 有三张表分别如下: customers: 存储顾客信息 orderitems:只存储订单信息,无客户信息 orders:存储订单号和顾客id 注意:一般在子查询中,程 ...

  2. SQL和PL/SQL的性能优化之四---联结与子查询

    1.联结类型 A.相等联结(equi-join) B.非相等联结(theta) C.交叉联结(cross join)--笛卡尔联结 D.外联结(outer joiin)--左.右.全联结 E.自联结( ...

  3. MySQL子查询原理分析

    01 前言 子查询,通俗解释就是查询语句中嵌套着另一个查询语句.相信日常工作中接触到 MySQL 的同学都了解或使用过子查询,但是具体它是怎样实现的呢? 查询效率如何? 这些恐怕好多人就不太清楚了,下 ...

  4. oracle单行子查询返回多个行 order by,单行子查询返回多个行

    子查询: 用子查询能解决的问题 假想你想要写一个查询来找出挣钱比陆涛的薪水还多的人.为了解决这个问题,你需要两个查询:一 个找出陆涛的收入,第二个查询找出收入高于陆涛的人. 你可以用组合两个查询的方法 ...

  5. MySQL 子查询使用方式

    阅读目录 阐述 子查询分类 按照返回结果的行列数分类 按子查询出现在主查询的位置分类 预备数据 部门表 departments 员工表 employees 职位信息表 jobs 位置表 locatio ...

  6. IN+子查询(Mysql)

    1.Mysql中的In+子查询 在写select语句的时候可能会遇见需要通过类似下面的select子查询来完成的功能: select * from table1 where id in (select ...

  7. Mysql——子查询(非常重要)(十二)

    文章目录 一.子查询概念 二.子查询分类 selec后面的子查询 from后面的子查询 where和having后面的子查询 exists后面(也叫做相关子查询) 三.NULL的大坑 本篇非常重要. ...

  8. MySQL子查询 嵌套查询

    子查询:嵌套在其他查询中的查询. 有三张表分别如下: customers: 存储顾客信息 orderitems:只存储订单信息,无客户信息 orders:存储订单号和顾客id 注意:一般在子查询中,程 ...

  9. oracle子查询不减少数据,Oracle性能优化-子查询到特殊问题

    编辑手记:前面我们介绍常用的子查询优化方法,但总有一些情况时在规律之外.谨慎处理方能不掉坑. 前文回顾: 作者简介:韩锋 精通包括Oracle.MySQL.informix等多种关系型数据库,有丰富的 ...

  10. mysql 什么是子查询_MySQL 子查询

    什么是子查询 为什么要使用子查询 子查询的分类 怎样使用子查询 关联子查询 要使用的数据表 image.png 1. 什么是子查询? 子查询顾名思义就是在正常查询之前先查询出来一条数据或者一个表. 子 ...

最新文章

  1. 跨境电商三单对碰三单申报流程详解
  2. idea git里的用户怎么修改
  3. AtCoder Grand Contest 013 题解
  4. Java中六种List集合循环遍历取值
  5. javascript 创建对象方式
  6. 二进制“==”: 没有找到接受“Point”类型的左操作数的运算符(或没有可接受的转换)
  7. 企业启动计划预算管理的原因解析
  8. Luogu1880 石子合并
  9. java json配置文件_java 读取json文件配置
  10. 价值1680元的python实战全套教学视频
  11. unity-3d:打飞碟游戏
  12. 如何用python爬虫薅羊毛_拼多多现重大BUG被“薅羊毛”,教你如何用Python简单褥羊毛...
  13. 交流电过零点检测电路总结
  14. 智铺子微信扫码点餐系统有哪些可操作的功能
  15. 《数学之美》-吴军 读书笔记
  16. 微服务时代之2017年五军之战
  17. 为中国操作系统内核而写的教程 1
  18. CleanMyMac XMac苹果电脑专属系统优化工具
  19. 【安全】【信息搜集】Google Hacking
  20. r语言查找是否存在空值_R语言-缺失值判断以及处理

热门文章

  1. 百度AI开放平台[Python]
  2. 设计模式 — 工厂模式
  3. img图片加载失败的处理
  4. 局域网即时通讯Active Messenger 完美破解版本 最新版本破解
  5. 【GitHub】利用Github建立你的个人网站
  6. 智能合约安全审计指南
  7. 微信公众号开发模式没有域名怎么办?申请免费域名
  8. 用户活跃、留存、流失,终于讲清楚了!
  9. uniapp——显示不了网络图片或者本地图片
  10. 关于C语言中的绝对值函数