【问题记录】MyBatis查询数据库返回多个不同类型参数的结果集的接收方式
其实是个非常简单的问题,但是这玩意儿弄得我很难受,又浪费了一个下午的时间,简直了……
问题大概是,我在查询数据库时,查询的结果有两个,一个是varchar格式的字段,一个int格式字段,例如:
select name,count(*) as num from student group by friend;
获取结果的时候,我将返回值类型设置为了HashMap,接受用的是List<HashMap<String,String>>,事实上这种方法能够接收到数据,而且遍历List时通过toString()方法也可以正常输出,例如:{name=A, num=20}
但是这么做的问题是,(例)当我尝试取出Map中的age字段时,就会报错,提示:
java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.String
告知我不能进行类型转换(long --> String)。遇到这个错误之后我浪费了很长一段时间来处理,最后才意识到可能是返回值类型不同造成的问题,我本以为int类型的返回值用Map<String,String>接收之后就可以被强转为String,但是显然不是这样,因此要么换一种接收方式(实体类),要么就转换类型。
这样的话问题就简单多了,在查询的时候加一个类型转换,将参数中的int转换为String(char)就好了(实体类太麻烦了)。
mysql中类型转换的函数有两种:
1)CAST(value as type) 就是CAST(xxx AS 类型)
2)CONVERT(value, type) 就是CONVERT(xxx,类型)
如下:
select name,convert(count(*),char) as num from student group by friend;
这样用Map<String,String>来接就没问题了,也能正常的取出值了。
【问题记录】MyBatis查询数据库返回多个不同类型参数的结果集的接收方式的更多相关文章
- spring boot整合mybatis查询数据库返回Map字段为空不返回解决
1.出现问题原因原因1:mybatis的配置即mapper返回映射配置. 原因2:jackson的配置即@ResponseBody序列化配置. 2.解决方式步骤1:解决原因1 mybatis: con ...
- Java MyBatis 插入数据库返回主键--insertSelective这样就不用每次到数据库里面查询了
insertSelective---Java MyBatis 插入数据库返回主键--insertSelective这样就不用每次到数据库里面查询了 https://www.cnblogs.com/xi ...
- Java MyBatis 插入数据库返回主键
最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记. 类似下面这段代码一样获取插入后的主键 User user = new User ...
- python查询数据库返回数据
python查询数据库返回数据主要运用到flask框架,pymysql 和 json‘插件’ #!/usr/bin/python # -*- coding: UTF-8 -*- import pymy ...
- Django 1.8.11 查询数据库返回JSON格式数据
Django 1.8.11 查询数据库返回JSON格式数据 和前端交互全部使用JSON,如何将数据库查询结果转换成JSON格式 环境 Win10 Python2.7 Django 1.8.11 返回多 ...
- mybatis学习----------查询数据库返回结果为空
用mybits查询数据库时,如果参数已传入sql,sql也已经执行了,但是返回结果为空,首先保证数据库中有对应数据,如果有对应数据仍返回null,是数据库配置文件有问题.解决方案如下:1.mapper ...
- 关于mybatis插入数据库返回主键id
关于Sequence主键的数据库来说,如: <insert id="add" parameterType="vo.Category"> <se ...
- MyBatis 插入数据库返回主键
最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记. 类似下面这段代码一样获取插入后的主键 User user = new User ...
- JVM加载类冲突,导致Mybatis查数据库返回NULL的一个小问题
今天碰到个bug,虽然小,但是有点意思 背景是SpringMVC + Mybatis的一个项目,mapper文件里写了一条sql 大概相当于 select a from tableA where b ...
随机推荐
- maven配置国内阿里云镜像
<mirrors> <mirror> <id>alimaven</id> <mirrorOf>central</mirrorOf> ...
- 信步漫谈之JDK—源码编译
一.环境 Linux 系统:CentOS_6.5_x86_64 JDK 安装包:jdk-7u80-linux-x64.rpm OpenJDK 源码包:OpenJDK7 下载路径:http://down ...
- jdbc之工具类DBUtil的使用
首先回顾一下jdbc的使用方法: 1. 注册驱动 2. 建立连接 3. 建立statement 4. 定义sql语句 5. 执行sql语句,如果执行的是查询需遍历结果集 6. 关闭连接 其中建立连接和 ...
- QSettings 类
一 .QSettings介绍: 用户通常希望应用程序记住其设置.在windows中,这些设置保存在注册表中,ios在属性文件列表中,而unix,在缺乏标准的情况下,其存储在ini文本中.QSettin ...
- Java8增强的包装类
为了解决8中基本数据类型的变量不能当成Object 类型变量使用的问题,Java提供了包装类的概念,为8种基本数据类型分别定义了相应的引用类型,并称为基本数据类型的包装类. JDK 1.5提供了自动装 ...
- 58 字体反爬攻略 python3
1.下载安装包 pip install fontTools 2.下载查看工具FontCreator 百度后一路傻瓜式安装即可 3.反爬虫机制 网页上看见的 后台源代码里面的 从上面可以看出,生这个字变 ...
- python操作pymysql数据库
首先需要导入通过import pymysql导入数据库模块 已经创建好一个数据库test,数据库中有一个空表t,只有两个字段id int(5),name varchar(20) import pymy ...
- Maven pom.xml文件详解
Maven pom.xml文件详解 一.简介 POM全称是Project Object Model,即项目对象模型. pom.xml是maven的项目描述文件,它类似与antx的project.xml ...
- 【题解】Luogu P1471 方差
原题传送门 简单进行推导之后,就能发现很妙的结论 用线段树维护区间和,区间平方和就珂以算出结果 #include <bits/stdc++.h> #define db double #de ...
- Linux性能优化-理解平均负载
1 平均负载含义 当系统变慢的时候,我们一般使用 top 或 uptime 命令来查看系统平均负载情况. 正确定义:单位时间内,系统中处于可运行状态和不可中断状态的平均进程数.错误定义:单位时间内的c ...