关于模糊查询防注入,目前有两种解决方案:1.是采用:
name like '%' || #name# || '%' 这种方式,
但是使用的时候,考虑到索引问题,
上面这种语句是不会走索引的,
有时候会遇到检索不到数据奇怪的现象,所以不推荐。2.是在代码层做控制 :
- if (!StringUtil.isEmpty(this.companyName)) {
- table.setCompanyName("%" + this.companyName + "%");
- }
- <sql id="condition_where">
- <isNotEmpty property="companyName" prepend=" and ">
- t1.company_name like #companyName#
- </isNotEmpty>
- </sql>
推荐使用第二种方案。