动态sql 复用sql语句
1.定义sql片段
<sql id="xxx_column">被复用的片段</sql>
2.引用sql片段
<include refid="xxx_column"></include>
动态sql 简化查询
DAO简化
将所有可能查询的参数,封装成XxxQuery对象
where标签+if标签 动态查询
核心:调用dao方法传入参数不同,决定了sql的条件不同
动态sql:一个sql标签,由于传入参数不同,实际执行的sql语句也不同
<!--where标签代替where关键词-->
<where>
<if test="dao方法参数的属性名 表达式判断(且and、或or、逻辑运算符、equals)">
dao方法参数的属性名 = #{dao方法参数的属性名}
</if>
<if test="id != null and !id.equals('')"></if>
</where>
update+if标签 动态修改
set标签:
1.代替set关键字
2.自动忽略修改列后面多余的 逗号
if标签:
test="dao方法的参数属性是否有值"
语法:
<if test="参数属性名 != null ">
...修改sql ,
</if>
forEach标签 动态删除
接口的方法:
void delete(@Param("ids")String[] ids);
mapper文件:
conllection:被遍历的参数值
item:数组遍历过程中每个元素值的名字
<delete id="delete" >
delete from t_student where id in
<foreach collection="ids" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
rim标签
作用:
1.可以替代任何关键字(where set)
2.可以忽略任何特殊字符(and ,)