mybatis查询数据赋值到model里面为空的解决
目录
- 查询数据赋值到model里为空
- 查询无数据的时候问题
查询数据赋值到model里为空
因为数据多所以在查询中使用分页,但是发现直接执行sql语句是可以获取到数据,而list里面却是空的
<select id="list" resultType="DaliyDO"> select a1.* from ( select id ,rownum from dual <where> <if test="id != null and id != ''"> and id = #{id} </if> </where> <choose> <otherwise> order by id desc </otherwise> </choose> ) a1 <if test="offset != null and limit != null"> where rownum between #{offset} and #{offset}+#{limit} </if> </select>
原因是 resultType属性与model不对应。
我们使用分页会在查询值加入一个rownum的值,这个值在我们建立model的时候是没有的,所以只要在model里面加上rownum这个属性就可以。
当然你也可以使用别的分页方法
查询无数据的时候问题
1.如果返回值是List、Map这种集合类,会先执行new语句,再赋值。所以判断是否有数据时,只能用size==0来判断。
2.如果是普通的对象,不会new,所以可以使用是否为null来判断是否有数据。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
详解Mybatis是如何把数据库数据封装到对象中的
一.前言 接到一个问题,数据库为Null的数据,传递到前端显示为0.之前有了解过,持久层框架(mybatis)在把数据库数据封装到对象中,是利用对象的Setter方法,这个大家也都知道,因此我就在Setter方法尝试,结果并不完全是这样.下面我用例子演示. 二.准备阶段 1.数据表 2.表对应的实体类 @Data @ApiModel("用户账号") public class User { @ApiModelProperty(value = "用户id") Integ
-
详解MyBatis直接执行SQL查询及数据批量插入
一.直接执行SQL查询: 1.mappers文件节选 <resultMap id="AcModelResultMap" type="com.izumi.InstanceModel"> <result column="instanceid" property="instanceID" jdbcType="VARCHAR" /> <result column="insta
-
myBatis实现三级嵌套复杂对象的赋值问题
平常我们工作中基本最多两级嵌套,但是有时候难免会遇到三级嵌套的业务场景,笔者最近就碰到了,使用一般的嵌套发现赋值为空,这可难倒了菜逼的我,后来在stackoverflow的帮助下终于搜到了解决办法,完美解决了问题 ,总结一下,方便有需要的同学,下面直接上栗子: 首先上实体类:三级嵌套如下 (电站 -----> 电桩 ---->电枪) 电站实体类 (实体为JPA写法,不影响mybatis的使用) package com.weima.cecapp.entities; import lombok.D
-
mybatis查询字段为null设置为0的操作
背景 使用mybatis查询(mysql)时,会使用多个double字段做相加,但是呢,其中几个字段有可能是null,会抛空指针. 解决方法 自动生成的mybatis mapper文件长这样 <sql id="Base_Column_List"> ID, PREPAYMENT_FEE </sql> 修改它 <sql id="Base_Column_List"> ID, ifnull(PREPAYMENT_FEE,0) as PRE
-
mybatis查询数据赋值到model里面为空的解决
目录 查询数据赋值到model里为空 查询无数据的时候问题 查询数据赋值到model里为空 因为数据多所以在查询中使用分页,但是发现直接执行sql语句是可以获取到数据,而list里面却是空的 <select id="list" resultType="DaliyDO"> select a1.* from ( select id ,rownum from dua
-
MyBatis查询数据,赋值给List集合时,数据缺少的问题及解决
目录 MyBatis查询数据赋值给List集合数据缺少 解决办法 Mybatis查询时数据丢失的问题 经过排查得出结论 解决办法 MyBatis查询数据赋值给List集合数据缺少 今天在使用MyBatis查询数据时,发现查出来的数据和List集合的大小不一致,如下图所示,Total为3,但是list集合size为2. List<ArticleCommentToShow> commentsByArticleId = articleCommentService.getCommentsByArt
-
关于MyBatis 查询数据时属性中多对一的问题(多条数据对应一条数据)
数据准备 数据表 CREATE TABLE `teacher`( id INT(10) NOT NULL, `name` VARCHAR(30) DEFAULT NULL, PRIMARY KEY (id) ) ENGINE=INNODB DEFAULT CHARSET=utf8; INSERT INTO `teacher`(id,`name`) VALUES(1,'大师'); CREATE TABLE `student`( id INT(10) NOT NULL, `name` VARCHAR
-
MyBatis查询数据返回null的解决
MyBatis查询返回null 可能原因 SQL语句查询条件有问题 数据库中没数据 返回字段与Entity的属性不对应 解决方案 针对 SQL语句查询条件有问题.数据库中没数据 建议将SQL手动拼接之后去数据库中运行一下看看结果. 针对 返回字段与Entity的属性不对应,检查entity属性是否是因为驼峰命名导致字段不对应返回了null: 可以去配置一下开启驼峰,这里不做详解:或者用resultMap作为返回结果,如图 到此这篇关于MyBatis查询数据返回null的解决的文章就介绍到这了,更
-
Mybatis 查询语句条件为枚举类型时报错的解决
目录 Mybatis查询语句条件为枚举类型报错 通常这个错误是 Mybatis处理枚举类型 1.枚举 2.包含枚举的实体类 3.书写枚举处理器 4.配置枚举处理器 5.dao层 6.mapper文件 7.测试 Mybatis查询语句条件为枚举类型报错 通常我们对于数据库中一些枚举字段使用tinyInt类型,而java对象对应的字段很多时候会为了方便定义成short或者int.但这样显然不美观方便,让后面维护的人抠破脑袋找你的常量定义在哪儿,要是没有注释简直让人崩溃.时间久后,没有人知道这里面的值
-
vue3接口数据赋值对象,渲染报错问题及解决
目录 vue3接口数据赋值对象,渲染报错 vue在渲染数据的时候的一些报错问题 问题描述 解决方法 vue3接口数据赋值对象,渲染报错 const app = require('express')() // 跨域设置 app.all("*", function (req, res, next) { res.setHeader("Access-Control-Allow-Credentials", true); res.setHeader("Access-C
-
mybatis查询到了数据,但是实体类个别字段为null问题
目录 mybatis查询数据,实体类个别字段为null 最终的最终发现 查询的数据中有几个列为null 封装不上 sql语句查询存在的列显示不存在 问题 数据 小结一下 mybatis查询数据,实体类个别字段为null 今天在做一个简单的查询操作时遇到的坑,折腾了好久好久,有必要记录一下本菜鸡的心理活动 debug单步执行发现查询之后有几个字段没有映射成功,依然为null 而控制台打印的sql语句确实拿到了 想着是不是实体类里面的字段命名不一致,瞪大狗眼看了一万遍也没发现有啥不一样. 又试着在s
-
Mybatis Integer类型参数值为0时得到为空的解决方法
今日遇到的问题: 查询版本信息时,由于version是Integer类型,所以当前台选择版本为0时,变成了查询了所有的版本信息. sql片段: </if> <if test="version != null and version != '' "> AND a.version = #{version} </if> 原因: MyBatis因自身原因默认了 Integer类型数据值等于0时 为 ""(空字符串) 解决办法: 1. 某些
-
Mybatis应用mysql存储过程查询数据实例
1.创建mysql存储过程,这是个复杂查询加上了判断,比较复杂 CREATE PROCEDURE searchAllList ( IN tradingAreaId VARCHAR (50), IN categoryName VARCHAR (100), IN intelligenceSort TINYINT UNSIGNED, IN priceBegin DOUBLE, IN priceEnd DOUBLE, IN commodityName VARCHAR (200), IN flag TIN
-
mybatis查询语句揭秘之封装数据
一.前言 继上一篇mybatis查询语句的背后,这一篇主要围绕着mybatis查询的后期操作,即跟数据库交互的时候.由于本人也是一边学习源码一边记录,内容难免有错误或不足之处,还望诸位指正,本文只可当参考作用.谨记! 二.分析 继上一篇博文的查询例子,mybatis在最后的查询最终会走SimpleExecutor类的doQuery方法, @Override public <E> List<E> doQuery(MappedStatement ms, Object parameter
随机推荐
- ubuntu编译nodejs所需的软件并安装
- 使用ExtJS技术实现的拖动树结点
- Swing常用组件之多行文本区JTextArea
- bootstrap组件之按钮式下拉菜单小结
- javascript实现禁止复制网页内容
- Ajax分页插件Pagination从前台jQuery到后端java总结
- C#实现Datatable排序的方法
- 对淘宝URL中ID提取的PHP代码
- my.ini优化mysql数据库性能的十个参数(推荐)
- mysql中如何去除小数点后面多余的0
- android开发之蜂鸣提示音和震动提示的实现原理与参考代码
- Javascript异步表单提交,图片上传,兼容异步模拟ajax技术
- javascript 兼容各个浏览器的事件
- js 不用重复检测浏览器提高效率
- transport.js和jquery冲突问题的解决方法
- js 深拷贝函数
- jQuery CSS3相结合实现时钟插件
- jquery Tab 选项卡通用函数
- 两级联动select刷新后其值保持不变的实现方法
- ftp类(example.php)