//條件構造器
@Test
public void test01(){
/**
* 查詢使用者名包含a,年齡在20到30之間,并且郵箱不為null的使用者資訊
*
* SELECT uid AS id,user_name AS name,age,email,is_deleted FROM t_user
* WHERE is_deleted=0 AND
* (user_name LIKE ? AND age BETWEEN ? AND ? AND email IS NOT NULL)
*/
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.like("user_name","三")
.between("age",20,25)
.isNotNull("email");
List<User> list = userMapper.selectList(queryWrapper);
list.forEach(System.out::println);
}
3、QueryWrapper(組裝排序條件)
@Test
public void test02(){
/**
* //按年齡降序查詢使用者,如果年齡相同則按id升序排列
* //SELECT id,username AS name,age,email,is_deleted FROM t_user WHERE is_deleted=0 ORDER BY age DESC,id ASC
*/
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.orderByDesc("age")
.orderByAsc("id");
List<User> users = userMapper.selectList(queryWrapper);
users.forEach(System.out::println);
}
4、QueryWrapper(組裝删除條件)
@Test
public void test03(){
/**
* 删除email為空的使用者
* UPDATE t_user SET is_deleted=1 WHERE is_deleted=0 AND (email IS NULL)
*/
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.isNull("email");
int rs = userMapper.delete(queryWrapper);
System.out.println(rs);
}
5、QueryWrapper(資訊的修改)
@Test
public void test04(){
/**使用queryWrapper實作使用者資訊的修改
* 将(年齡大于20并且使用者名中包含有a)或郵箱為null的使用者資訊修改
* UPDATE t_user SET user_name=?, age=? WHERE is_deleted=0 AND (age > ? AND user_name LIKE ? OR email IS NULL)
*/
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.gt("age",20)
.like("user_name","a")
.or()
.isNull("email");
User user = new User();
user.setName("孫悟空");
user.setAge(32);
int rs = userMapper.update(user,queryWrapper);
System.out.println(rs);
}
6、QueryWrapper(條件的優先級)
@Test
public void test05(){
/**
* 條件的優先級
* 将使用者名中包含有a并且(年齡大于20或郵箱為null)的使用者資訊修改
* lambda中的條件優先執行
* UPDATE t_user SET user_name=?, age=?, email=? WHERE is_deleted=0 AND (user_name LIKE ? AND (age > ? OR email IS NULL))
*/
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.like("user_name","a")
.and(i->i.gt("age",20).or().isNull("email"));
User user = new User();
user.setName("豬八戒");
user.setAge(32);
user.setEmail("[email protected]");
int rs = userMapper.update(user,queryWrapper);
System.out.println(rs);
}
7、QueryWrapper(組裝select子句)
@Test
public void test06(){
/**
* 查詢使用者資訊的username、age和email字段
* SELECT user_name,age,email FROM t_user WHERE is_deleted=0
*/
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.select("user_name","age","email");
List<Map<String,Object>> maps = userMapper.selectMaps(queryWrapper);
maps.forEach(System.out::println);
}
8、QueryWrapper(實作子查詢)
@Test
public void test07(){
/**
*查詢uid小于等于100的使用者資訊
* SELECT uid AS id,user_name AS name,age,email,is_deleted FROM t_user WHERE is_deleted=0 AND (uid IN (select uid from t_user where uid <= 100))
*/
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.inSql("uid","select uid from t_user where uid <= 100");
List<User> list = userMapper.selectList(queryWrapper);
list.forEach(System.out::println);
}
8、QueryWrapper(UpdateWrapper)
@Test
public void test08(){
/**
* 将使用者名中包含有a并且(年齡大于20或郵箱為null)的使用者資訊修改
* UPDATE t_user SET user_name=?,email=? WHERE is_deleted=0 AND (user_name LIKE ? AND (age > ? OR email IS NULL))
*/
UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
updateWrapper.like("user_name","a")
.and(i-> i.gt("age",20).or().isNull("email"));
updateWrapper.set("user_name","唐僧").set("email","[email protected]");
int rs = userMapper.update(null,updateWrapper);
System.out.println(rs);
}