mybatis中查询结果为空时不同返回类型对应返回值问题
今天在别人的代码基础上实现新需求,看到对于mybatis查询结果的判断不是很正确,如果查询结果为空就会异常,不知道大家有没有这样的疑惑:mybatis中resultType有多种返回类型,对于每种不同类型,查询结果为空时dao接口的返回值是一样的吗?接下来我就总结一下常见的几种情况。
第一种:resultType为基本类型,如string(在此暂且把string归纳为基本类型)
如果select的结果为空,则dao接口返回结果为null
第二种,resultType为基本类型,如int
后台报异常:
org.apache.ibatis.binding.BindingException: Mapper method 'com.fkit.dao.xxDao.getUserById attempted to return null from a method with a primitive return type (int).
解释:查询结果为null,试图返回null但是方法定义的返回值是int,null转为int时报错
解决办法:修改select的返回值为String
第三种 resultType为类为map ,如map、hashmap
dao层接口返回值为null
第四种 resultType 为list ,如list
dao层接口返回值为[],即空集合。
注意:此时判断查询是否为空就不能用null做判断
第五种 resultType 为类 ,如com.fkit.pojo.User
dao层接口返回值null
总结
以上所述是小编给大家介绍的mybatis中查询结果为空时不同返回类型对应返回值问题,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!
相关推荐
-
Java的MyBatis框架中实现多表连接查询和查询结果分页
实现多表联合查询 还是在david.mybatis.model包下面新建一个Website类,用来持久化数据之用,重写下相应toString()方法,方便测试程序之用. package david.mybatis.model; import java.text.SimpleDateFormat; import java.util.Date; public class Website { private int id; private String name; private int visito
-
Mybatis Update操作返回值问题
后端的数据持久化使用的是 Mybatis ,在做高并发下账户增减余额的时候,打算使用乐观锁来解决这个问题.在获取update操作的返回值时遇到了一个问题,似乎 Mybatis 进行 update 操作得到的 int 返回值并不是影响的行数.这下就尴尬了. 一般而言,我们知道当我们使用 Mybatis 在 mapper 接口中定义 insert delete 等操作,定义一个 int 类型的返回值,通过该值是否为 0 来判断数据库中受影响的行数进而判断操作是否成功. 到底 update 返回值代表
-
mybatis interceptor 处理查询参数及查询结果的实例代码
下面给大家介绍mybatis interceptor 处理查询参数及查询结果,具体代码如下所示: /** * Created by windwant on 2017/1/12. */ @Intercepts({ @Signature(type=Executor.class,method="update",args={MappedStatement.class,Object.class}), @Signature(type=Executor.class,method="quer
-
mybatis中查询结果为空时不同返回类型对应返回值问题
今天在别人的代码基础上实现新需求,看到对于mybatis查询结果的判断不是很正确,如果查询结果为空就会异常,不知道大家有没有这样的疑惑:mybatis中resultType有多种返回类型,对于每种不同类型,查询结果为空时dao接口的返回值是一样的吗?接下来我就总结一下常见的几种情况. 第一种:resultType为基本类型,如string(在此暂且把string归纳为基本类型) 如果select的结果为空,则dao接口返回结果为null 第二种,resultType为基本类型,如int 后台报异
-
MySQL中查询字段为空或者为null的方法
目录 MySQL查询字段为空或者为null 判断为null 判断为空或空格 MySQL查询字段为空(null)时设置默认值 总结 MySQL查询字段为空或者为null 判断为null select * from table where column is null; 不为null: select * from table where column is not null; 判断为空或空格 select * from table where column =''; 注:不管是空还是其中有空格都
-
mysql 中存在null和空时创建唯一索引的方法
好多情况下数据库默认值都有null,但是经过程序处理很多时候会出现,数据库值为空而不是null的情况.此时创建唯一索引时要注意了,此时数据库会把空作为多个重复值,而创建索引失败,示例如下: 步骤1: mysql> select phone ,count(1) from User group by phone; +-----------------+----------+ | phone | count(1) | +-----------------+----------+ | NULL | 70
-
解决mybatis查询结果为null时,值被默认值替换问题
目录 查询结果为null时,值被默认值替换 问题原因 解决办法 mybatis查询结果处理 处理核心流程 返回类型处理ResultHandler 字段类型处理TypeHandler 查询结果为null时,值被默认值替换 问题:pojo种设置了一个默认值,当此字段查询结果为空时,字段值变成了默认值0,经过排查发现,mybatis在赋值时并没有调用set方法赋值,而是直接调用get方法,取了默认值 问题原因 原因是因为mybatis在给map赋值时,如果返回值不是基本数据类型,且返回值为null,就
-
Mybatis模糊查询及自动映射实现详解
这篇文章主要介绍了Mybatis模糊查询及自动映射实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Mybatis的模糊查询 1. 参数中直接加入%% 1 2 3 4 5 6 7 8 9 param.setUsername("%CD%"); param.setPassword("%11%"); <select id="selectPersons" resultType="p
-
mybatis中映射文件(mapper)中的使用规则
目录 一.增删改 1.增加 2.删除 3.更新 二.传入参数处理 1.单个参数 2.多个参数 3.参数中有Collection(List.Set) 类型或者是数组 4.参数封装成数据模型 5.parameterType 配置 参数 三.查询 1.模糊查询 2.#{}与${}的区别 3.返回属性为resultType 4.返回属性为resultMap 一.增删改 1.增加 <!-- 添加用户--> <insert id="saveUser" parameterType=
-
MyBatis中OGNL的使用教程详解
前言 本文主要给大家讲如何在MyBatis中使用OGNL的相关内容,分享出来供大家参考学习,感兴趣的朋友们下面来一起看看详细的介绍: 如果我们搜索OGNL相关的内容,通常的结果都是和Struts有关的,你肯定搜不到和MyBatis有关的,虽然和Struts中的用法类似但是换种方式理解起来就有难度. MyBatis常用OGNL表达式 e1 or e2 e1 and e2 e1 == e2,e1 eq e2 e1 != e2,e1 neq e2 e1 lt e2:小于 e1 lte e2:小于等于,
-
Mybatis中返回Map的实现
在Mybatis中,我们通常会像下边这样用: 返回一个结果 User selectOne(User user); <select id="selectOne" parameterType="cn.lyn4ever.entity.User" resultType="cn.lyn4ever.entity.User"> select id,username,telphone from user where telphone=#{telpho
-
MyBatis中如何查询某个时间段内的数据
目录 如何查询某个时间段内的数据 Mybatis查询日期范围 将日期时间,转换为字符串 将字符串,转换为日期时间 如何查询某个时间段内的数据 1.当使用SQL语句查询某个时间段的数据时 我们很自然的会想到使用between…and..来操作,但是如果使用between...and... 这个方法来查询某个时间段的数据时是需要传入两个参数的,一个是起始时间,另一个是结束时间,且两个参数必须要同时存在才能使用between...and...,而我们希望的是只传入一个参数(起始时间或者结束时间)就能进
-
Mybatis中的resultType和resultMap查询操作实例详解
resultType和resultMap只能有一个成立,resultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用,resultMap解决复杂查询是的映射问题.比如:列名和对象属性名不一致时可以使用resultMap来配置:还有查询的对象中包含其他的对象等. MyBatisConfig.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configura
随机推荐
- Angularjs验证用户输入的字符串是否为日期时间
- Python编程中的文件操作攻略
- C语言程序设计50例(经典收藏)
- 利用DIR命令批量输出文件夹名或文件名的代码
- spring mvc 和ajax异步交互完整实例代码
- iOS应用中UICollectionViewCell定制Button
- .net搜索查询并实现分页实例
- 使用Chrome调试JavaScript的断点设置和调试技巧
- ASP.NET网站导航及导航控件如何使用
- Python编程之黑板上排列组合,你舍得解开吗
- js字符串转成JSON
- 解析优化MySQL插入方法的五个妙招
- 浅析js中substring和substr的方法
- Ubuntu下LAMP环境配置教程(linux)
- SQL Server中避免触发镜像SUSPEND的N种方法
- Android实现屏幕锁定源码详解
- CS 1.5 键盘基本操作快捷键
- Android 实现会旋转的饼状统计图实例代码
- java Iterator接口和LIstIterator接口分析
- Android adb logcat 命令查看日志详细介绍