MyBatis 模糊查询

问题描述

编写SQL,实现根据业务名称,模糊查询业务信息。

解决方案

方案1:SQL里实现

<!-- 通过 projectName 模糊查询数据 -->
    <select id="findByProjectName" parameterType="String" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List" />
        from project
        where
        <!-- project_name like '%'||#{projectName}||'%' 查询的是全部信息-->
        <!-- project_name like '%#{projectName}%' 报错 -->
        <!-- project_name like '%"#{projectName}"%' 报错-->
        <!-- project_name like '%'||${projectName}||'%' -->
        <!-- project_name like '%${projectName}%' -->
        project_name like CONCAT(CONCAT('%',#{projectName}),'%')
    </select>

【说明】已测试验证,除了下面的这种方式,可以实现模糊查询

project_name like CONCAT(CONCAT('%',#{projectName}),'%')

其余被注释掉的几种写法,均不可以实现!!!

方案2:Java代码里预处理

如果在Java代码里事先处理:

List<ProjectEntity> entityList = projectBiz.findByProjectName("%" + projectName + "%");

SQL可以使用下面的方式:

<!-- 通过 projectName 模糊查询数据 -->
    <select id="findByProjectName" parameterType="String" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List" />
        from project
        where
        project_name like #{projectName}
    </select>
原文地址:https://www.cnblogs.com/miracle-luna/p/10882893.html