MybatisPlus 中and和or的使用,附有对应的sql语句,有助于理解。

示例一:

需求:取类型为1且创建时间小于等于dateStr="2022-01"的项目。

1.数据库中的创建时间为日期类型,需格式为年月的格式与传进来的开始日期进行匹配

2.条件构造器apply的查询方式解决日期和时间之间查询上的冲突

projectMapper.selectList(new LambdaQueryWrapper<Project>()
                .eq(Project::getType,1)
                .and(qw -> qw.apply("DATE_FORMAT(create_time, '%Y-%m') <= '" + dateStr + "'")));

执行SQL如下:

 SELECT
 *
 FROM project
 WHERE 
 type = 1 
 AND (DATE_FORMAT(create_time, '%Y-%m') <= '2022-01');

示例二

and中的or,和外层的or,看sql,有助于理解。

// 示例二
customerMapper.selectList(new LambdaQueryWrapper<Customer>()
        .eq(Customer::getTaxpayerIdentificationNumber,"912102113000000000")
        .and(qw -> qw.eq(Customer::getParentId,111).or().eq(Customer::getContactNumber,"88"))
        .eq(Customer::getName, "啦啦啦")
        .or()
        .ne(Customer::getNumber, 1)
        .eq(Customer::getCompanyType,1));

执行SQL如下:

SELECT
*
FROM
	customer
WHERE
	taxpayer_identification_number = '912102113000000000'
	AND (
		parent_id = 111
		OR contact_number = '88'
	)
	AND NAME = '啦啦啦'
	OR number <> 1
	AND company_type = 1;

示例三:

需求:查截止到今天,未下项目的数据。

  1. under_project_time为下项目时间

  2. 使用条件构造器apply查询方式可以直接把格式一样当前日期和下项目时间进行比较筛选

employeeProjectMapper.selectList(new LambdaQueryWrapper<EmployeeProject>()
                .isNotNull(EmployeeProject::getState)
                .eq(EmployeeProject::getFlag, 1)
                .and(qw -> qw.isNull(EmployeeProject::getUnderProjectTime)
                        .or().apply("DATE_FORMAT(under_project_time, '%Y-%m-%d') >= DATE_FORMAT(NOW(),'%Y-%m-%d')")));

执行SQL如下:

SELECT
*
FROM
	employee_project
WHERE
	state IS NOT NULL
	AND flag = 1
	AND (
		under_project_time IS NULL
		OR DATE_FORMAT(under_project_time, '%Y-%m-%d') >= '2022-07-27'
	);

示例四:

需求:根据传进来的年月字符串dateStr,查传入月的在职男员工数。dateStr = "2022-01"。

  1. entry_time为入职时间,date类型

  2. separated_time为离职时间,date类型

  3. 入职时间和离职时间为日期类型,需格式为年月的格式与传进来的dateStr进行比较筛选

查询逻辑:首先性别男,其次:①入职时间小于等于dateStr且未离职;②:入职时间小于等于dateStr,且离职时间大于等于dateStr。

employeeMapper.selectList(new LambdaQueryWrapper<Employee>()
                .eq(Employee::getSex, 1)
                .and(qw ->
                        qw.apply("date_format (entry_time,'%Y-%m') <= '" + dateStr + "' AND separated_time IS NULL" )
                                .or()
                                .apply("date_format (entry_time,'%Y-%m') <= '" + dateStr + "' AND date_format (separated_time,'%Y-%m') >= '" + dateStr + "'")));

执行SQL如下:

SELECT
*
FROM
	employee
WHERE
	sex = 1
	AND (
		date_format(entry_time, '%Y-%m') <= '2022-01'
		AND separated_time IS NULL
		OR date_format(entry_time, '%Y-%m') <= '2022-01'
		AND date_format(separated_time, '%Y-%m') >= '2022-01'
	);
  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis Plus使用or函数可以在查询条件实现or逻辑操作。例如,可以使用LambdaQueryWrapper类的or方法来将多个查询条件进行or连接。下面是一个示例: ``` customerMapper.selectList(new LambdaQueryWrapper<Customer>() .eq(Customer::getTaxpayerIdentificationNumber,"912102113000000000") .and(qw -> qw.eq(Customer::getParentId,111).or().eq(Customer::getContactNumber,"88")) .eq(Customer::getName, "啦啦啦") .or() .ne(Customer::getNumber, 1) .eq(Customer::getCompanyType,1)); ``` 在这个示例使用了LambdaQueryWrapper类的eq方法来添加一个等于条件,然后使用and方法来添加一个and逻辑操作,接着使用or方法来添加一个or逻辑操作,最后使用eq方法添加另一个等于条件,并且使用or方法来添加一个or逻辑操作。这样就能够实现or逻辑操作。 引用提供的代码示例展示了如何使用or函数和LambdaQueryWrapper类来构建含有or逻辑操作的查询条件。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [MATLABisequal函数转化为C语言,有项目算法使用matlabisequal函数进行运算,这里需要将转化为C语言](https://download.csdn.net/download/li171049/88279963)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [MybatisPlus and和or的使用附有对应sql语句有助于理解。](https://blog.csdn.net/lucky_she_niu/article/details/126020429)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值