mybatis查询到了数据,但是实体类个别字段为null问题

目录
  • mybatis查询数据,实体类个别字段为null
    • 最终的最终发现
  • 查询的数据中有几个列为null 封装不上
    • sql语句查询存在的列显示不存在
    • 问题
    • 数据
    • 小结一下

mybatis查询数据,实体类个别字段为null

今天在做一个简单的查询操作时遇到的坑,折腾了好久好久,有必要记录一下本菜鸡的心理活动

debug单步执行发现查询之后有几个字段没有映射成功,依然为null

而控制台打印的sql语句确实拿到了

想着是不是实体类里面的字段命名不一致,瞪大狗眼看了一万遍也没发现有啥不一样。

又试着在set方法里设断点,发现set方法执行了,但是传进来是空。。灵异了。。

最终的最终发现

mybatis的配置文件里自己整了那么一句。。。

查询的数据中有几个列为null 封装不上

sql语句查询存在的列显示不存在

环境:java web 项目 sql工具 navicat

问题

同事的代码查询出的数据总是有两个列的数据为null, 在排查封装的returnMap和实体类之后发现无误 ,后再Navicat 工具使用sql查询 发现根据列查询数据时 其中的几个列名为Unknown

(自己做的演示表)

数据

看着表查询(看似语句正确,其实他报错了 找不到name列)

然后Navicat 查看表的设计查询 name列看似一切正常

我将表转储为sql文件 打开发现 name的单引号换行了

然后在nativcat上点击name 往左移发现name没见了

在删除字段重建之后发现可以查询了

在sqlyog 上查看表一明确的发现前空格问题

查看表的设计结构也会发现name列没有显示

小结一下

