mybatis的动态sql
Posted liudingwei
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis的动态sql相关的知识,希望对你有一定的参考价值。
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>
以上是关于mybatis的动态sql的主要内容,如果未能解决你的问题,请参考以下文章
Mybatis -- 动态Sql概述动态Sql之<if>(包含<where>)动态Sql之<foreach>sql片段抽取
mybatis动态sql之利用sql标签抽取可重用的sql片段
MYBATIS05_ifwherechoosewhentrimsetforEach标签sql片段