mybatis数组和集合的长度判断及插入方式

目录
  • mybatis数组和集合的长度判断及插入
    • 1、在使用foreach的是collection属性
    • 2、判断长度
  • mybatis数组与集合判断非空和长度
    • 数组判断
    • 集合判断

mybatis数组和集合的长度判断及插入

1、在使用foreach的是collection属性

该属性是必须指定的,但是在不同情况下,该属性的值是不一样的

主要有一下4种情况: 

  • 如果传入的是单参数且参数类型是一个List的时候,collection属性值为list .
  • 如果传入的是单参数且参数类型是非list的Collection的时候,collection属性值为collection .
  • 如果传入的是单参数且参数类型是一个array数组的时候,collection的属性值为array
  • 如果dao层指定了param的name,或者dao层传的是map,collection里为param的name或map的key
DefaultSqlSession
private Object wrapCollection(final Object object) {
    if (object instanceof Collection) {
      StrictMap<Object> map = new StrictMap<Object>();
      map.put("collection", object);
      if (object instanceof List) {
        map.put("list", object);
      }
      return map;
    } else if (object != null && object.getClass().isArray()) {
      StrictMap<Object> map = new StrictMap<Object>();
      map.put("array", object);
      return map;
    }
    return object;
  }

2、判断长度

集合:<if test="arr != null and arr.size() > 0">

数组:<if test="col != null and col .length > 0">

mybatis数组与集合判断非空和长度

数组判断

参数object为数组Object[]时。先判断是否为null,不为null则判断数组长度object.length是否大于0即可。

    <if test="object!=null and object.length>0">
        <yourSql>
    </if>

集合判断

