文章目录
- 1.前提条件
- 2.相关知识
- 3.原理解释:
- 4.情景复现:
1.前提条件
接口代码是由mybatis-plus封装的page分页
有一个实体类属性类型是long
和Long
的区别:long会添加一个过滤条件未异常情况,改成Long则不会添加是正常情况,详细情况参考下文情况一日志和情况二日志
2.相关知识
Java中Long和long的区别
- long是java中的基本数据类型,而Long是java中对象类型;
- 对于Long类型的数据,该数据是一个对象,而对于long类型的数据,该数据是一个基本数据类型,不属于对象。
3.原理解释:
MyBatis-Plus 是一个基于 MyBatis 的增强工具,用于简化 MyBatis 的开发流程。关于 Long 和 long 类型在 MyBatis-Plus 中自动添加过滤条件的问题,可以根据字段类型的不同,有不同的处理方式。
Long 类型
:对于 Long 类型的字段,MyBatis-Plus 会默认添加一个非空判断条件(IS NOT NULL
)。这意味着如果传入的参数值为 null,则 MyBatis-Plus 会生成一个非空判断的 SQL 条件,从而过滤掉数据库中该字段值为 null 的记录。
long 类型
:对于基本类型的 long 字段,由于不能为 null,MyBatis-Plus 不会生成额外的过滤条件。因为基本类型的 long 字段默认值为 0,如果没有进行赋值,则会将字段值设置为 0,不会影响查询结果。
4.情景复现:
接口代码:
@GetMapping("/page")
public R getPage(Page page, LiveInfo liveInfo) {
Page<LiveInfo> liveInfoPage = liveInfoService.page(page, Wrappers.query(liveInfo));
return R.ok(liveInfoPage);
}
实体类long属性:
/**
* 观看时间要求
*/
private Long viewTime;
情况一: 使用long类型
-
接口返回数据:
-
控制台日志:
2023-08-11 17:54:20.805 DEBUG 11084 --- [ XNIO-1 task-1] c.j.c.m.l.m.L.selectPage_mpCount : ==> Preparing: SELECT COUNT(*) FROM live_info WHERE view_time = ?
2023-08-11 17:54:20.806 DEBUG 11084 --- [ XNIO-1 task-1] c.j.c.m.l.m.L.selectPage_mpCount : ==> Parameters: 0(Long)
2023-08-11 17:54:20.820 DEBUG 11084 --- [ XNIO-1 task-1] c.j.c.m.l.m.L.selectPage_mpCount : <== Total: 1
情况二: 使用Long类型
- 接口返回数据:
- 控制台日志:
2023-08-11 17:51:33.283 DEBUG 9280 --- [ XNIO-1 task-1] c.j.c.m.l.m.L.selectPage_mpCount : ==> Preparing: SELECT COUNT(*) FROM live_info
2023-08-11 17:51:33.284 DEBUG 9280 --- [ XNIO-1 task-1] c.j.c.m.l.m.L.selectPage_mpCount : ==> Parameters:
2023-08-11 17:51:33.299 DEBUG 9280 --- [ XNIO-1 task-1] c.j.c.m.l.m.L.selectPage_mpCount : <== Total: 1
2023-08-11 17:51:33.301 DEBUG 9280 --- [ XNIO-1 task-1] c.j.c.m.l.m.LiveInfoMapper.selectPage : ==> Preparing: SELECT * FROM live_info LIMIT ?
2023-08-11 17:51:33.302 DEBUG 9280 --- [ XNIO-1 task-1] c.j.c.m.l.m.LiveInfoMapper.selectPage : ==> Parameters: 20(Long)
2023-08-11 17:51:33.321 DEBUG 9280 --- [ XNIO-1 task-1] c.j.c.m.l.m.LiveInfoMapper.selectPage : <== Total: 3