前台页面输入三个值,搜索,后台模糊查询后返回数据到前台。
我的Mapper中的sql如下
<!--模糊查找-->
<select id="selectLikeProduct" resultMap="BaseResultMap">
select * from dangdang_product where dd_product_name like '%${productName}%' or dd_product_author like '%${productAuthor}%' or dd_product_press like '%${productPress}%'
</select>
当遇到输入框有空值时,like ‘%%’就会永远是true,所以就会把所有的数据都查出来。
解决办法:在前台发请求时做判断,如果为空值,设置个默认值,默认值不与数据库该字段的值有重叠就好。我设置的是一个空格。代码如下
//出版社空值处理
if(productPress == 0){
productPress = " ";
}
//书名空值处理
if(productName == ""){
productName = " ";
}
//作者空值处理
if(productAuthor == ""){
productAuthor = " ";
}