登录 
欢迎来到陈冬冬(雪地里走)的学习天地 | 经验分享整理平台 | 陈冬冬
 服务器本次启动于:24天前 

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);
        }
    }

}
你可能感兴趣的:
      关键字:user(5)name(4)string(4)自定义(4)userdto(3)
      互动()
      评论()
      比起点赞,站长更喜欢登录后的评论
      • 0
      • 0
      • 0
      • 0
      • 0