1因为使用
selectByExample 引发的事故 具体问题: 我在使用 selectByExample查询时 明确的写了 哪些条件,可是当某个条件的参数为null时,该条件却没有执行 问题重现:
Example example = new Example(NinjaUser.class);
Example.Criteria criteria = example.createCriteria();
criteria.andEqualTo("userId", user.getUserId());
criteria.andEqualTo("userName", user.getUserName());
return ninjaUserMapper.selectByExample(example);
如上面的代码 我们写了两个条件 userId userName
如果连个条件都传值的话 正常是这样的sql:
但是!! 如果某个参数为null 比如我们把user的 userId参数设置为null
执行的sql为:
userId的 sql条件被吃了
不应该是 user_id = null 吗?
因为这个问题导致了生产勿删了很多数据,以此记录
因为这个问题导致了生产勿删了很多数据,以此记录
因为这个问题导致了生产勿删了很多数据,以此记录
这个应该是设计如此,不能怪别人,都怪自己太菜了…好好学习
解决方案:
if (null == user.getUserId() || null == user.getUserName()) {
return null;
}
Example example = new Example(NinjaUser.class);
Example.Criteria criteria = example.createCriteria();
criteria.andEqualTo("userId", user.getUserId());
criteria.andEqualTo("userName", user.getUserName());
return ninjaUserMapper.selectByExample(example);
1如果你的条件是必须的,在查询前判断
2自己写sql 不使用 通用mapper
© 版权声明
本站所有资源来自于网络,仅供学习与参考,请勿用于商业用途,否则产生的一切后果将由您(转载者)自己承担!
如有侵犯您的版权,请及时联系3500663466#qq.com(#换@),我们将第一时间删除本站数据。
如有侵犯您的版权,请及时联系3500663466#qq.com(#换@),我们将第一时间删除本站数据。
THE END
暂无评论内容