渝涅
2022-03-25 14:19
采纳率: 33.3%
浏览 262

在使用mybatis-plus时,大家是怎样处理查询结果转成VO的?

之前都是直接用Mybatis的,最近开始尝试用MP。

例如我有一个用户实体UserEntity,里面有用户名、密码、生日等等字段,现在我只需要查出用户名和密码,我可能封装一个AccountVO。但是MP查询出来的结果,要么是实体类型、要么是Map类型,想利用链式查询的便利,但是查询出来的实体类型还得手动转成Vo,就像下面这样:

       UserEntity userEntity = lambdaQuery ().eq (UserEntity::getId, "1")
                .select (UserEntity::getUsername, UserEntity::getPassword)
                .one ();

        return new AccountVo ()
                .setUsername(one.getUsername ())
                .setPassword (one.getPassword ());

感觉这样写太蠢了,要是只有一两个属性要设置还好,要是每个实体都有十几个属性要这样手动的转换,不得写吐了。

况且正常开发过程中,很少有情况直接查个Entity就OK的吧,一般都得对查询结果封装成VO啥的屏蔽多余的属性。要是用Mybatis直接XML里写个SQL,字段名不一样的可能写个ResultMap,查出来的结果就是VO。但是MP里查出来的直接就是个实体,要么就是Map,感觉太鸡肋了,没人会想直接把Entity或者Map返回给前端吧。要是这种简单的查询还得走XML,我实在找不出用MP的理由。

想问下大家对于这种情况有没有更加优雅的写法。

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

9条回答 默认 最新

相关推荐 更多相似问题