springboot --jpa 之多表操作
程序员文章站
2022-05-02 09:50:19
...
jpa可使用nativeQuery实现多表联查,多表聚合
示例:school student
school:id,name
student:id、name、age、school_id
多表联查:id,name,age,schoolName,自定义类StudentInfo接收查询结果
聚合:查询每个学校的学生人数,自定义类StudentCount接收返回结果
@Repository
public class StudentCustomRepository {
@Autowired
private EntityManager entityManager;
@SuppressWarnings("unchecked")
public List<StudentInfo> get(){
//多表联查
String sql="select a.id,a.name,a.age,b.name as schoolName from student a,school b where a.school_id=b.id";
Query query=entityManager.createNativeQuery(sql).setFirstResult(0).setMaxResults(10);
return query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.aliasToBean(StudentInfo.class)).getResultList();
}
@SuppressWarnings("unchecked")
public List<StudentCount> count(){
//多表聚合
String sql="select b.name as schoolName,count(*) as count from student a,school b where a.school_id=b.id group by b.name order by 2 desc,b.name asc ";
Query query=entityManager.createNativeQuery(sql);
return query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.aliasToBean(StudentCount.class)).getResultList();
}
}
推荐阅读
-
Django之模型层(多表操作)
-
【原】无脑操作:IDEA + maven + Shiro + SpringBoot + JPA + Thymeleaf实现基础认证权限
-
06.Django基础五之django模型层(二)多表操作
-
springboot 之jpa高级查询操作
-
Django之模型层多表操作的实现
-
Springboot 之 使用POI操作excel
-
SpringBoot2.0 基础案例(09):集成JPA持久层框架,简化数据库操作
-
2019年6月14日 Web框架之Django_07 进阶操作(MTV与MVC、多对多表三种创建方式、前后端传输数据编码格式contentType、ajax、自定义分页器)
-
Springboot JPA 枚举Enum类型存入到数据库的操作
-
在SpringBoot项目中使用JPA实现简单的数据库操作