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>

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM