Im_corin
寒木666
采纳率25%
2020-11-16 15:19 浏览 606

JAVA中如何只返回mybatis 查询的字段给前端 而不是实体类中所有的字段??

平常业务中 一个实体类有很多属性 但是我一个小模块只需要固定的几个属性 我查询的话 会返回整个实体类的字段给前端,如何只返回只查询的该字段对应的属性呢?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

9条回答 默认 最新

  • u013254183 老铁咖啡 2020-11-16 15:35

    方法一

    新建一个VO,放你需要的字段属性

    然后mybatis查出来的实体类 转换成这个VO

     

    方法二

    mapper 里面 写sql  select 你要查询的字段 from table

    点赞 2 评论 复制链接分享
  • qq_39400058 千星流 2020-11-17 10:06

    可以了解一下@JsonIgnore 对于不想返回的字段可以加一下这个注解

    点赞 1 评论 复制链接分享
  • Im_corin 寒木666 2020-11-16 15:59

    用你的方法二 我实体类的所有属性都会返回出去 只是值为NULL 我如何只返回 我select的字段对应的属性呢???

    点赞 评论 复制链接分享
  • qq_23126581 郭老师的小迷弟雅思莫了 2020-11-16 16:41

    其实我早就不混问答了,因为感觉没意思,偶尔看到你的问题,答复一下

    最简单的就是在mapper里定义返回类型的时候用hashmap,他会直接根据你查询的字段返回,不过返回的key可能是全部大写的,你可以自定义下resultmap,

    第二就是:定义一个返回的DTO实体类,就是写你想要的字段信息,在mapper中返回类型直接指向这个DTO。

    第三:可以用实体类接受,然后就是转化成DTO返回给前段。

    点赞 评论 复制链接分享
  • liuyh1024 liuyh1024 2020-11-16 16:52

    返回map,用啥返啥。

    点赞 评论 复制链接分享
  • qq_18630487 真-酸辣土豆丝 2020-11-16 17:31

    你应该了解一下mybatis的select    resultType标签的用法不要只会用resultMap="BaseResultMap"

    类似这样

    <select id="getByIdsOrdered" resultType="com.fuli.goods.entity.Goods" parameterType="com.fuli.goods.vo.request.GoodsPerReVo">
    

     

    点赞 评论 复制链接分享
  • weixin_50845392 weixin_50845392 2020-11-17 14:20

    这个是刚刚的帖子吗

    点赞 评论 复制链接分享
  • weixin_50845392 weixin_50845392 2020-11-17 14:39

    这个问题以前我也纠结过,我一开始是这样操作的,直接在对应的实体类上上加

    @JsonInclude(JsonInclude.Include.NON_NULL),这个注解的意思大概就是用加这个注解的类来封装结果集,为空的字段不会被添加到这个结果集中。这样返回值类型即使填这个类,返回的结果集也不会有为空的字段显示,传给前端也不会显示。

    但是这样又存在问题了,这个在某些业务中可能适合,但是有时候它却不适合,为空的字段就不显示,万一查询的字段没有数据,本身就为空呢。

    后来我终于明白了,之前查询一个实体类中某些字段,却返回实体类中所有字段的原因了,因为你本身返回的结构类型就是其对应的实体类

    resultType="对应的实体类",所以即使你有些字段没有查,它也会封装进去。没查的字段值就默认为null,或者或建表时给的默认值。

    我们只需要针对resultTyp="";做处理就行,resultTyp的值我们填map就没有问题了。这样只返回只查询的该字段对应的属性呢

     

     

     

    
     
    点赞 评论 复制链接分享
  • qq_25032581 三石喽 2020-11-17 20:02

    可以用VO类,也可以用map直接返回,如果对map有其他操作,获取map值在进行操作即可

    点赞 评论 复制链接分享

相关推荐