提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- AbstractWrapper 条件构造器
前言
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
AbstractWrapper 条件构造器
官网文档
https://baomidou.com/pages/10c804/#abstractwrapper
案例
@Test
public void testSelect01(){
List<User> userList = userDao.selectList(null);
System.out.println(userList);
}
/**
* 业务: 查询id=11的用户信息 主键...
*/
@Test
public void testSelect02(){
User user = userDao.selectById(11);
System.out.println(user);
}
/**
* 业务: 查询name属性为"小乔"的数据
* sql: select * from user where name="小乔";
* 对象的方式 > sql方式
*/
@Test
public void testSelect03(){
//条件构造器
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "小乔");
List<User> userList = userDao.selectList(queryWrapper);
System.out.println(userList);
}
/**
* 业务: 查询name属性为"小乔"的数据 并且 age >=18岁
* sql: select * from user where name="小乔" and age>=18;
*
* 大于 > gt| 小于 < lt |
* 大于等于 >= ge | 小于等于 le
*/
@Test
public void testSelect04(){
//条件构造器
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "小乔")
.ge("age", 18);
List<User> userList = userDao.selectList(queryWrapper);
System.out.println(userList);
}
/**
* 业务: 查询name中包含 "精"的用户,并且sex为女
* 业务: 查询name中包含 以精结尾的数据,并且sex为女
* sql: select * from user where name like "%精%" and sex="女";
*/
@Test
public void testSelect05(){
//条件构造器
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.likeLeft("name", "精")
.eq("sex", "女");
List<User> userList = userDao.selectList(queryWrapper);
System.out.println(userList);
}
/**
* 需求: 查询user表中的数据 要求按照年龄降序排列,如果年龄相同按照id降序排列
*/
@Test
public void testSelect06(){
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.orderByDesc("age","id");
List<User> userList = userDao.selectList(queryWrapper);
System.out.println(userList);
}
/**
* 需求: 查询name属性为null的数据.
* where name is null
*/
@Test
public void testSelect07(){
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.isNull("name");
List<User> userList = userDao.selectList(queryWrapper);
System.out.println(userList);
}
/**
* 查询name="小乔" age=17 性别=女的用户
* 如果传递的是对象.会根据对象中不为null的属性充当where条件.
*/
@Test
public void testSelect08(){
User user = new User();
user.setName("小乔").setAge(17).setSex("女");
QueryWrapper<User> queryWrapper = new QueryWrapper<>(user);
List<User> userList = userDao.selectList(queryWrapper);
System.out.println(userList);
}
/**
* 查询id=1,3,5,10数据.
* sql: select * from user where id in (1,3,5,10)
*/
@Test
public void testSelect09(){
//转化时,注意使用对象的类型
Integer[] ids = {1,3,5,10};
List<Integer> idList = Arrays.asList(ids);
List<User> userList = userDao.selectBatchIds(idList);
System.out.println(userList);
}
@Test
public void testInsert(){
User user = new User();
user.setName("特朗普").setAge(70).setSex("男");
userDao.insert(user);
}
allEq
eq
ne
gt 、ge 、lt、le
between 、notBetween
like、notLike、likeLeft、likeRight、notLikeLeft、notlikeRight
isNull、isNotNull
in、notIn
inSql、notInSql
exists、notExists
groupBy
orderByAsc、orderByDesc、orderBy
having
func
or
and
nested
apply
last
QueryWrapper
UpdateWrapper
Mybatis-Plus 条件构造器select方法介绍
- 根据业务需求,有时候只需要返回特定的几个数据表字段,我们通过条件构造器的select方法可以指定;
- 还有一种情况,假如数据库字段很多的时候,我们要排除某几个字段,其他字段返回的时候,select方法也支持排除某些字段,查询其他的;
- 最后还有一种情况,我们搞分组聚合函数的时候,可以使用select方法,返回聚合函数执行后的数据字段;
实例一:查找薪水大于3500 名字里有“小”的 员工 (只显示编号和姓名)
- 注意: queryWrapper.select(“id”,“name”).gt(“salary”,3500).like(“name”,“小”);
@Test
public void selectByQueryWrapper7(){
QueryWrapper<Employee> queryWrapper=new QueryWrapper();
// QueryWrapper<Employee> queryWrapper2=Wrappers.<Employee>query();
queryWrapper.select("id","name").gt("salary",3500).like("name","小");
List<Employee> employeeList = employeeMapper.selectList(queryWrapper);
System.out.println(employeeList);
}
实例二:查找薪水大于3500 名字里有“小”的 员工 (排除出生日期和性别)
@Test
public void selectByQueryWrapper8(){
QueryWrapper<Employee> queryWrapper=new QueryWrapper();
// QueryWrapper<Employee> queryWrapper2=Wrappers.<Employee>query();
queryWrapper
.select(Employee.class,fieldInfo->!fieldInfo.getColumn().equals("birthday")&&!fieldInfo.getColumn().equals("gender"))
.gt("salary",3500)
.like("name","小");
List<Employee> employeeList = employeeMapper.selectList(queryWrapper);
System.out.println(employeeList);
}
实例三:查询每个部门的平均薪资
- sql实现:
SELECT departmentId,AVG(salary) AS avg_salary
FROM t_employee
GROUP BY department_id;
- mybatis-plus
@Test
public void selectByQueryWrapper9(){
QueryWrapper<Employee> queryWrapper=new QueryWrapper();
// QueryWrapper<Employee> queryWrapper2=Wrappers.<Employee>query();
queryWrapper
.select("department_id","AVG(salary) AS avg_salary")
.groupBy("department_id");
List<Employee> employeeList = employeeMapper.selectList(queryWrapper);
System.out.println(employeeList);
}