mybatis查询结果为空时的返回值问题
Posted 小楼夜听雨QAQ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis查询结果为空时的返回值问题相关的知识,希望对你有一定的参考价值。
先贴出配置文件
<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;
}
以上是关于mybatis查询结果为空时的返回值问题的主要内容,如果未能解决你的问题,请参考以下文章
spring boot加mybatis使用Map返回时,当值为空时属性也会没有(转)
解决用 VB 中用 ADO 访问 数据库时 SQL 查询处理 Null 值的问题( 使用 iff(isNull(字段), 为空时的值,不为空时的值) 来处理)