mybatis 查询之神坑

先看一个示例:

数据表数据:

mybatis类和查询语句:

1. 当UserInfoMap中所有字段(包含association)都为NULL的话,getUserInfo的返回结果是个null,即使查询的记录存在!运行结果如下:

2019-06-26 10:50:00.800 DEBUG 95032 --- [           main] com.zcm.mybatis.dao.UserDao.getUserInfo  : ==>  Preparing: select name,phone,info_id from d_user where id = ? 
2019-06-26 10:50:00.854 DEBUG 95032 --- [           main] com.zcm.mybatis.dao.UserDao.getUserInfo  : ==> Parameters: 1(Integer)
2019-06-26 10:50:00.954 DEBUG 95032 --- [           main] c.z.m.d.m.InfoMapper.selectByPrimaryKey  : ====>  Preparing: select id, card_id, birth, weight, height from d_info where id = ? 
2019-06-26 10:50:00.955 DEBUG 95032 --- [           main] c.z.m.d.m.InfoMapper.selectByPrimaryKey  : ====> Parameters: 0(Integer)
2019-06-26 10:50:00.956 DEBUG 95032 --- [           main] c.z.m.d.m.InfoMapper.selectByPrimaryKey  : <====      Total: 0
2019-06-26 10:50:00.957 DEBUG 95032 --- [           main] com.zcm.mybatis.dao.UserDao.getUserInfo  : <==      Total: 1
null

2. 当UserInfoMap中有字段不为NULL的时候,getUserInfo返回的结果才不为null(前提查询的记录存在),如d_user表id=1中,为phone添加值"x",如下图:

这时再运行测试程序,结果如下:

2019-06-26 11:01:20.794 DEBUG 95861 --- [           main] com.zcm.mybatis.dao.UserDao.getUserInfo  : ==>  Preparing: select name,phone,info_id from d_user where id = ? 
2019-06-26 11:01:20.856 DEBUG 95861 --- [           main] com.zcm.mybatis.dao.UserDao.getUserInfo  : ==> Parameters: 1(Integer)
2019-06-26 11:01:20.965 DEBUG 95861 --- [           main] c.z.m.d.m.InfoMapper.selectByPrimaryKey  : ====>  Preparing: select id, card_id, birth, weight, height from d_info where id = ? 
2019-06-26 11:01:20.966 DEBUG 95861 --- [           main] c.z.m.d.m.InfoMapper.selectByPrimaryKey  : ====> Parameters: 0(Integer)
2019-06-26 11:01:20.967 DEBUG 95861 --- [           main] c.z.m.d.m.InfoMapper.selectByPrimaryKey  : <====      Total: 0
2019-06-26 11:01:20.968 DEBUG 95861 --- [           main] com.zcm.mybatis.dao.UserDao.getUserInfo  : <==      Total: 1
{"phone":"x"}

所以综合本测试案例,得出的最终结果是:

1. 记录存在时,不一定返回的对象一定不为null, 还要看查询的字段是否全部为NULL,或者说是否有不为NULL的字段

2. 这个测试结果跟是否有关联查询无关!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值