运行结果如下:
数据库数据如下 应该查询出11条数据,从上图看输出的sql动态sql语句,if条件没执行
代码如下:
测试类
@Test
public void testStorageCount() {
Map storageMap = new HashMap<>();
storageMap.put("status", 0);
int count = wmsWarehouseService.findCountStorageNum(storageMap);
System.out.println("数量" + count);
}
service 实现类
public int findCountStorageNum(Map params) {
return dao.selectCountStorageNum(params);
}
dao 和mapper
int selectCountStorageNum(Map params);
SELECT count(*) FROM wms_warehouse WHERE del_flag = 0
AND subordinate = #{subordinate}
AND status = #{status}
后来发现是传参数的问题:
这不应该传入0,应该把0加上引号改为字符串。改后执行测试类,效果如下:
OK
总结:mybatis传入参数,如果是0或1时要加上引号,mybatis会默认数值0为false,1为true。
本文讲述了在使用MyBatis时遇到的一个问题,即当查询参数为0或1时,由于MyBatis会将0视为false,1视为true,导致查询结果不正确。通过测试类和代码示例展示了问题所在,最终发现解决方案是在传入参数时将0和1用引号包围,以确保它们被当作字符串处理,从而得到预期的查询结果。
486

被折叠的 条评论
为什么被折叠?



