解决mybatis,sql后端查询成功但postman测试返回的data却为null,空问题

这篇具有很好参考价值的文章主要介绍了解决mybatis,sql后端查询成功但postman测试返回的data却为null,空问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

http://localhost:8080/Sell/vi?begin=2023-06-04&end=2023-06-06
//接口get查询地址

 查询成功,但是postman测试返回data为空

查询成功,但是postman测试返回data为空
{
    "code": 1,
    "msg": "success",
    "data": [
        null
    ]
}

这时到后端查看mybatis查询情况却发现查询成功返回数据正常

SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6a2e1306] was not registered for synchronization because synchronization is not active
JDBC Connection [HikariProxyConnection@2076509092 wrapping com.mysql.cj.jdbc.ConnectionImpl@64dc86c6] will not be managed by Spring
==>  Preparing: SELECT SUM(pricesum) FROM tb_sellinfo WHERE date BETWEEN ? AND ?
==> Parameters: 2023-06-04(LocalDate), 2023-06-06(LocalDate)
<==    Columns: SUM(pricesum)
<==        Row: 1400
<==      Total: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6a2e1306]

排查问题发现实际上是实体类中没有查询返回结果中的 “SUM(pricesum)” getset方法

public class SellInfo {
    private Integer id;
    //规整时间返回格式@JsonFormat(shape=JsonFormat.Shape.STRING,pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    @JsonFormat(shape=JsonFormat.Shape.STRING,pattern="yyyy-MM-dd",timezone="GMT+8")
    private Date date;
    private String ISBN;
    private Integer num;
    private String price;
    private Integer pricesum;
    private String SUM;//加上对应名称的实体类,并修改返回结果的列名
}

在sql查询中修改: 

--这是原sql查询        
        SELECT SUM(pricesum)
        FROM tb_sellinfo
        <where>
            <if test="isbn != null">
                AND ISBN = #{isbn}
            </if>
            <if test="begin != null and end != null">
                AND date BETWEEN #{begin} AND #{end}
            </if>
        </where>
         --修改返回列名为实体类中对应的SUM  
        SELECT SUM(pricesum) AS SUM
        FROM tb_sellinfo
        <where>
            <if test="isbn != null">
                AND ISBN = #{isbn}
            </if>
            <if test="begin != null and end != null">
                AND date BETWEEN #{begin} AND #{end}
            </if>
        </where>

 重启后端之后,此时同样的get请求查询sum返回已经正确封装在data中

{
    "code": 1,
    "msg": "success",
    "data": [
        {
            "id": null,
            "date": null,
            "num": null,
            "price": null,
            "pricesum": null,
            "isbn": null,
            "sum": "1400"
        }
    ]
}

 到后端查看发现列名已经变成与实体类对应的SUM

SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@55c2be89] was not registered for synchronization because synchronization is not active
JDBC Connection [HikariProxyConnection@805059805 wrapping com.mysql.cj.jdbc.ConnectionImpl@5f3b84bd] will not be managed by Spring
==>  Preparing: SELECT SUM(pricesum) AS SUM FROM tb_sellinfo WHERE date BETWEEN ? AND ?
==> Parameters: 2023-06-04(LocalDate), 2023-06-06(LocalDate)
<==    Columns: SUM
<==        Row: 1400
<==      Total: 1

总结:实际上就是查询时数据库返回的列名在实体类找不到对应的字段,无法封装要查询的这个列和数据,所以get请求无法得到相应的data数据。文章来源地址https://www.toymoban.com/news/detail-697573.html

