MyBatis like 语句的使用
其实严格来说这个问题都不应该归类为 MyBatis 的问题,这个问题的本质是数据库字符串的拼接问题,不同的数据库的字符串拼接方式是不一样的。比如 MySQL 是通过 CONCAT 函数来实现拼接的,Oracle 可以通过 ‘||’来拼接字符串。
所以如果你是 MySQL 数据库,可以通过如下的方式来实现 like 语句。
<!-- 根据条件获取学生信息--><select id="listByConditions" parameterType="studentQuery" resultMap="BaseResultMap">select<include refid="Base_Column_List" />from t_student<where><if test="ids != null and ids.size() > 0">AND id IN<foreach collection="ids" item="item" open="(" close=")" separator=",">#{item}</foreach></if><if test="name != null and name != ''">AND name LIKE CONCAT('%', #{name}, '%')</if><if test="sex != null">AND sex = #{sex}</if><if test="selfcardNo != null">AND selfcard_no = #{selfcardNo}</if></where></select>
网上还有通过 ‘%${name}%’,这种方式存在 SQL 注入的问题,不建议采用,我也没有测试过。
作者:殷建卫 链接:https://www.yuque.com/yinjianwei/vyrvkf/ran9qg 来源:殷建卫 - 架构笔记 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
