基于mybatis查询结果映射不到对象的处理

目录
  • mybatis查询结果映射不到对象
    • 项目场景
    • 问题描述
    • 原因分析
    • 解决方案
  • mybatis结果映射遇到的问题
    • 错误如下
    • 解决方案

mybatis查询结果映射不到对象

项目场景

使用mybatis+SpringBoot 进行数据库的数据查询操作,一直拿不到返回结果。

问题描述

后端dao层(service层调mapper,方法的返回结果一直null)代码一直空指针,

APP 中接收数据代码:


 //分类名称
        Integer bloGCateGoryId = blog.getBlogCategoryId();//这里有数据  22
        BlogCategory category = blogCategoryMapper.getCategoryById(blogCategoryId);//这里返回结果就一直null
        blog.setBlogCategoryName(category.getCategoryName());//导致这里一调用方法就报空指针了。

原因分析

仔细检查了代码(debug),controller层+ service层没问题,那问题坑定再dao层。检查xml文件,但发现xml文件中查询方法的sql代码写的没问题:


 <select id="getCategoryById" parameterType="java.lang.Integer" resultType="com.hhh.blog.entity.BlogCategory">
        SELECT
            category_id,
            category_name,
            category_icon,
            category_rank,
            create_time,
            is_deleted
        FROM
            tb_blog_category
        WHERE
            category_id = #{blogCategoryId}
    </select>

这里理论上没啥问题,但特么的就是数据库的数据映射不到对象中(实体类都是按照数据库数据对应的,只多不少)。

解决方案


resultType=“com.hhh.blog.entity.BlogCategory”

返回结果改成使用映射:


<select id="getBlogCategoryPage" resultMap="getBlogCategoryPageMap">

  <resultMap id="getBlogCategoryPageMap" type="com.hhh.blog.entity.BlogCategory">
        <id column="category_id" jdbcType="INTEGER" property="categoryId" />
        <result column="category_name" jdbcType="VARCHAR" property="categoryName" />
        <result column="category_icon" jdbcType="VARCHAR" property="categoryIcon" />
        <result column="category_rank" jdbcType="INTEGER" property="categoryRank" />
        <result column="is_deleted" jdbcType="TINYINT" property="isDeleted" />
        <result column="create_time" jdbcType="DATE" property="createTime" />
    </resultMap>

开启驼峰式命名匹配也可能解决上述问题。没试过。建议自己搞起来

mybatis结果映射遇到的问题

错误如下

org.apache.ibatis.exceptions.PersistenceException:
### Error querying database. Cause: org.apache.ibatis.executor.ExecutorException: No constructor found in POJO.User matching [java.lang.Integer, java.lang.String, java.lang.String, java.lang.String, java.lang.String]
### The error may exist in Mapper/UserMapper
### The error may involve test.selectUserById
### The error occurred while handling results
### SQL: SELECT * FROM USER WHERE id=?
### Cause: org.apache.ibatis.executor.ExecutorException: No constructor found in POJO.User matching [java.lang.Integer, java.lang.String, java.lang.String, java.lang.String, java.lang.String]

解决方案

最后,将User构造器中int改为Integer即可、

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

--结束END--

本文标题: 基于mybatis查询结果映射不到对象的处理

