mybatis中模糊查询时一个字段匹配不定量数据解决方法

一、在Controller中代码如下:
 

      //1-将用逗号隔开的字符串存入list集合,放入pageData中
        PageData pd = new PageData() ;
        String keywords = "a,b,c" ;
        String[] array = keywords.split(",") ;
        List<String> keywords_list = new ArrayList<String>() ;
        for (int i = 0; i < array.length; i++) {
            String kid = array[i] ;
            keywords_list.add(kid) ;
        }
        pd.put("keywords_list", keywords_list) ;
        //2-然后和产品公共表标题匹配
        Page page = PageUtil.getLimitPage(pd);
        setOrderBy(pd);
        page.setPd(pd);
        List<PageData> pdList = appProductService.queryProsByDicIdlistPage(page);


二、在mytatis的mapper文件中的代码如下:

<if test="pd.keywords_list != null ">

         and
        <foreach collection="pd.keywords_list" index="index" item="keywords" open="(" separator="or" close=")">
                cn.SHOP_NAME LIKE CONCAT('%', '${keywords}', '%')
         </foreach>
</if>


注释:

1)if是用来判断是否为null或空字符串;

2)'${keywords}':这里如果使用#会报错,所以应该使用$符号,如果不是数字类型,比如Long,Integer,需要加上单引号''.

3)集合collection=“pd.keywords_list”:pd是PageData类,keywords_list是PageData中的一个键值对数据,

其中PageData类是:(public class PageData extends HashMap implements Map)。

4)item表示集合中每个元素进行迭代时的别名,也就是说每遍历一次,不管pd.keywords_list中的名字会被赋值到item中定义的名字上。


猜你喜欢

转载自blog.csdn.net/u011159417/article/details/79424254