因为在创建列名前添加了空格 navicat上是不会显示的所以误是正确的列名 但如果你是sqlyog会发现这些问题

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 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 获取无数据的字段不显示的问题

    mybatis 获取无数据的字段不显示 使用mybatis-plus获取数据时,当返回值为map类型,数据库字段的值为空时,不显示该字段,这样容易导致前台获取数据的时候报空指针异常 可以这样设置 mybatis: configuration: call-setters-on-nulls: true 重启项目即可! mybatis 查询数据部分字段返回null 问题描述: 1.在数据库中有数据,但是通过接口查询出来为null,同一张表有些字段可以查询出来,有些为null 对比了数据库表字段和实体类

  • Mybatis查不到数据查询返回Null问题

    mybatis突然查不到数据,查询返回的都是Null,但是 select count(*) from xxx查询数量,返回却是正常的. Preparing: SELECT id,a9004,a9005,a9015 FROM a90 where a9010 = ? ORDER BY id LIMIT 1 [DEBUG] org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(BaseJdbcLogger.java:139):http-bio-8080

  • Mybatis有查询结果但存不进实体类的解决方案

    问题描述 使用Mybatis查询得到实体类 表定义如下 成员ID 成员姓名 member_id member_name 对应的实体类如下 public class Member { private Integer memberId; private String memberName; // 省略getter和setter } 对应的Mapper.xml如下 <select id="selectMemberByMemberName" resultType="Member

  • mybatis查询到了数据,但是实体类个别字段为null问题

    目录 mybatis查询数据,实体类个别字段为null 最终的最终发现 查询的数据中有几个列为null 封装不上 sql语句查询存在的列显示不存在 问题 数据 小结一下 mybatis查询数据,实体类个别字段为null 今天在做一个简单的查询操作时遇到的坑,折腾了好久好久,有必要记录一下本菜鸡的心理活动 debug单步执行发现查询之后有几个字段没有映射成功,依然为null 而控制台打印的sql语句确实拿到了 想着是不是实体类里面的字段命名不一致,瞪大狗眼看了一万遍也没发现有啥不一样. 又试着在s

  • springboot+mybatis报错找不到实体类的问题

    目录 springboot+mybatis报错找不到实体类 找不到实体类的错误可能有很多,接下来列举几个地方 springboot+mybatis 找不到实体类问题 No qualifying bean of type‘com.wj.bfsh.mapper.SysUserMapper‘ available 问题出现在 springboot+mybatis报错找不到实体类 找不到实体类的错误可能有很多,接下来列举几个地方 启动类位置不对,启动类应该在你的service和dao 的上一层,因为Spr

  • Android JSON数据与实体类之间的相互转化(GSON的用法)

    这篇文章就是示范如何用GSON把JSON数据与实体类进行相互转化,需要用到gson-2.3.1.jar这个包.直接贴代码了: import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken

  • mybatis plus实体类中字段映射mysql中的json格式方式

    目录 mybatis plus实体类中字段映射mysql中的json格式 1.实体类中有个属性是其他对象 2.那么取出时怎么进行映射呢,有分为两种情况 mybatis-plus 实体 json 处理 本文总共三个步骤 mybatis plus实体类中字段映射mysql中的json格式 1.实体类中有个属性是其他对象 或者是List:在数据库中存储时使用的是mysql的json格式,此时可以用mybatis plus的一个注解 @TableField(typeHandler = JacksonTy

  • 详解mybatis-plus实体类中字段和数据库中字段名不对应解决办法

    在使用mybatis或者mybatis-plus时候,有些时候会出现数据库的字段名和实体类的字段名不一致的情况,如果运行那么这个字段就会无法进行自动映射而报错.这里就以我的数据库name字段名和这里的实体类的u_name字段名为例. 解决办法有以下三种 方法一: 将数据库中的字段和实体类中的字段名修改成一样的名字 方法二: 如果是自定以mapper.xml文件中手写的sql查询语句,可以给字段起一个别名例如这里就可以写成select name as u_name from- 方法三: 使用注解@

  • SSM Mapper文件查询出返回数据查不到个别字段的问题

    目录 SSM Mapper查询出返回数据查不到个别字段 原因 SSM查询不到数据库数据 终于找到原因 SSM Mapper查询出返回数据查不到个别字段 原因 开启了驼峰命名法则,Bean里的字段不识别_ 注释掉或者把实体类里的字段_去掉换位大写 SSM查询不到数据库数据 这两天搭了个ssm的环境,想先测试下,结果测试就出问题,同样的sql在navicate就能正常执行,在mapper就不行,查出来永远是null. 终于找到原因 我的数据库表的列名都带有下划线,需要在mybatis-config.

  • java反射机制给实体类相同字段自动赋值实例

    一.封装一个工具类 1.简易版 package net.aexit.construct.acceptance.websky.utils; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.HashMap; import java.util.Iterator; import java.util.Map; public class ClassReflection { /** * @par

  • Java8通过Function获取字段名的方法(获取实体类的字段名称)

    看似很鸡肋其实在某些特殊场景还是比较有用的. 比如你将实体类转Map或者拿到一个Map结果的时候,你是怎么获取某个map的key和value. 方法一: 声明 String key1="aaa"; key为 key1,value 为map.get(key1); Map<String,Object> map=new HashMap<>(); map.put("aaa",1); //获取map的key 和value //key 为key1 Str

  • Java反射机制,如何将一个实体类所有字段赋值为null

    目录 将一个实体类所有字段赋值为null 起因 第一种方法 第二种方法 将实体类中的null属性置为““或者空值 工具类 测试类 先创建需要的实体 将一个实体类所有字段赋值为null 起因 在我们想要使用一个实体类的时候,如果发现创建这个类的时候,给某一些字段设置了初始值(某些场景下的特殊需要),但我们这个时候又不需要这些初始化值的时候,我们就会想要把这些值全部清除掉,让其变为一个干净的类,我们可以手动一个一个去赋null值,我一开始就是这么做的,同事看到后告诉我,你可以尝试使用反射机制,自己封

  • Mybatis通过数据库表自动生成实体类和xml映射文件

    环境:maven+idea. 1. 需要的jar包 基本的spring和mybatis依赖包就不说了,在pom文件的build->plugins节点下需要添加(两个依赖包也可以直接添加到pom的依赖里面去,这里是为了直接通过maven的插件来生成.如果不是使用maven,自行百度下): <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-mave

随机推荐