动态SQL: 根据条件动态的对SQL进行拼接组装
执行原理:使用OGNL从SQL参数中计算表达式的值,根据表达式的值动态的拼接SQL,以此完成动态SQL功能
标签:如;if标签,where、trim、foreach等标签
if标签:
通过student中的条件查询对象或对象结果
通过id查询:select * from student where SID= ?
通过name查询:select * from student where Name= ?
通过id和name查询:select * from student where id=? and name =?
全表查询:select * from student
if标签使用示例:
<select id="selectStudent" parameterType="student" resultType="student">
select * from student
where 1=1
<if test="id != null and id != 0" >
and SID = #{id}
</if>
<if test="name != null" >
and Sname = #{name}
</if>
</select>
if标签通常是根据条件做判断,一般作为where子句的一部分
if表达式判断是否传递参数在其后面有一个test属性,该属性必填,为true或false,
为true时,会拼接该if中SQL片段,为false,则不拼接SQL子句
该test的判断是通过OGNL表达式判断
传递name和id属性:
//新建一个student对象
Student student = new Student();
//按照id查询
student.setId(1);
//按照姓名查询
student.setName("zhangsan");
//执行方法
studentMapper.selectStudent(student);
执行结果:
只传递id:
Student213 student213 = new Student213();
student213.setId(1);
studentMapper213.selectStudent(student213);
执行结果:
不传递参数:
Student213 student213 = new Student213();
studentMapper213.selectStudent(student213);
执行结果: