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

  • A+
所属分类:Java mybatis 软件开发

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

直接传参法

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


  1. public void selectBykeyWord(String keyword) {


  2.      String id = "%" + keyword + "%";


  3.      String roleType = "%" + keyword + "%";


  4.      String roleName = "%" + keyword + "%";


  5.      userDao.selectBykeyWord(id,roleName,roleType);


  6.  }

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

   

 List<RoleEntity> selectBykeyWord(@Param("id") String id,@Param("roleName") String roleName,@Param("roleType") String roleType);

 


  1. <select id="selectBykeyWord" parameterType="string" resultType="com.why.mybatis.entity.RoleEntity">


  2.        SELECT


  3.             *


  4.         FROM


  5.             t_role


  6.         WHERE


  7.             role_name LIKE #{roleName}


  8.             OR id LIKE #{id}


  9.             OR role_type LIKE #{roleType}


  10.     </select>

执行出来的SQL语句:


  1. SELECT


  2.     *


  3. FROM


  4.     t_role


  5. WHERE


  6.     role_name LIKE '%why%'


  7. OR id LIKE '%why%'


  8. OR role_type LIKE '%why%';

CONCAT()函数

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

CONCAT(str1,str2,...)
   

 List<RoleEntity> selectBykeyWord(@Param("keyword") String keyword);

  1. <select id="selectBykeyWord" parameterType="string" resultType="com.why.mybatis.entity.RoleEntity">


  2.         SELECT


  3.             *


  4.         FROM


  5.             t_role


  6.         WHERE


  7.             role_name LIKE CONCAT('%',#{keyword},'%')


  8.         OR


  9.             id LIKE CONCAT('%',#{keyword},'%')


  10.         OR


  11.             role_type LIKE CONCAT('%',#{keyword},'%')


  12.     </select>

Mybatis的bind

List<RoleEntity> selectBykeyWord(@Param("keyword") String keyword);

 


  1. <select id="selectBykeyWord" parameterType="string" resultType="com.why.mybatis.entity.RoleEntity">


  2.         <bind name="pattern" value="'%' + keyword + '%'" />


  3.         SELECT


  4.         *


  5.         FROM


  6.         t_role


  7.         WHERE


  8.         role_name LIKE #{pattern}


  9.         OR


  10.         id LIKE #{pattern}


  11.         OR


  12.         role_type like #{pattern}


  13.     </select>

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: