SpringBoot多表查询的实现
来源:互联网 发布:柯尔特蟒蛇357淘宝模型 编辑:程序博客网 时间:2024/06/08 16:31
在SpringBoot中,建立一个与单表结构相同的实体类,用
接口中的方法是这样的:
接口中的查询方法变成这样:
@Entity@Table(name="user")
建立ORM映射,用@Column(name="name")建立字段映射。就可以用CrudRepository很方便地查询数据库表。但是我们经常需要查询多表关联的数据。如,有这样两个表:user和level。user中存放用户基本信息,level存放用户等级信息,user表中包含有level表的外键。如:
我们需要查出这样的结果:
由于数据库中没有这样的表,所以我们的实体类不能完全跟表建立映射,于是实体类就设计成这个样子:
@Entity@Table(name="user")public class UserModel { @Id @GeneratedValue(strategy = GenerationType.AUTO) public long id; @Column(name="name") public String name; @Column(name="password") public String password; //这个字段不做映射 public String level;}
接口中的方法是这样的:
@Query(value = "SELECT u.id id,u.name name,u.password password,l.title level from user u,level l WHERE u.id=? and u.level=l.id", nativeQuery = true)UserModel getUserAllInfo(long id);
我们看看查询结果:
其思路就是基于多表查询的结果集创建实体类,不属于数据表中的字段就不设置字段映射。
另外一种思路,就是在数据库中根据多表查询语句创建一个视图,然后创建的实体类完全映射这个视图,查询的时候就查询这个视图。
设计的实体类就变成了这个样子:
@Entity@Table(name="userallinfo")//这里映射的是视图public class UserModel { //以下所有字段映射都依照视图 @Id @GeneratedValue(strategy = GenerationType.AUTO) public long id; @Column(name="name") public String name; @Column(name="password") public String password; @Column(name = "level") public String level;}
接口中的查询方法变成这样:
//查询数据来源变成了视图 @Query(value = "SELECT * from userallinfo WHERE id=?", nativeQuery = true) UserModel getUserAllInfo(long id);
查询结果和前面相同。
以上解决方法依赖于SQL,并没有很好地发挥ORM的长处。更专业的处理方法还需要参考这篇文章:
http://blog.csdn.net/liujianwd/article/details/75305103
阅读全文
0 0
- SpringBoot多表查询的实现
- springboot 简单的整合mybaties实现web数据查询
- Springboot整合JPA以及动态条件查询的实现
- SpringBoot-JPA进行多表连接查询
- 基于SpringBoot的Jpa查询
- SpringBoot操作MongoDB实现分页查询
- 如何实现mybatis+Springboot 关联查询
- Springboot集成jdbcTemplate,实现复杂sql查询
- SpringBoot JPA 表关联查询
- SpringBoot中使用Spring Data Jpa 实现简单的动态查询的两种方法
- 如何实现Springboot+mybaitis动态查询与关联查询?
- springBoot JPA 查询中出现的问题
- SpringBoot+Jpa实现增删改查以及分页查询
- 【二】Springboot+Mybatis+Redis实现用户信息查询缓存
- springboot实现多文件上传
- SQL实现的多表查询
- Mysql多表查询的实现
- mybatis学习 - 多表查询的实现
- equals与==的区别?
- 结构体初始化
- java基础 基本类型转换
- 数据结构-单线性链式-头插法
- mysql MyISAM和InnoDB
- SpringBoot多表查询的实现
- Tensorflow学习笔记:About Session, Graph, Operation and Tensor
- java timer缺陷
- HDU
- 敏捷开发之类的摘抄
- centos7安装mysql
- xlistview布局
- webpack入门
- logistic回归总结