使用 tk.mybatis 发现的问题
来源:5-11 wx.loading与页面跳转

蓝色西西
2019-05-06
如果一个查询条件比如username=null, 那么查询就是真,是有结果的,真是匪夷所思。
但是在mysql客户端中,select * from user where user_name=null 是没有结果的,是假。
比如下面的两种情况都有,其他情况没有测试:
@Override
//Propagation.SUPPORTS 有事务就用,没有不用
@Transactional(propagation= Propagation.SUPPORTS)
public boolean queryUsernameIsExist(String username) {
UserInfo userInfo = new UserInfo();
userInfo.setUserName(username);
UserInfo result=userInfoMapper.selectOne(userInfo);
//查询到为空返回false,不为空返回true
return result == null ? false:true;
}
//根据用户名,查询用户
@Transactional(propagation = Propagation.SUPPORTS)
@Override
public UserInfo queryUserForLogin(String username) {
Example userExample = new Example(UserInfo.class);
Criteria criteria = userExample.createCriteria();
criteria.andEqualTo("userName", username);
//criteria.andEqualTo("password", password);
UserInfo result = userInfoMapper.selectOneByExample(userExample);
return result;
}
当user_name=null时,下面的情况测试结果都为真,怎么解决?
String user_name=null;
UserInfo userInfo = userInfoService.queryUserForLogin(user_name);
Boolean userInfo = userInfoService.queryUsernameIsExist(user_name);
System.out.println(userInfo);
2回答
-
风间影月
2019-05-06
1. 正常业务来讲,遇到null是肯定不能执行下去的,一定要处理掉,不能操作数据库,这是基本业务
2. tk是开源框架,以目前情况来说做好判断即可,其他的是他自身框架的设计问题,也许后续新版本会迭代掉的,这个完全不影响学习以及开发
3. 写sql语句的时候判断为空用 username is null
4. 建议进去官方群和大家一起交流00 -
风间影月
2019-05-06
是null,直接return,提示用户输入错误
012019-05-06
相似问题