SpringBoot(十) -- Spring Data

一.Spring Data简介
  Spring Data 项目的目的是为了简化构建基于 Spring 框架应用的数据访问技术,包括非关系数据库、Map-Reduce 框架、云数据服务等等;另外也包含对关系数据库的访问支持。

二.Spring Data特点
  1.SpringData为我们提供使用统一的API来对数据访问层进行操作;这主要是Spring Data Commons项目来实现的。Spring Data Commons让我们在使用关系型或者非关系型数据访问技术时都基于Spring提供的统一标准,标准包含了CRUD(创建、获取、更新、删除)、查询、排序和分页的相关操作。
  2.统一接口:
  Repository<T, ID extends Serializable>:统一接口
  RevisionRepository<T, ID extends Serializable, N extends Number & Comparable<N>>:基于乐观锁机制
  CrudRepository<T, ID extends Serializable>:基本CRUD操作
  PagingAndSortingRepository<T, ID extends Serializable>:基本CRUD及分页;
  3.提供数据访问模板类 xxxTemplate:如:MongoTemplate、RedisTemplate等;

三.SpringData JPA
  JPA即表示Java Persistence API(java持久化API);
  1.POM引入JPA模块:

 1     <dependencies>
 2         <dependency>
 3             <groupId>org.springframework.boot</groupId>
 4             <artifactId>spring-boot-starter-data-jpa</artifactId>
 5         </dependency>
 6         <dependency>
 7             <groupId>org.springframework.boot</groupId>
 8             <artifactId>spring-boot-starter-jdbc</artifactId>
 9         </dependency>
10         <dependency>
11             <groupId>org.springframework.boot</groupId>
12             <artifactId>spring-boot-starter-web</artifactId>
13         </dependency>
14 
15         <dependency>
16             <groupId>mysql</groupId>
17             <artifactId>mysql-connector-java</artifactId>
18             <scope>runtime</scope>
19         </dependency>
20         <dependency>
21             <groupId>org.springframework.boot</groupId>
22             <artifactId>spring-boot-starter-test</artifactId>
23             <scope>test</scope>
24         </dependency>
25         <dependency>
26             <groupId>junit</groupId>
27             <artifactId>junit</artifactId>
28             <scope>test</scope>
29         </dependency>
30     </dependencies>

  2.配置数据源信息;
  3.JPA-ORM(Object Relational Mapping) 对象关系映射:
  (1)编写一个实体类和数据表进行映射,并且配置表映射关系:

 1 package com.skykuqi.springboot.datajpa.entity;
 2 
 3 import javax.persistence.*;
 4 
 5 /**
 6  * @author : S K Y
 7  * @version :0.0.1
 8  */
 9 //使用JPA注解配置映射关系
10 @Entity     //告诉JPA这是一个实体类,和数据表映射的类
11 @Table(name = "tbl_user")   //来指定和哪个数据表对应,如果省略,默认表名就是user
12 public class User {
13     @Id         //标注这是一个主键
14     @GeneratedValue(strategy = GenerationType.IDENTITY)     //表示这个一个自增组件
15     private Integer id;
16 
17     @Column(name = "last_name")     //这是和数据表对应的一个列
18     private String lastName;
19     @Column     //省略列名就是email即属性名
20     private String email;
21 
22     public Integer getId() {
23         return id;
24     }
25 
26     public void setId(Integer id) {
27         this.id = id;
28     }
29 
30     public String getLastName() {
31         return lastName;
32     }
33 
34     public void setLastName(String lastName) {
35         this.lastName = lastName;
36     }
37 
38     public String getEmail() {
39         return email;
40     }
41 
42     public void setEmail(String email) {
43         this.email = email;
44     }
45 
46     @Override
47     public String toString() {
48         return "User{" +
49                 "id=" + id +
50                 ", lastName='" + lastName + '\'' +
51                 ", email='" + email + '\'' +
52                 '}';
53     }
54 }

  (2).编写一个Dao接口操作实体类对应的数据表:SpringData具有统一的RepRepository接口:

 1 package com.skykuqi.springboot.datajpa.repository;
 2 
 3 import com.skykuqi.springboot.datajpa.entity.User;
 4 import org.springframework.data.jpa.repository.JpaRepository;
 5 
 6 /**
 7  * @author : S K Y
 8  * @version :0.0.1
 9  */
10 //操作数据表
11 //继承JpaRepository来实现对数据库的操作
12 //其泛型表示<当前操作的实体类,主键的类型>
13 public interface UserRepository extends JpaRepository<User, Integer> {
14 
15 }

  (3)在配置文件中配置相关的属性:

  (4)编写Controller:

 1 package com.skykuqi.springboot.datajpa.conroller;
 2 
 3 import com.skykuqi.springboot.datajpa.entity.User;
 4 import com.skykuqi.springboot.datajpa.repository.UserRepository;
 5 import org.springframework.beans.factory.annotation.Autowired;
 6 import org.springframework.web.bind.annotation.GetMapping;
 7 import org.springframework.web.bind.annotation.PathVariable;
 8 import org.springframework.web.bind.annotation.RestController;
 9 
10 /**
11  * @author : S K Y
12  * @version :0.0.1
13  */
14 @RestController
15 public class UserController {
16     @Autowired
17     UserRepository userRepository;
18 
19     @GetMapping("/user/{id}")
20     public User queryUserById(@PathVariable("id") Integer id) {
21         return userRepository.findOne(id);
22     }
23 
24     @GetMapping("/user")
25     public User insertUser(User user) {
26         //返回的对象中将会带有自增组件
27         return userRepository.save(user);
28     }
29 }
posted @ 2019-12-18 21:49  灰色天空_graySky  阅读(412)  评论(0编辑  收藏  举报