//1.名字中包含雨并且年龄小于40 name like '%雨%' and age<40
@Test
public void selectByWrapper(){
QueryWrapper<User> queryWrapper=new QueryWrapper<User>();
//QueryWrapper<User> query=Wrappers<User>query();
queryWrapper.like("name","雨").lt("age",40);
List<User> userList=UserMapper.selectList(queryWrapper);
userList.forEach(System.out:println);
}
//2.名字中包含雨,并且年龄大于等于20且小于等于40,并且email不为空
//name like"%雨%" and age between 20 and 40 and email is not null
@Test
public void selectByWrapper2(){
QueryWrapper<User> queryWrapper=new QueryWrapper<User>();
queryWrapper.like("name","雨").between("age",20,40).isNotNull("email");
List<User> userList=userMapper.selectList(queryWrapper);
userList.forEach(System.out:println);
}
//3.名字为王姓或者年龄大于等于25,按照年龄降序排列,年龄相同按照id升序排列
// name like '王%' or age>=25 order by age desc,id asc
@Test
public void selectByWrapper3(){
QueryWrapper<User> queryWrapper=new QueryWrapper<User>();
queryWrapper.likeRight("name","王").or().get("age","25").orderByDesc("age").orderByAsc("id");
List<User> userList=userMapper.selectList(queryWrapper);
userList.forEach(System.out:println);
}
//4.创建日期为2019年2月14日并且直属上级为名字为王姓
//data_format(create_time,'%Y-%m-%d') and manager_id in(select id from user where name like //'王%')
@Test
public void selectByWrapper4(){
QueryWrapper<User> queryWrapper=new QueryWrapper<User>();
queryWrapper.apply("date_format(create_time,'%Y-%m-%d')={0}","2019-02-14").insql("manager_id","select id from user where name like '王%'");
List<User> userlist=userMapper.selectList(queryWrapper);
userList.forEach(System.out::println);
}
// 5.名字为王姓并且(年龄小于40或邮箱不为空)
// name like '王%' and (age<40 or email is not null)
@Test
public void selectByWrapper5(){
QueryWrapper<User> queryWrapper=new QueryWrapper<User>();
queryWrapper.likeRight('name',"王").and(wq->wq.it("age",40)).or.isNotNull("email");
List<User> userList=userMapper.selectList(queryWrapper);
userList.forEach(System.out::println);
}
//6.名字为王姓或者(年龄小于40并且年龄大于20并且邮箱不为空)
//name like '王%' or(age<40 and age>20 and email is not null)
@Test
public void selectByWrapper6(){
QueryWrapper queryWrapper=new QueryWrapper<User>();
queryWrapper.likeRight('name',"王").or((wq->wq.gt("age",40).and(wq->wq.lt("age",20)0.isNotNULL("email"));
List<User> userlist=userMapper.selectList(queryWrapper);
userList.forEach(System.out::println);
}
//7.(年龄小于40或邮箱不为空)并且名字为王姓
//(age<40 or email is not null)and name like '王%'
@Test
public void selectByWrapper7(){
QueryWrapper<User> queryWrapper=new QueryWrapper<User>();
queryWrapper,nested(wq->wq.lt("age",40).or().isNotNull("email")),likeRight("name","王");
List<User> userlist=userMapper.selectList(queryWrapper);
userList.forEach(System.out::println);
}
//8.年龄为30,31,34,35 age in(30,31,34,35)
@Test
public void selectByWrapper8(){
QueryWrapper<User> queryWrapper=new QueryWrapper<USer>();
queryWrapper.in("age",Arrays.asList(30,31,34,35));
List<User> userList=userMapper.selectList(queryWrapper);
userList.forEach(System.out::println);
}
//9.只返回满足条件的其中一条语句即可,limit 1
@Test
public void selectByWrapper9(){
QueryWrapper<User> queryWrapper=new QueryWrapper<User>();
queryWrapper.in("age",Arrays.asList(30,31,34,35)).last("limit 1");
List<User> userList=userMapper.selectList(queryWrapper);
userList.forEach(System.out::println);
}
queryWrapper中方法中隐藏默认为true的condition
//11.按照直属上级分组,查询每组的平均年龄,最大年龄,最小年龄,
//并且只取年龄总和小于500的组
//select avg(age) avg_age,min(age) min_age,max(age) max_age from //user group by manager_id having sum(age)<500
@Test
public void selectByWrapperMaps2(){
QueryWrapper<User> queryWrapper=new QueryWrapper<User>();
queryWrapper.select("avg(age) avg_age","min(age) min_age","max(age) max_age").groupBy("manage_id").having("sum(age)<{0}",500);
List<Map<String Object> userList> =userMapper.selectMaps(queryWrapper);
userList.forEach(System.out.println);
/查询结果只返回一列可以用/
@Test
public void selectByWrapperObjs(){
QueryWrapper<User> queryWrapper=new QueryWrapper<User>();
queryWrapper.select("id","name").like("name","雨").lt("age",40);
List<Object> userList=userMapper.selectObjts(queryWrapper);
userList.forEach(System.out::println);
}
查询记录条数
@Test
public void selectByWrapperCount(){
QueryWrapper<User> queryWrapper=new QueryWrapper<User>();
queryWrapper.like("name","雨").lt("age",40);
Integer count = userMapper.selectCount(queryWrapper);
System.out.println("总记录数"+count);
}
保证要查询出来的记录数只有一条,,多于一条会报错的,,只能查一条
@Test
public void selectByWrapperOne(){
QueryWrapper<User> queryWrapper=new QueryWrapper<User>();
queryWrapper.like("name","刘红雨").lt("age",40);
User user=userMapper.selectOne(queryWrapper);
System.out.println(user);
}
mp提供的物理分页的两种返回形式,mybatisi是内存分页
@Test
public void selectPage(){
QueryWrapper<User> queryWrapper=new QueryWrapper<QueryWrapper>();
queryWrapper.ge("age",18);
Page<User> page=new Page<User>(1,2);
Ipage<User> ipage=userMapper.selectPage(page,queryWrapper);
System.out.println("总页数"+Ipage.getPages());
System.out.println("总记录数"+Ipage.getTotal());
List<User> userList=Ipage.getRecords();
userList.forEach(System.out::println);
}
update
@Test
public void updateById(){
User user=new User();
user.setId(1088248166370832385L);
user.setAge(26);
user.serEmail("wtf2@Baomidou.com");
int rows=userMapper.updateById(user);
System.out.println("影响记录数:"+rows);
}
@Test
public void updateByWrapper(){
UpdateWrapper<User> updateWrapper=new UpdateWrapper<User>();
updateWrapper.eq("name","李艺伟").eq("age",28);
User user=new User();
user.setEmail("lyw2019@Baomidou.com");
user.setAge(29);
int rows=userMapper.update(user,updateWrapper);
System.out.println("影响记录数:"+rows);
}
@Test
public void updateByWrapperLambda(){
LambdaUpdateWrapper<User> lambdaUpdate=Wrappers<User> lambdaUpdate();
lambdaUpdate.eq(User::getName,"李以为").eq(User::getAge,30).set(User::getAge,31);
int rows=UserMapper.update(null,lambdaUpdate);
System.out.println("影响记录数",+rows);
}
@Test
public void deleteByMap(){
Map<String,Object> columnMap=new HashMap<>();
columnMap.put("name","向后");
column.put("age",25);
int rows=userMapper.deleteByMap(columnMap);
System.out.println("删除条数",+rows);
}
@Test
public void deleteBatchIds(){
int rows=userMapper.deleteBatchIds(Arrays.asList(1104220508505546754L,1104216373458722818L,
1104215684997255169L));
System.out.println("删除条数",+rows);
}
@Test
public void deleteByWrapper(){
LambdaQueryWrapper<User> lambdaQuery=Wrapper.<User>lambdaQuery();
lambdaQuery.eq(User::getAge,27).or().gt(User::getAge,41);
int rows=userMapper.delete(lambdaQuery);
System.out.println("删除条数"+rows);
}