SpringBoot-JPA进行多表连接查询
来源:互联网 发布:云计算工程师发展前景 编辑:程序博客网 时间:2024/06/05 15:14
通过JPA进行简单的(内)连接查询
1.准备
1.1开发工具Intellij Idea
1.2数据库mysql
1.3新建Spring Initializr项目,勾选web,mysql,rest,jpa依赖
2.开始
2.1项目结构
2.2pom.xml内容
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>demo</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>demo</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.6.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-rest</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build></project>
2.3Author类内容;
package com.example.demo;import javax.persistence.*;import java.util.List;@Entitypublic class Author { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int Id; private String name; private int age; @OneToMany( mappedBy = "author" )//作者与书 是一对多的关系,mappedBy 指的是通过 book表中的author字段来映射,mappedBy一般用来设置为关联表的外键字段,这里Book实体中的外键字段为author,则设置为author,设置为别的字段没法进行连接查询 private List<Book> books; public void setId(int id) { Id = id; } public void setName(String name) { this.name = name; } public void setAge(int age) { this.age = age; } public void setBooks(List<Book> books) { this.books = books; } public int getId() { return Id; } public String getName() { return name; } public int getAge() { return age; } public List<Book> getBooks() { return books; }}
2.4Book类内容:
package com.example.demo;import javax.persistence.*;@Entitypublic class Book { @javax.persistence.Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int Id; private String name; private float price; @JoinColumn @ManyToOne(cascade = CascadeType.ALL) //book与作者是多对一的关系,JoinColumn用来加入外键,Cacade 用来级联,CascadeType.Remove 指级联删除,被关联表元祖删除,关联表的对应元祖也会被删除,这里book是关联表,通过外键字段author(在数据库中为author_id外键)关联author表,author是被关联表 // 同样 CascadeType.Persist则是级联存储,其他几个 对应他们的本身单词意思 //CascadType.ALL 则包含了所有级联操作 private Author author; public void setId(int id) { Id = id; } public void setName(String name) { this.name = name; } public void setPrice(float price) { this.price = price; } public void setAuthor(Author author) { this.author = author; } public int getId() { return Id; } public String getName() { return name; } public float getPrice() { return price; } public Author getAuthor() { return author; }}
2.5BookRepository接口内容:
package com.example.demo;import org.springframework.data.repository.CrudRepository;public interface AuthorRepository extends CrudRepository<Author,Integer> {}
2.6AuthorRepository接口内容:
package com.example.demo;import org.springframework.data.repository.CrudRepository;public interface BookRepository extends CrudRepository<Book,Integer> {}
2.7ManiController类内容:
package com.example.demo;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;@Controller//这个只是为了方便导入测试数据的控制器public class MainController { @Autowired private BookRepository bookRepository; @RequestMapping("/initData") @ResponseBody public Iterable<Book> index(){ //导入测试数据 for(int i=1;i<10;++i){ Book book=new Book(); Author author=new Author(); author.setName("ar "+i); author.setAge(i*20); book.setName("bk "+i); book.setPrice(i*15); book.setAuthor(author); bookRepository.save(book); } return bookRepository.findAll(); }}
2.8DemoApplication类内容:
package com.example.demo;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); }}
2.9application.properties内容:
spring.jpa.hibernate.ddl-auto=createspring.datasource.url=jdbc:mysql://localhost:3306/你的数据库spring.datasource.username=你的数据库账号spring.datasource.password=你的数据库密码
3.测试
3.1先访问localhost:8080/initData初始化下测试数据,
3.2访问localhost:8080/books 和localhost:8080/authors进行测试,由于前面我们勾选了rest依赖,所以spring自动帮我们生成好了restful 风格的http接口,通过这2个网址可以进行get查询,可以看到查询book的时候book里的author字段也会展示出来.
阅读全文
1 0
- SpringBoot-JPA进行多表连接查询
- SpringBoot入门-6(利用jpa连接hibernate,并进行生成表,对表的增加,删除,查询操作)
- SpringBoot JPA 表关联查询
- springboot jpa 连接数据库
- 基于SpringBoot的Jpa查询
- SpringBoot中连接MYSQL数据库,并使用JPA进行数据库的相关操作
- SpringBoot中连接MYSQL数据库,并使用JPA进行数据库的相关操作
- Springboot 之 使用JPA进行分页操作
- springBoot JPA 查询中出现的问题
- SpringBoot之连接MySQL,JPA操作
- JPA多表查询案例
- jpa date 多表查询
- jpa多表查询 HQL
- JPA进行CriteriaQuery进行查询注意事项
- springboot jpa
- Springboot+Jpa
- springboot jpa
- springboot jpa
- JS作用域和预解析机制
- 2017.8.7每天五个编程题(三)
- tigase7.1.0 服务器在centos上搭建spark测试
- Android自定义控件
- 关于Echarts柱状图实现的细节
- SpringBoot-JPA进行多表连接查询
- 设计模式
- #include <iostream>和using namespace std;
- Ajax进阶二:发送POST请求
- bash(2) 基本运算
- 初学Scrapy爬虫
- 11、开地址哈希表
- 1.url
- VUE 父子组件间的通讯