MyBatis实现模糊查询的三种方式

概念

模糊查询即模糊检索,是指搜索系统自动按照用户输入关键词的同义词进行模糊检索,从而得出较多的检索结果。与之相反的是“精准搜索”。对于MyBatis来说大概有如下几种方式实现:①使用$占位符,②使用数据库函数concat,③使用 MyBatis的动态SQL标签,本文主要重点介绍第二种方法的实现。 

方法一

直接使用 % 拼接字符串,如 '%'#{name}'%' 或 "%"#{name}"%",单引号或双引号都可以。

注:使用${…}不能有效防止SQL注入,所以这种方式虽然简单但是不推荐使用!!!


 方法二

concat属于数据库函数,MySQL 和 Oracle 都支持,用于字符串连接,而且可以使用 # 作为占位符,防止 SQL 注入。

 Mapper文件


Dao层

/**
* 根据产品件号模糊查询信息
*
* @param partNum 产品件号
* @return
*/
List selectInStockByPartNum(String partNum);

 Service层

/**
* 根据产品件号模糊查询信息
*
* @param partNum 产品件号
* @return
*/
public List findInStockByPartNum(String partNum) {
    return inStockDao.selectInStockByPartNum(partNum);
}

controller层

/**
* 根据产品件号模糊查询信息
*
* @param partNum 产品件号
* @return
*/
@RequestMapping(value = "/search", method = RequestMethod.GET)
@ResponseBody
private ModelAndView getInStockByPartNum(String partNum) {
    ModelAndView mv = new ModelAndView();
    List list = inStockService.findInStockByPartNum(partNum);
    mv.addObject("stockList", list);
    mv.setViewName("inStockList");
    return mv;
}

页面

结果

MyBatis实现模糊查询的三种方式_第1张图片

方法三

bind 元素可以从 OGNL 表达式中创建一个变量并将其绑定到上下文。使用 bind 标签就可以对某个字段进行'封装',比如给上面的 keyWord 字段两端各加一个百分号。


 

你可能感兴趣的:(3-------MyBatis,SSM)