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;
    }

原文地址:https://www.cnblogs.com/phdeblog/p/12155768.html

时间: 2024-10-12 19:41:06

mybatis查询结果为空时的返回值问题的相关文章

mybatis中查询结果为空时不同返回类型对应返回值

今天在别人的代码基础上实现新需求,看到对于mybatis查询结果的判断不是很正确,如果查询结果为空就会异常,不知道大家有没有这样的疑惑:mybatis中resultType有多种返回类型,对于每种不同类型,查询结果为空时dao接口的返回值是一样的吗?接下来我就总结一下常见的几种情况. 第一种:resultType为基本类型,如string(在此暂且把string归纳为基本类型) 如果select的结果为空,则dao接口返回结果为null 第二种,resultType为基本类型,如int 后台报异

Ajax详解及使用Ajax时的返回值类型有哪些?

Ajax详解 Ajax = 异步 JavaScript 和 XML. Ajax 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新. 传统的网页(不使用 Ajax)如果需要更新内容,必需重载整个网页面. (注:图片来自网络) 如何使用Ajax技术 首先,需要获取XMLHttpRequest对象: var xhr; xhr = new XMLHttpRequest(); XMLH

Mybatis查询Mysql datetime类型时,相差8小时 解决方案

查出来的数据跟数据库里的数据相差了8个小时,这是为什么呢? 这是因为Mysql 使用系统默认时区,东八区. 而Tomcat java使用UTC时区进行处理业务逻辑. 时区的不同,从而导致Mysql数据库中datetime类型的值查询后转到Java Bean,值多了8个小时. 解决方法 在url后面添加 serverTimezone=Asia/Shanghai : jdbc.url=jdbc:mysql://127.0.0.1:3306/caipiao?useUnicode=true&charac

Mybatis调用Oracle中的函数有返回值

本身这个项目后台是用SSM框架,试了网上好多种有返回值的方法返回都是空; 下面是我调用方法: 这是我的函数 我在Mybatis的写法是: SELECT DEAL_EBOND_ICODE_DATA(#{iCode,jdbcType=VARCHAR}) AS A from dual 在DAO层 这种写法可以直接获取返回值,而且和其他一般的方法没什么区别! 原文地址:https://www.cnblogs.com/zhangqb/p/11137409.html

Java异常时的返回值

先来看一个小程序: public class JavaException {          public static void main(String[] args)          {                    System.out.println(test());          }          public static int test()          {                    int i=0;                    tr

jquery的ajax方法在无返回值时的返回值类型设定

2013-12-07 19:15:29|  分类: Web前端 |  标签:html  |举报|字号 订阅 $.ajax({ type: "post", url: "index.php", data: "id="+uid, dataType:"json", success : function(){ alert(1); }, error: function(){ alert(0); } }); 在jquery的ajax方法中,

查询框实现无点击事件时默认颜色,点击时清空查询空,失去焦点且查询匡为空时还原默认状态

<input id="search" type="text" value="输入类别.编号.名称.主办.分类搜索"> $("#search").focus(function(){ $(this).css("color","black");//点击后黑色 $(this).addClass("focus"); if($(this).val() ==this.d

mybatis insert、update 、delete默认返回值解释与如何设置返回表主键

在使用mybatis做持久层时,insert.update.delete,sql语句默认是不返回被操作记录主键的,而是返回被操作记录条数: 那么如果想要得到被操作记录的主键,可以通过下面的配置方式获取. 针对Sequence主键而言,在执行insert sql前必须指定一个主键值给要插入的记录,如Oracle.DB2,可以采用如下配置方式: <insert id="save" parameterType="user"> <selectKey res

解决OneThink中模型中字段参数为函数时无返回值的问题

创建模型 针对OT,创建一个模板,就插入**_model表一条记录,当此时,并并不创建模型的附表. 模型中创建字段 func_type字段如下 指定字段的参数为函数,函数get_func_type定义如下 /** *获取函数类型 * @param intger $type 类型 * @param array $all 函数类型 * @author dqs <[email protected]> */ function get_func_type(){ $map=array('status'=&