MybatisPlus使用Wrapper實現查詢功能
Wrapper---條件查詢器
:使用它可以實現很多復雜的查詢
環境:
參照博客:MybatisPlus入門程序
1.條件查詢
1.1 查詢name不為空的用戶,並且郵箱不為空的用戶,年齡大於等於12的用戶
//查詢name不為空的用戶,並且郵箱不為空的用戶,年齡大於等於12 @Test
void selectBy01(){
QueryWrapper<User> wrapper=new QueryWrapper<>();
wrapper
.isNotNull("name") //name不為空的用戶
.isNotNull("email") //郵箱不為空的用戶
.ge("age",12); //年齡大於等於12
userMapper.selectList(wrapper).forEach(System.out::println);
}
1.2 查詢 name 為 "Jone" 的用戶
//查詢name為 "Jone" 的用戶 @Test
void selectBy02(){
QueryWrapper<User> wrapper=new QueryWrapper<>();
wrapper.eq("name","Jone"); //name為 "Jone" 的用戶
//查詢一個數據,為多個用 selectList 或者 selectByMap
User user = userMapper.selectOne(wrapper);
System.out.println(user);
}
1.3 查詢 10 到 20 歲的用戶數
//查詢 10 到 20 歲的用戶數 @Test
void selectBy03(){
QueryWrapper<User> wrapper=new QueryWrapper<>();
wrapper.between("age",10,20);
Integer count = userMapper.selectCount(wrapper);
//查詢 10 到 20 歲的用戶的結果數
System.out.println(count);
}
2.模糊查詢
2.1 使用 like + notLike + likeRight
@Test
void selectLike01(){
QueryWrapper<User> wrapper=new QueryWrapper<>();
wrapper
.notLike("name","To") //名字不包含 To
.like("name","o") //名字包含 o 的
//左和右 左:%e 右:e% 兩邊:%e%
//右查詢
.likeRight("email","test");
List<Map<String, Object>> users = userMapper.selectMaps(wrapper);
users.forEach(System.out::println);
}
2.2 子查詢
@Test
void selectLike02(){
QueryWrapper<User> wrapper=new QueryWrapper<>();
wrapper
//一個SQL語句寫的子查詢
.inSql("id","select id from user where age<20");
List<Object> users = userMapper.selectObjs(wrapper);
users.forEach(System.out::println);
}
2.3 降序排序
@Test
void selectLike03(){
QueryWrapper<User> wrapper=new QueryWrapper<>();
//降序排序
wrapper.orderByDesc("id");
//升序排序
//wrapper.orderByAsc("id");
List<User> users = userMapper.selectList(wrapper);
users.forEach(System.out::println);
}