問題描述
編寫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>