MybatisPlus--02--条件构造器 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);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值