Mybatis传参数 0 不进if判断条件

Mybatis传参数 0 不进if判断条件

项目场景:

项目场景:在一次项目开发过程中,从前端传过来Integer 0 的一个参数,但是进入Mybatis if 条件判断的时候发现一直进不去判断条件

问题描述:

具体代码的展示 后端接收参数
@GetMapping("/pageAll" )
	public R getArchivesBorrowRecordPageAll(Page page, ArchivesBorrowRecord archivesBorrowRecord) {
    
    
		return R.ok(archivesBorrowRecordService.pageAll(page, archivesBorrowRecord));
	}

实体类

private Integer backFlag;
Mybatis部分
	<if test=" query.backFlag !=null and query.backFlag != ''">
				and a.BACK_FLAG =#{
    
    query.backFlag}
	</if>

原因分析:

经过测试发现,Mybatis 在判断整数0的时候会把默认为 ’ ’ ,所以判断 !=’ '的条件为false 不会进去判断条件


解决方案:

第一种解决方案,判断条件只需要判断不为null
	<if test=" query.backFlag !=null">
				and a.BACK_FLAG =#{
    
    query.backFlag}
	</if>

第二种解决方案,判断条件判断==0.0

	<if test=" (query.backFlag !=null and query.backFlag != '' ) or query.backFlag == 0.0">
				and a.BACK_FLAG =#{
    
    query.backFlag}
	</if>

猜你喜欢

转载自blog.csdn.net/Sea_and_sea/article/details/108314855