一、在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中定义的名字上。