目录
场景:
问题分析:
问题解决:
场景:
简单讲一下应用场景
我拿到一个项目,完成后端数据处理,在进行可选条件查询时,使用动态sql
在mapper.xml中我先是这么写的
<select id="list" resultType="com.yizhi.student.domain.StudentInfoDO"> select * from s_student_info <where> <if test="name!=null"> student_name like concat('%',#{name},'%') </if> <if test="tocollegeId!=null"> and tocollege=#{tocollegeId} </if> <if test="tomajorId!=null"> and tomajor=#{tomajorId} </if> <if test="classId!=null"> and class_id=#{classId} </if> </where> limit #{currPage},#{pageSize} </select>
然后,就出现if标签失效的情况,关键是它有时候也会返回到前端数据,给我都搞蒙了
反复查看,加上网搜索类似案例
大致知道是什么原因
问题分析:
在前端向后端传递数据时,不一定传递的是null,也会是空字符串。
果然,在加上判断后可以执行if
问题解决:
<select id="list" resultType="com.yizhi.student.domain.StudentInfoDO"> select * from s_student_info <where> <if test="name!=null and name!=''"> student_name like concat('%',#{name},'%') </if> <if test="tocollegeId!=null and tocollegeId!=''"> and tocollege=#{tocollegeId} </if> <if test="tomajorId!=null and tomajorId!=''"> and tomajor=#{tomajorId} </if> <if test="classId!=null and classId!=''"> and class_id=#{classId} </if> </where> limit #{currPage},#{pageSize} </select>