SpringBoot JPA实践之@Query查询之接口结果集
2020-05-01 22:07:26
阅读:()
前面几篇文章中已经飞起来了多种场景的案例了,有个细节没有提到,@Query注解查询返回的结果集仍然必须是Entity类,但是通常情况更多的复杂查询将查询的是一个自定义对象(Dto):自定义Javabean,而JPA是支持查询返回自定义对象的,但它返回的对象类型必须是接口类型,其接口的具体实现被JPA代理实现(本站有类似的代理接口实现类的实现),匹配规则接口中的函数名称 = get + 数据库字段名即可,如果某个字段需要二次加工,则使用JDK8中接口的默认方法解决。
代码实现
Repository
/**
* 查询返回接口类型
*
* @author chendd
* @date 2020/5/2 20:44
*/
public interface UserQueryInterfaceResultRepository extends BaseRepository<User, String> {
@Query(value = "select name , email , concat(concat(name , '_'),email) as remark " +
"from user where name = ?" , nativeQuery = true)
List<UserDto> queryUsersByName(String name);
}
Test
/**
* 测试查询返回自定义接口类型
*
* @author chendd
* @date 2020/5/2 20:50
*/
public class UserQueryInterfaceResultTest extends ApplicationTest {
@Resource
private UserQueryInterfaceResultRepository repository;
@Test
public void testQueryInterfaceResult() {
List<UserDto> dataList = repository.queryUsersByName("chendd");
for (UserDto user : dataList) {
String remark = user.getRemark();
String defaultRemark = user.getDefaultRemark();
Assert.assertEquals(remark , defaultRemark);
}
}
}
你可能感兴趣的:
互动()
评论()
比起点赞,站长更喜欢登录后的评论
-
0 -
0 -
0 -
0 -
0