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返回值设置

spring boot加mybatis使用Map返回时,当值为空时属性也会没有(转)

解决用 VB 中用 ADO 访问 数据库时 SQL 查询处理 Null 值的问题( 使用 iff(isNull(字段), 为空时的值,不为空时的值) 来处理)

最后一个值为空时的ByteBuffer翻转[重复]

SpringBoot MyBatis yml配置,打印sql语句,Mybatis字段值为空时该字段不返回。

SpringBoot MyBatis yml配置,打印sql语句,Mybatis字段值为空时该字段不返回。