到了这里,关于解决mybatis,sql后端查询成功但postman测试返回的data却为null,空问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java后端大写字段传到前端,或者使用postman调用后,返回变为小写

    比如,我有一个类,然后该类中有一个字段 默认使用的是Jackson解析。Jackson在解析返回的json字符串时,全部大写字段被转为小写了,首字母如果是大写也会被转为小写 我在传输给前端,或者使用postman调用,或者存储到redis的时候,发现该字段不是YTD,而是ytd,没办法满足我

    2024年02月12日
    浏览(28)
  • Mybatis分页查询同时返回总数和数据

    我们在使用Mybatis分页查询数据列表时,在用户的一个请求中常常需要同时返回当前页的列表数据以及满足条件的数据总条数用于分页。 1)执行两次SQL,一次查列表,一次查总数       这种方法最简单,也最容易实现。 2)分页插件PageHelper       另一种常用的方式就是使用

    2024年02月14日
    浏览(24)
  • Mybatis查询返回Map<String,Object>类型

    这篇我们来说一下Mybatis的查询结果返回Map类型。 首先我们在企业开发中是很少使用到Map返回类型的,很多都是直接返回一个对象实体。尤其是苞米豆出了MP框架之后,XML都是很少写的。 那么在什么情况下需要使用Map来作为返回的结果类型呢? 案例:有一个模块A和模块B,A模

    2024年02月02日
    浏览(31)
  • mybatis查询多个结果返回map--@MapKey使用方法

    目录         介绍  源码分析: 在使用mybatis的时候遇到一种情况,查询结果集返回多个,想用map接收,以前是用List对象接收,然后java代码中转换成map。其实mybatis是支持返回map的。下面就介绍使用方法。 测试代码: 下面@MapKey中的id是BusinessPricePO中的一个属性id,否则会报错

    2024年02月12日
    浏览(25)
  • 【Mybatis】Sql返回count()数量的处理

    【Mybatis】Sql返回count(*)数量的处理 如果把SQL写在类中或是注解中,当要取 select count(*) .... 类型SQL的返回值,直接指定函数的返回类型为 int/long 即可; 但对于把sql语句写在XML文件的情况,如果要取 select count(*) .... 的返回值,必须要指明结果类型 resultType=\\\"java.lang.Integer ,否则

    2024年02月12日
    浏览(25)
  • 详解Mybatis查询之resultType返回值类型问题【4种情况】

    编译软件:IntelliJ IDEA 2019.2.4 x64 操作系统:win10 x64 位 家庭版 Maven版本:apache-maven-3.6.3 Mybatis版本:3.5.6 在Mybatis中,resultType属性是 selcet元素 【映射查询语句】中常用的属性之一,这个属性是什么意思呢?Mybatis官方对它的描述如下所示: 期望从这条语句中返回结果的类全限定

    2024年02月15日
    浏览(34)
  • MyBatis 查询 MySQL 实现返回 List<Map> 或 Map 类型数据操作

      MyBatis 查询 MySQL 数据库,返回结果可以是具体的类、Map、ListMap 等等。将查询结果返回 Map 类型的优点是,不需要为本次查询额外创建类。如果只查询某几个特定的列,且不想额外创建类的话,就可以将结果返回 Map 或 ListMap。   如果能明确查询结果只有一条记录时,返

    2023年04月09日
    浏览(73)
  • 配置 mybatis 打印出执行的 sql 及返回的结果集

    在开发过程中, 经常会遇到想要看到应用所执行的 sql 这样的需求. 比如你写了一个查询的功能, 但查询出来的结果与你预期的不符合, 你想搞清楚到底哪里出了问题, 你自然需要看看所执行的 sql 语句, 必要的话甚至还要亲自拷贝到数据库里去查查. 自然, 这就要求应用要能把执

    2024年02月07日
    浏览(32)
  • 【Java】Mybatis查询数据库返回JSON格式的字段映射到实体类属性

    今天遇到了一个bug,大概就是数据库(Mysql)中有一个 type 类型字段,数据类型为json,大概是这样的:[“苹果”,“香蕉”,“葡萄”]的数据格式,这个bug的问题所在呢就是查询后这个json格式的数据无法映射到我们实体类的属性上,解决方案如下: 实体类的配置: @TableField

    2024年02月15日
    浏览(31)
  • springboot实现webservice接口自定义返回值通过postman测试

    震惊~~都2023年了竟然还有人用webservice! maven添加依赖 添加配置文件 自定义拦截器 通过cxf实现wenservice服务返回结果是有一层固定包装的,类似下图,return标签里才是结果,如何完全自定义返回的结果数据呢?就需要上面的拦截器去掉外层的包装。 service类 实现类 接下来启动

    2024年02月16日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包