kevincheung 2020-04-23
1.if 标签
注意:where 1=1是为了避免当uId不传值时,会导致生成bad sql
<select id="getStuByIf" resultType="com.itheima.pojo.TbStudent" parameterType="com.itheima.pojo.TbStudent"> select * from tb_student where 1=1 <if test="uId!=null and uId!=‘‘ "> and u_id=#{uId} </if> <if test="uName!=null and uName!=‘‘"> and u_name=#{uName} </if> <if test="sex!=null and sex!=‘‘"> and sex=#{sex} </if> <if test="tId!=null and tId!=‘‘"> and t_id=#{tId} </if> </select>
TbStudent student = new TbStudent(); // student.setuId(2); student.setuName("lisi"); student.setSex("男"); List<TbStudent> stu = tbStudentMapper.getStuByIf(student); System.out.println(stu); Preparing: select * from tb_student where 1=1 and u_name=? and sex=?
2.where 标签
改进if标签
<select id="getStuByIf" resultType="com.itheima.pojo.TbStudent" parameterType="com.itheima.pojo.TbStudent"> select * from tb_student <where> <if test="uId!=null and uId!=‘‘ "> and u_id=#{uId} </if> <if test="uName!=null and uName!=‘‘"> and u_name=#{uName} </if> <if test="sex!=null and sex!=‘‘"> and sex=#{sex} </if> <if test="tId!=null and tId!=‘‘"> and t_id=#{tId} </if> </where> </select>
② Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType的类型相同。④ Mapper.xml文件中的namespace即是mapper接口的类路径。