动态SQL就是Mybatis允许在映射文件中通过标签控制SQL语句最后的拼凑结果。
9.5.2-
语法:在mapper映射文件中,
标签就相当于Java中if语句,如果条件成立,标签体内的SQL语句有效。 //有效的SQL语句片段 -
封装对象:UserVo
public class UserVo { private String name; // 模糊查询 private String beginTime; // 开始时间 private String endTime; // 结束时间 // ... } -
多条件查询,拼凑恒等条件 where 1=1
-
测试
@Test public void testCondtion() { UserMapper UserMapper = MyBatisUtils.getMapper(UserMapper.class); UserVo userVo = new UserVo(); userVo.setName("张"); Listlist = UserMapper.condition(userVo); // 打印 list.forEach(System.out::println); MyBatisUtils.commitAndclose(); }
-
多条件查询时,我们使用了一个小技巧“where 1=1”,mybatis提供了一个
进行取代。 -
修改映射文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FVEUHZWa-1632962235892)(assets/image-20210723100326211.png)]
-
语法:
-
封装对象
public class UserVo { private Listids = new ArrayList<>(); private String name; // 模糊查询 private String beginTime; // 开始时间 private String endTime; // 结束时间 // ... } -
多条件查询
-
测试
@Test public void testCondtion() { UserMapper UserMapper = MyBatisUtils.getMapper(UserMapper.class); UserVo userVo = new UserVo(); userVo.setIds(Arrays.asList("u001","u002")); Listlist = UserMapper.condition(userVo); // 打印 list.forEach(System.out::println); MyBatisUtils.commitAndclose(); } 总结:动态Sql可以应对多条件多要求的查询业务,可以根据编写者的判断逻辑来编写不一样的sql语句,属实好用。
离工作又近了一天!!!!!!



