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>