MyBatis配置动态SQL语句基础
MyBatis配置动态SQL语句
在 MyBatis 的 SQL映射文件中,有时候需要根据一些查询条件,来选择不同的SQL语句,如果每一个场景都重写SQL,很显然效率没有很高,而 MyBatis 的动态SQL很好的解决了这种问题,根据条件动态的处理 SQL, 特别简单的说就是,写一次SQL,但是根据分支等的跳转,在多个场景下也可以使用,例如:
- 当查询条件由于参数不同而无法确定具体是什么,可以使用
<where>
标签包含 - 在
<where>
可以使用<if test="....">
分条件进行处理,实现动态 <foreach>
遍历标签放到后面代码中具体说
在此之外,动态SQL同时结局了,在原生 JDBC 中需要拼接SQL语句时由于书写问题,而导致报错
(一) where 和 if 标签
UserMapper 接口
/**
* 根据条件查询
* @return
*/
List<User> findUserByCondition(User user);
复制代码
UserMapper.xml
<select id="findUserByCondition" resultType="cn.ideal.domain.User" parameterType="cn.ideal.domain.User">
select * from user
<where>
<if test="username != null">
and username = #{username}
</if>
<if test="gender != null">
and gender = #{gender}