Fork me on GitHub

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>

 

posted @ 2019-05-17 18:07  龙凌云端  阅读(3079)  评论(0编辑  收藏  举报