文章目录
一、什么是动态 SQL?
在 MyBatis 中提供了动态 SQL 功能。将使用 Java 代码拼接 SQL 语句,改变为在 XML 映射文件中使用标签拼接 SQL 语句。
MyBatis 中动态 SQL 是编写在 mapper.xml 中的,其语法和 JSTL 类似,但是却是基于强大的 OGNL 表达式实现的。
二、 if 标签
if 标签单分支判断语句
1、修改映射配置文件
<!-- 根据用户给定的条件进行查询-->
<select id="selectUsersByProperty" resultType="users">
select * from users where 1=1
<if test="userid != 0">
and userid = #{
userid}
</if>
<if test="username != null and username != ''">
and username = #{
username}
</if>
<if test="usersex != null and usersex != '' ">
and usersex = #{
usersex}
</if>
</select>
2、修改UsersMapper接口
List<Users> selectUsersByProperty(Users users);
3、创建测试类
public class SelectUsersByPropertyTest {
public static void main(String[] args) {
SqlSession sqlSession = MybatisUtils.getSqlSession();
UsersMapper usersMapper = sqlSession.getMapper(UsersMapper.class);
Users users = new Users();
users.setUsername("aaaaaa");
users.setUserid(8);
List<Users> list = usersMapper.selectUsersByProperty(users);
list.forEach(System.out::println);
}
}
三、 choose、when、otherwise 标签
从多个条件中选择一个使用。
1、修改映射配置文件
<!-- 多选一条件-->
<select id="selectUsersByChoose" resultType="users">
select * from users where 1=1
<choose>
<when test="username != null and username !=''">
and username = #{
username}
</when>
<when test="usersex != null and usersex !=''">
and usersex = #{
usersex}
</when>
<otherwise>
and userid = 1
</otherwise>
</choose>
</select>
2、修改UsersMapper接口
List<Users> selectUsersByChoose(Users users);
3、创建测试类
public class SelectUsersByChooseTest {
public static void main(String[] args) {
SqlSession sqlSession = MybatisUtils.getSqlSession();
UsersMapper usersMapper = sqlSession.getMapper(UsersMapper.class);
Users users = new Users();
users.setUsername(