如果一个查询条件比如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);