hzk11o11k11o
2020-05-22 09:26
采纳率: 63.6%
浏览 306
已采纳

mybatis的select返回了多余的参数

    <select id="queryStudent" resultType="hz.playspringboot.demo.entity.Student">
        select id,name from tb_user;
    </select>

mapper文件里的配置是这样的,实际的返回值是这样:
{"id":"S2020000103","name":"IDA","password":null}

他将student类的password也显示出来了了,如何彻底隐藏我不希望他返回的参数,只返回select语句中指定的参数?

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • 高冷的自卑患者 2020-05-22 10:22
    已采纳

    因为Student实体类中定义了password属性,输出的是Student实体类,所以会包含password属性;
    不过sql里面没有查询password值,所以实体类中password的值是null。
    想要隐藏password,可以从实体类中删除password属性;
    或者mapper的resultType的值改为HashMap,对应的方法返回值也改为Map,这时输出的map值就不包含password属性了

    已采纳该答案
    打赏 评论
  • 封印di恶魔 2020-05-22 11:51

    ……这都回答什么鬼,这就采纳了,不要误人子弟行不,实体类是直接和数据库交互的,所以实体类的属性和数据库表的字段是对应的

    要让前端接收的数据不带有多余的字段,那么要新建一个类,StudentVO,作为视图返回类,StudentVO中只定义你想返回的参数

    返回时,先从数据库查出Student然后再一个个赋值或用spring-framework的beanutil拷贝Student的属性到StudentVO中,然后再把StudentVO返回给前端

    1 打赏 评论
  • _知道者丶 2020-05-22 10:01

    resultType改为resultMap

    打赏 评论
  • syyyyyyyyyyyyyyh 2020-05-22 10:16

    实体类中定义了password属性,那么你调用这个实体类的 toString方法,就一定会把password也打印,也因此password属性对应的值为null。实际上数据库中的password并没有获取,因为你的sql只查询了,id和name。

    打赏 评论

相关推荐 更多相似问题