本文链接: https://www.lsjlt.com/news/86.html (转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢

  • 基于mybatis查询结果映射不到对象的处理

    目录mybatis查询结果映射不到对象项目场景问题描述原因分析解决方案mybatis结果映射遇到的问题错误如下解决方案mybatis查询结果映射不到对象项目场景使用mybatis+springboot 进行数据库的数据查询操作,一直拿不到返回结果。问题描述后端
  • Mybatis关联查询结果集对象嵌套的具体使用

    在查询时经常出现一对多”的关系,所有会出现嵌套对象的情况,本文主要介绍了Mybatis关联查询结果集对象嵌套的具体使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • jdbc-处理查询结果集

    package com.cqust;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;//处
    阅读数:402 jdbc-处理查询结果集
  • mysql导出查询结果

    mysql -u 用户名 -p 密码 -D 数据库名 -e "select * from tbl_user i join tbl_role a on a.id = i.user_id where a.id = 52 limit 10" >
    阅读数:693 mysql 导出 查询
  • mysql如何统计查询结果

    本篇内容介绍了“mysql如何统计查询结果”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在mysql中,可以使
    阅读数:745 mysql
  • 关于MyBatis结果映射的实例总结

    结果集映射主要是为了解决属性名和类型名不一致的问题,下面这篇文章主要给大家介绍了关于MyBatis结果映射的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
  • JPA如何将查询结果转换为DTO对象

    这篇文章主要介绍了JPA如何将查询结果转换为DTO对象,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
  • SQL查询结果数据排序(二)

    > 本节讲述 对查询结果进行排序1 以指定的次序返回查询结果查询 用户表中所有用户的 姓名 年龄 地区,并按照年龄的升序排列,可以使用 order by 子句select user_name,user_age,user_province from t_user
  • 使用索引来排序查询结果

    使用索引来排序查询结果在MongoDB中,排序操作可以通过从索引中按照索引顺序获取文档的方式来保证结果的有序性。如果查询计划器(planner)无法从索引中得到排序顺序,那么它将需要在内存中排序结果。相比于不使用索引的排序操作,使用索引会有
    阅读数:565 index sort mongodb
  • mysql中怎么拼接查询结果

    mysql中怎么拼接查询结果,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 SELECT CONCAT("[", GROUP_CO
    阅读数:506 mysql
  • SQL如何限制查询结果

    小编给大家分享一下SQL如何限制查询结果,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!SQL查询结果只显示指定的行项目。举例:只显示查询结果的前5行。SQL SE
    阅读数:206 sql
  • python怎么获取sql查询结果

    使用python获取sql查询结果的方法:1.新建python项目;2.导入MySQLdb模块;3.使用MySQLdb.connect()方法创建数据库连接;4.使用cursor.execute()方法执行sql查询语句;5.使用curso
    阅读数:338 python
  • MySQL查询数据之合并查询结果的案例

    小编给大家分享一下MySQL查询数据之合并查询结果的案例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!.利用union关键字,可以给出多条select语句,并将它
    阅读数:908 mysql
  • mysql 存储过程 查询结果集循环处理游标使用

    注意每个版本的mysq的存储过程,触发器写法都会有些许区别,注意查看官方版本,不然你网上copy的语句可能执行无效,或者不成功 官方英文说明文档 https://dev.mysql.com/doc/refman/5.7/en/cursors.html demo
  • 限制 Top-N 查询结果的记录

    在之前的版本中有多种间接手段来对顶部或底部记录获取 Top-N 查询结果。而在 12c中,通过新的 FETCH FIRST|NEXT|PERCENT 语句简化了这一过程并使其变得更为直接。从 EMP 表检索排名前 10 的工资记录SQL>
    阅读数:213 限制 查询结果 记录
  • navicat导出查询结果的操作步骤

    小编给大家分享一下navicat导出查询结果的操作步骤,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!第一步,打开Navicat并点击查询。第二步,新建查询。第三步
    阅读数:197 navicat 操作步
  • MySQL Workbench查询结果导出步骤

    本文主要给大家介绍MySQL Workbench查询结果导出步骤,文章内容都是笔者用心摘选和编辑的,具有一定的针对性,对大家的参考意义还是比较大的,下面跟笔者一起了解下MySQL Workbench查询结果导出步骤吧。
    阅读数:719 mysql workbench bench
  • sqlServer根据月份循环查询结果信息

    -- 1.定义变量declare @n int,@dateTime varchar(255),@ymd varchar(255)-- 2.设置变量set @n=1set @dateTime='2016-'-- 3.设置循环1次数
    阅读数:167 sqlserver sqlserv ver
  • 怎么对MySQL查询结果进行排序

    怎么对MySQL查询结果进行排序,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。  MySQL查询结果如何排序  之前有一个功能修改,要求MySQL查询结果中:
    阅读数:261 mysql
  • CI查询构造器类(查询&生成查询结果)

    除了简单,使用查询构造器的另一个好处就是可以让你创建数据库独立的应用程序,这是因为查询语句是由每个独立的数据库适配器生成的。另外,由于系统会自动对数据进行转义,所以它还能提供更安全的查询。 注解:如果你想编写自己的查询语句,你可以在数据库配置文件中禁用这个类,