先贴出配置文件
<select id="queryUserGroupByName" resultType="UserGroupModel">
select * from user_group where roleName='user' and groupName=#{groupName}
</select>
对应的mapper
List<UserGroupModel>queryUserGroupByName(String groupName);
在写逻辑的时候发现,如果数据为空时,返回值并不是null
@ResponseBody
@RequestMapping("/addGroup")
public WebResultDto insertUserGroup(String groupName,String stoArea){
WebResultDto webResultDto = null;
if(userInfoService.queryUserGroupByName(groupName) != null) {
//已有重复用户名
System.out.println(userInfoService.queryUserGroupByName(groupName));
webResultDto = new WebResultDto("", "N", "此用户名已被注册!");
}else {
userInfoService.insertUserGroup(groupName, stoArea);
webResultDto = new WebResultDto("","Y","");
}
return webResultDto;
}
例如上述代码 userInfoService.queryUserGroupByName(groupName)就不可能为null。
网上查了一下,在mybatis中
如果返回值是Java集合类型,如List、Map,会先初始化(new一个集合对象),再把结果添加进去。
如果返回值是普通对象,查询不到时,返回值是null。
解决方案:service层稍做处理
@Override
public List<UserGroupModel> queryUserGroupByName(String groupName) {
// TODO Auto-generated method stub
List<UserGroupModel> res = dao.queryUserGroupByName(groupName);
if(res.size() == 0) {
return null;
}
return res;
}