如何正确的使用Mybatis模糊查询

  介绍

这期内容当中小编将会给大家带来有关如何正确的使用Mybatis模糊查询,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

<强> Mybatis模糊查询和动态sql语句

<强>模糊查询

对数据库最常用的操作就是查询了,但是如何使用Mybatis进行模糊查询呢?下面先看一个简单的模糊查询

,, & lt; select  id=皊elect01", resultMap=癇asicResultMap"比;   ,,SELECT    ,,*,   ,从   ,,oa_employee    WHERE 才能;emp_name  LIKE  # {asd},   & lt;才能/select>

这是一条伪模糊查询,因为没有实现真正的模糊”%”。参数为字符串,所以#{}中内容不被限制。但是应该如何插入%字符呢。我们首先想到的是传递字符串参数时将%插入到字符串中“张%”,但是这种方法操作略微繁琐了一些。下面提供了使用sql方法的策略

, & lt; select  id=皊elect01", resultMap=癇asicResultMap"比;   ,,SELECT    ,,*,   ,从   ,,oa_employee    WHERE 才能emp_name  LIKE  CONCAT (, # {asd}, & # 39; % & # 39;)   & lt;才能/select>

另外一种不推荐的写法给大家

& lt; select  id=皊elect01", resultMap=癇asicResultMap"比;   ,,SELECT    ,,*,   ,从   ,,oa_employee    WHERE 才能;emp_name  LIKE  & # 39; $ {emp_name} % & # 39;   & lt;才能/select>

#{}是采用预编译的写法,也就是JDBC中的PerpareStatement,这种写法可以防止sql注入,但${}这种写法是不采用预编译,其中的参数写成类中的属性或者映射的键值或者为接口中注解的参数名。

mybatis提供了绑定标签。下面举个例子

, & lt; select  id=皊elect01", resultMap=癇asicResultMap"比;   & lt;才能bind  name=癳mp_name",价值=https://www.yisu.com/zixun/啊?’+ _parameter.getEmp_name () + ' % ' "/>   选择   *   从   oa_employee   在emp_name像# {emp_name}   

他是在#{}表达式自动填入值值值得注意的是“<代码> _parameter.getEmp_name() "调用的方法是对象中作为查询参数的属性的获得方法

<强>多条件查询

多种条件查询的要点是判断查询条件是否为空,拼接sql语句。在mybatis中提供了如果标签和地方标签。下面来介绍两种标签的用法。

<强>如果标签

& lt; select  id=皊elect01", resultMap=癇asicResultMap"祝辞,   SELECT    *,   得到;   oa_employee    WHERE  1=1,   & lt; if 测试=癳mp_name  !=, null 以及emp_name  !=, & # 39; & # 39;“祝辞,   以及emp_name =, # {emp_name },   时间/if> & lt;   & lt; if 测试=癳mp_sex  !=, null 以及emp_sex  !=, & # 39; & # 39;“祝辞,   以及sex =, # {emp_sex},   时间/if> & lt;   & lt;/select>

mybatis中的如果标签有些类似于EL表达式的使用,测试中可以直接写入类中的属性或者关键值。

<强>,标签

& lt; select  id=皊elect01", resultMap=癇asicResultMap"比;   ,,SELECT    ,,*,   ,,   ,,oa_employee    ,,& lt; where>   ,,& lt; if 测试=癳mp_name  !=, null 以及emp_name  !=, & # 39; & # 39;“比;   ,,,以及emp_name =, # {emp_name }   ,,& lt;/if>   ,,& lt; if 测试=癳mp_sex  !=, null 以及emp_sex  !=, & # 39; & # 39;“比;   ,,,以及sex =, # {emp_sex}   ,,& lt;/if>   ,,& lt;/where>   & lt;才能/select>

这里的地方标签替换了前一段代码的1=1。mybatis中的地方标签会判断标签内是否有内容,如果有内容就自动生成,并把地方后面的第一个和+一个空格,或+一个空格去掉。

选择,当和其他标签

& lt; select  id=皊elect01", resultMap=癇asicResultMap"比;   ,,SELECT    ,,*,   ,,   ,,oa_employee    ,,& lt; where>   ,,& lt; choose>   ,,,& lt; when 测试=癳mp_name  !=, null 以及emp_name  !=, & # 39; & # 39;“比;   ,,,,,,以及emp_name =, # {emp_name }   ,,,& lt;/when>   ,,,,& lt; when 测试=癳mp_sex  !=, null 以及emp_sex  !=, & # 39; & # 39;“比;   ,,,,,,以及sex =, # {emp_sex}   ,,,& lt;/when>   ,,,& lt; otherwise>   ,,,,,emp_id =50   ,,,& lt;/otherwise>   ,,& lt;/choose>   ,,& lt;/where>   & lt;才能/select>

如何正确的使用Mybatis模糊查询