mybatis 遍历foreach中or拼接的操作

我就废话不多说了,大家还是直接看看关键代码吧:

select id, name from t_keys where 1 = 1
<if test="keys != null">
 <foreach collection="keys" item="key" open="AND (" close=")" separator="or" >
 name = #{key}
 </foreach>
</if>

补充:mybatis xml中的动态sql需要and和or拼接条件判断的写法

通常在java后台或者前端js中多个条件组合判断中使用and或者or 如下

//使用&或者&& | 和||
if(a==1&b==2){
}
//或者sql文中的and和or
select * from emp where empno='7788' and deptno='20'

但是动态sql呢?

那就需要()把每一个条件括起来在加and 或者or

//动态添加语句
<if test="(buhinmt.buhinCd!= null and buhinmt.buhinCd != '') or(buhinmt.syohinCd!= null and buhinmt.syohinCd != '')">
 AND BM.buhin_cd = SMBM.buhin_cd
 AND SMBM.syohin_cd = SM.syohin_cd
 AND SM.syurisaki_cd = SYUM.syurisaki_cd
 </if>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • 解决mybatis使用foreach批量insert异常的问题

    异常 org.springframework.jdbc.BadSqlGrammarException: ### Error updating database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version fo

  • MyBatis传入数组集合类并使用foreach遍历

    这篇文章主要介绍了MyBatis传入数组集合类并使用foreach遍历,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在mapper中传入数组或集合类,使用foreach标签遍历出其中的值与SQL语句拼接 JAVA dao层接口 public interface UserDao { public List<User> getUsersByCollection(Collection collection); } mapper文件 <sel

  • mybatis使用foreach语句实现IN查询(三种)

    foreach语句中, collection属性的参数类型可以使:List.数组.map集合 collection: 必须跟mapper.java中@Param标签指定的元素名一样 item : 表示在迭代过程中每一个元素的别名,可以随便起名,但是必须跟元素中的#{}里面的名称一样. index :表示在迭代过程中每次迭代到的位置(下标) open :前缀, sql语句中集合都必须用小括号()括起来 close :后缀 separator :分隔符,表示迭代时每个元素之间以什么分隔 Mybati

  • mybatis3.4.6 批量更新 foreach 遍历map 的正确姿势详解

    好久没编码了!最近开始编码遇到一个问题 !一个批量修改的问题,就是mybatis foreach 的使用. 当时使用的场景 ,前端 传逗号拼接的字符串id, 修改id对应数据的数据顺序 ,顺序 就是id 的顺序. 就是一个条件(单个id值) 修改一个值(传入的id的顺序) , 1. 把条件作为Map 的key 修改值是value,用map入参 2.用List<Object> 或者数组 ,把条件和值封装成对象放进list集合或者array数组 3.代码使用for循环调用mapper方法 穿两个参

  • MyBatis foreach 批量更新实例

    在做配置选项(设备类型,所属楼层等)的时候,当删除某配置的时候,我需要检验该配置是否已被删除. @Override public BaseVO deleteOptionDetail(Integer id) { // 合法性验证 if (null == id) { return ParamErrorVO.getInstance(); } ConfigOptionDetail configOptionDetail = configOptionDetailMapper.selectById(id);

  • mybatis 遍历foreach中or拼接的操作

    我就废话不多说了,大家还是直接看看关键代码吧: select id, name from t_keys where 1 = 1 <if test="keys != null"> <foreach collection="keys" item="key" open="AND (" close=")" separator="or" > name = #{key} &l

  • Mybatis #foreach中相同的变量名导致值覆盖的问题解决

    目录 背景 问题原因(简略版) Mybatis流程源码解析(长文警告,按需自取) 一.获取SqlSessionFactory 二.获取SqlSession 三.执行SQL 背景 使用Mybatis中执行如下查询: 单元测试 @Test public void test1() { String resource = "mybatis-config.xml"; InputStream inputStream = null; try { inputStream = Resources.get

  • mybatis使用foreach遍历list集合或者array数组方式

    一.准备工作 1.db.properties文件(记得修改自己的数据库和用户名.密码) dataSource.driver=com.mysql.jdbc.Driver dataSource.url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8 dataSource.username=blog dataSource.password=blog 2.主配置文件 <?xml version=&q

  • JavaScript中的数组遍历forEach()与map()方法以及兼容写法介绍

    •原理: •高级浏览器支持forEach方法 语法:forEach和map都支持2个参数:一个是回调函数(item,index,list)和上下文: •forEach:用来遍历数组中的每一项:这个方法执行是没有返回值的,对原来数组也没有影响: •数组中有几项,那么传递进去的匿名回调函数就需要执行几次: •每一次执行匿名函数的时候,还给其传递了三个参数值:数组中的当前项item,当前项的索引index,原始数组input: •理论上这个方法是没有返回值的,仅仅是遍历数组中的每一项,不对原来数组进行

  • PHP在弹框中获取foreach中遍历的id值并传递给地址栏

    1.php有时候我们需要再弹框中获取foreach中遍历的数据(例如id),在弹框中点击按钮并传递给地址栏跳转.那么应该怎么做呢. 2. 点击取现按钮,如果没有设置密码->弹框 3. 点击去设置,把用户名通过地址栏传递给别的页面. 4.使用onclick事件,把参数charge传递给function函数.function为弹窗函数. 5. 把username值传递过来.并给"去设置"赋值herf属性. 6. <div class="mask" >&

  • Mybatis示例讲解注解开发中的单表操作

    目录 Mybatis注解开发单表操作 MyBatis的常用注解 MyBatis的增删改查 注解开发总结 常用注解 配置映射关系 练习项目代码 Mybatis注解开发单表操作 MyBatis的常用注解 Mybatis也可以使用注解开发方式,这样我们就可以减少编写Mapper映射文件了.我们先围绕一些基本的CRUD来学习,再学习复杂映射多表操作. 注解 说明 @Insert 实现新增 @Update 实现更新 @Delete 实现删除 @Select 实现查询 @Result 实现结果集封装 @Re

  • mybatis 根据id批量删除的实现操作

    第一种,直接传递给mapper.xml 集合/数组形式 <delete id="deleteByLogic" parameterType = "java.util.List"> delete from user where 1>2 or id in <foreach collection="list" item="item" open="(" separator=",&qu

  • Mybatis常用注解中的SQL注入实例详解

    目录 前言 常见注入场景 2.1普通注解 2.2 动态sql 2.2.1 使用< script> 2.2.2 使用Provider注解 总结 前言 MyBatis3提供了新的基于注解的配置.主要在MapperAnnotationBuilder中,定义了相关的注解: public MapperAnnotationBuilder(Configuration configuration, Class<?> type) { ... sqlAnnotationTypes.add(Select

  • 利用Mybatis向PostgreSQL中插入并查询JSON字段

    目录 应用场景介绍 数据insert 数据select BATCH 批量插入 前言: 这里我使用的是TimescaleDB,加了一个时间戳字段,不过没差.关于PostgreSQL中Json数据类型的操作,可以参考官网. 应用场景介绍 将TCP发过来的数据包(通过消息队列发过来)解析出数据(一个数据包含有多帧,一帧中含有多条信息),并和本地规则表的格式对应起来.以JsonLineMsg实体类代表对应的一帧数据: package tsdb.entity; import lombok.AllArgsC

  • JavaScript jQuery 中定义数组与操作及jquery数组操作

    首先给大家介绍javascript jquery中定义数组与操作的相关知识,具体内容如下所示: 1.认识数组 数组就是某类数据的集合,数据类型可以是整型.字符串.甚至是对象 Javascript不支持多维数组,但是因为数组里面可以包含对象(数组也是一个对象),所以数组可以通过相互嵌套实现类似多维数组的功能 1.1 定义数组 声明有10个元素的数组 复制代码 代码如下: var a = new Array(10); 此时为a已经开辟了内存空间,包含10个元素,用数组名称加 [下标] 来调用,例如

随机推荐