mybatis如何使用代码拼接多个or表达式语句

分类:计算机 | 数据库 | Mybatis | 综合 404
更新:2020-04-12 22:44:08
编辑

参考资料

https://blog.csdn.net/xwnxwn/article/details/53712964
https://www.cnblogs.com/linjiaxin/p/6099572.html

在项目开发中使用Oracle和Mybatis处理数据时遇到这么一个问题:查询数据时需要判断一个字段是否在一个列表集合值中,首先想到的是用sql中的in表达式,但是in表达式有一个问题,就是in所在集合数据的个数超过1000的话就不行了,于是就想到了使用or表达式来实现同样的效果。
例如,有一个集合List listChildId,集合中有三个数据:"111","222","333",可以这样使用mybatis的or函数来写:

if (listChildId != null && listChildId.size() > 0){
                        for(int j=0;j<listChildId.size();j++){
                            UserExample.Criteria createCriteria = userExample.createCriteria();
                            createCriteria.andUseridEqualTo(listChildId.get(j));
                            if(j>0)
                                userExample.or(createCriteria);
                        }
 }

这样,形成的sql语句就是:

... where (userid='111') or (userid='222') or (userid='333')