-
- spring-data-Jpa簡介 首先我們已經知道JPA(Java Persistence API),中文名是Java 持久層 Api,是JDK 5.0注解或XML描述對象-關系表的映射關系,並將運行期的實體對象持久化到數據庫中。它的誕生是為了整合第三方ORM框架,建立統一的標准。ORM框架中最著名的就是Hibernate,在mybaits沒有流行之前,Hibernate是程序員最喜歡用的持久層框架之一,功能也非常強大。而事實上,Jpa的實現都是用Hibernate做的。spring-data-jpa又是什么呢?從名字就可以看出是spring和JPA的整合。使用spring-data-jpa最大的好處在於,我們在進行開發的過程中,常用的功能,我們幾乎不需要寫一條sql語句。下面開始介紹springdatajpa的使用方法:
- spring-data-Jpa
- 在pom文件中引入依賴
<!--springdatajpa依賴--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> <version>2.1.3.RELEASE</version> </dependency> <!--mysql 依賴--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency>
- 在application.properties中加入連接數據庫的條件,我這里使用的是MySQL。
server.port=8081 spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.jdbc.Driver #配置自動建表 spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true
- 接下來是寫持久層的代碼,很簡單只有實現JpaRepository接口就可以實現基本的查詢功能,其中Student是實體類,Integer是主鍵的類型
public interface StudentRepository extends JpaRepository<Student,Integer> { }
Student.java的代碼。@Entitry表示該類是實體類,@Table在MySQL創建的表名,項目一啟動就會自動創建,@Data需要引入lombok,這里我是為了方便,可以不用寫get/set方法。
@Data @Entity @Table(name = "tb_student") @Component public class Student { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Integer id ; @Column(name = "name",length = 50) private String name; @Column(name = "email",length = 100) private String email; }
controller層代碼,我是跳過了業務層直接跳持久層了,當然實際開發是不會這樣的。
@RestController public class StudentController { @Autowired StudentRepository studentRepository; @Autowired Student student; @RequestMapping("/getAll") public List<Student> queryStudent(){ List<Student> list = new ArrayList<>(); list = studentRepository.findAll(); return list ; } @RequestMapping("/getByID") public Optional<Student> queryStudentbyid() { List<Student> list = new ArrayList<>(); Optional<Student> student= studentRepository.findById(1); return student; } @RequestMapping("/add") public Student addStudent(){ student.setId(121111); student.setEmail("wewsdsdfs"); student = studentRepository.save(student); return student; } }
在瀏覽器訪問的結果
"id":1,"name":"qinda","email":"1214111520@qq.com"},{"id":2,"name":"haha","email":"121"},{"id":3,"name":null,"email":"wewsdsdfs"}]
-