参数object为集合List<Object>时,先判断是否为null,不为null则判断集合长度object.size()是否大于0即可。

    <if test="object!=null and object.size()>0">
        <yourSql>
    </if>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • mybatis中批量插入的两种方式(高效插入)

    MyBatis简介 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录. 一.mybiats foreach标签 foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合.foreach元素的属性主

  • 详解JAVA高质量代码之数组与集合

    1.性能考虑,优先选择数组 数组在项目开发当中使用的频率是越来越少,特别是在业务为主的开发当中,首先数组没有List,Set等集合提供的诸多方法,查找增加算法都要自己编写,极其繁琐麻烦,但由于List,Set等集合使用泛型支持后,存放的都为包装类,而数组是可以使用基本数据类型,而使用基本数据类型的执行运算速度要比包装类型快得多,而且集合类的底层也是通过数组进行实现. 2.若有必要,使用变长数组 在学习集合类当中,很多人喜欢将数组的定长拿来和集合类型的自变长来做比较,但其实这种比较并不合适,通过观

  • mybatis条件语句中带数组参数的处理

    目录 mybatis条件语句中带数组参数 这里给出一个示例 这里有必要说明的是foreach标签中的collection属性 mybatis多参数传递(其中包括数组) mapper接口 mapper.xml的配置 mybatis条件语句中带数组参数 如题,在mybatis编写sql语句的时候,可能会遇到in这样的关键字,我们知道in后面需要接上('a','b','c')这样的一个结构.它像一个数组,但是是用括号()包裹的,参数之间还有逗号隔开. 这里因为数组参数是变量,直接通过拼接的方式不可行.

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

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

  • mybatis数组和集合的长度判断及插入方式

    目录 mybatis数组和集合的长度判断及插入 1.在使用foreach的是collection属性 2.判断长度 mybatis数组与集合判断非空和长度 数组判断 集合判断 mybatis数组和集合的长度判断及插入 1.在使用foreach的是collection属性 该属性是必须指定的,但是在不同情况下,该属性的值是不一样的 主要有一下4种情况:  如果传入的是单参数且参数类型是一个List的时候,collection属性值为list . 如果传入的是单参数且参数类型是非list的Colle

  • C#对多个集合和数组的操作方法(合并,去重,判断)

    在开发过程中.数组和集合的处理是最让我们担心.一般会用for or foreach 来处理一些操作.这里介绍一些常用的集合跟数组的操作函数. 首先举例2个集合A,B. List<int> listA = new List<int> {1,2,3,5,7,9}; List<int> listB = new List<int> {13,4,17,29,2}; listA.AddRange(listB ); 把集合A.B合并 List<int> Res

  • PHP针对中英文混合字符串长度判断及截取方法示例

    本文实例讲述了PHP针对中英文混合字符串长度判断及截取方法.分享给大家供大家参考,具体如下: /** * * 中英混合字符串长度判断 * @param unknown_type $str * @param unknown_type $charset */ function strLength($str, $charset = 'utf-8') { if ($charset == 'utf-8') $str = iconv ( 'utf-8', 'gb2312', $str ); $num = s

  • JS字符串长度判断,超出进行自动截取的实例(支持中文)

    今天一个小弟问我的问题,在文本框中输入字符,如果超出指定长度,就把它截取,要求中文等于两个字符的长度,我找一下资料,把这个功能实现了, 下面是JS代码: <html> <script src="http://jb51.net/script/jquery.js" type="text/javascript"></script> <body> <input type="text" name=&qu

  • java判定数组或集合是否存在某个元素的实例

    引言: 今天群里有朋友问"怎么知道一个数组集合是否已经存在当前对象",大家都知道循环比对,包括我这位大神群友.还有没其他办法呢?且看此篇. 正文: 能找到这里的都是程序员吧,直接上代码应该更清楚些. import java.io.Serializable; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.regex.Matcher; im

  • mybatis 映射文件中if标签判断字符串相等的两种方式

    mybatis 映射文件中,if标签判断字符串相等,两种方式: 因为mybatis映射文件,是使用的ognl表达式,所以在判断字符串sex变量是否是字符串Y的时候, <if test="sex=='Y'.toString()"> <if test = 'sex== "Y"'> 注意: 不能使用 <if test="sex=='Y'"> and 1=1 </if> 因为mybatis会把'Y'解析为字

  • Java中数组与集合的相互转换实现解析

    这篇文章主要介绍了Java中数组与集合的相互转换实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 List转数组:采用集合的toArray()方法 数组转List:采用Arrays的asList()方法 数组转换为集合 注意:在数组转集合的过程中,要注意是否使用了视图的方式直接返回数组中的数据.以Arrays.asList()为例,它把数组转换成集合时,不能使用其修改集合相关的方法,它的add/remove/clear方法会抛出 Unsu

  • Java如何获取数组和字符串的长度(length还是length())

    限时 1 秒钟给出答案,来来来,听我口令:"Java 如何获取数组和字符串的长度?length 还是 length()?" 在逛 programcreek 的时候,我发现了上面这个主题.说实话,我当时脑海中浮现出了这样一副惊心动魄的画面: 面试官老马坐在我的对面,地中海式的发型令我敬佩有加.尽管略显疲惫,但他仍然自信地向我抛出了上面这个问题.稍稍迟疑了一下,我回答说:"数组用 length,字符串用 length 跟上小括号".老马不愧是面试中的高手,一瞬间就从我的

  • Mybatis中Collection集合标签的使用详解

    mybatis简单的CURD就不用多说了,网上相关博客文档一大堆.分析一下Mybatis里面的collection聚集查询. 假设一个班级有多名学生为例,通过班级号查询出该班级的信息,和班级里面的所有学生的信息,一般的做法就是通过班级号把班级的信息查询出来,再通过班级ID号把该班级里面的所有学生查询出来,我们不用这种通用的方法 1.班级实体类可以定义为这样: import java.util.List; public class ClazzEntity { private int clazzID

  • MyBatis 配置之集合的嵌套方式

    目录 MyBatis 配置之集合的嵌套 前言介绍 代码示例 外部引用 小结一下吧 MyBatis 集合.集合嵌套查询 集合 集合的嵌套查询 集合的嵌套结果 MyBatis 配置之集合的嵌套 前言介绍 在一些查询结果包装类中,包含一些 List 集合属性,使用 collection 标签可以声明该 List 集合中属性的类型,便于 MyBatis 对包装类中的集合类型属性进行映射. 代码示例 例如商城,取出某一个商品信息以及该商品的评价列表,其中商品包装类 Product 的定义代码如下: pac

随机推荐