之前都是直接用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的理由。
想问下大家对于这种情况有没有更加优雅的写法。