首页 > 开发 > Java > 正文

详解MyBatis模糊查询LIKE的三种方式

2024-07-14 08:42:36
字体:
来源:转载
供稿:网友

模糊查询也是数据库SQL中使用频率很高的SQL语句,使用MyBatis来进行更加灵活的模糊查询。

直接传参法

直接传参法,就是将要查询的关键字keyword,在代码中拼接好要查询的格式,如%keyword%,然后直接作为参数传入mapper.xml的映射文件中。

public void selectBykeyWord(String keyword) {   String id = "%" + keyword + "%";   String roleType = "%" + keyword + "%";   String roleName = "%" + keyword + "%";   userDao.selectBykeyWord(id,roleName,roleType); }

在Dao层指定各个参数的别名

 

复制代码代码如下:
List<RoleEntity> selectBykeyWord(@Param("id") String id,@Param("roleName") String roleName,@Param("roleType") String roleType);

 

<select id="selectBykeyWord" parameterType="string" resultType="com.why.mybatis.entity.RoleEntity">    SELECT      *    FROM      t_role    WHERE      role_name LIKE #{roleName}      OR id LIKE #{id}      OR role_type LIKE #{roleType}  </select>

执行出来的SQL语句:

SELECT  *FROM  t_roleWHERE  role_name LIKE '%why%'OR id LIKE '%why%'OR role_type LIKE '%why%';

CONCAT()函数

MySQL的 CONCAT()函数用于将多个字符串连接成一个字符串,是最重要的mysql函数之一。

CONCAT(str1,str2,...)
List<RoleEntity> selectBykeyWord(@Param("keyword") String keyword);
  <select id="selectBykeyWord" parameterType="string" resultType="com.why.mybatis.entity.RoleEntity">    SELECT      *    FROM      t_role    WHERE      role_name LIKE CONCAT('%',#{keyword},'%')    OR      id LIKE CONCAT('%',#{keyword},'%')    OR      role_type LIKE CONCAT('%',#{keyword},'%')  </select>

Mybatis的bind

List<RoleEntity> selectBykeyWord(@Param("keyword") String keyword);
<select id="selectBykeyWord" parameterType="string" resultType="com.why.mybatis.entity.RoleEntity">    <bind name="pattern" value="'%' + keyword + '%'" />    SELECT    *    FROM    t_role    WHERE    role_name LIKE #{pattern}    OR    id LIKE #{pattern}    OR    role_type like #{pattern}  </select>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持VeVb武林网。


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表