什么是 Spring Data
Spring Data 是 Spring Boot 底层默认进行数据访问的技术 , 为了简化构建基于 Spring 框架应用的数据访问技术,包括非关系数据库、Map-Reduce 框架、云数据服务等;另外也包含对关系数据库的访问支持
Spring Data 包含多个模块:
- Spring Data JPA
- Spring Data KeyValue
- Spring Data LDAP
- Spring Data MongoDBSpring Data Redis
- Spring Data REST
- Spring Data for Apache Cassandra
- Spring Data for Apache Geode
- Spring Data for Apache Solr
Spring Data特点:
Spring Data项目为大家提供统一的API来对不同数据访问层进行操作;
Spring Data 统一的接口:
- Repository:统一的根接口,其他接口继承该接口
- CrudRepository:基本的增删改查接口,提供了最基本的对实体类CRUD操作
- PagingAndSortingRepository:增加了分页和排序操作
- JpaRepository:增加了批量操作,并重写了父接口一些方法的返回类型
- JpaSpecificationExecutor:用来做动态查询,可以实现带查询条件的分页(不属于Repository体系,支持JPA Criteria 查询相关的方法 )
JPA是一种规范,而Hibernate是实现这种规范的底层实现,Spring Data JPA对持久化接口 JPA 再抽象一层,针对持久层业务再进一步统一简化。
**SpringBoot整合Spring Data JPA **
JPA底层遵守是ORM(对象关系映射)规范,因此JPA其实也就是java实体对象和关系型数据库建立起映射关系,通过面向对象编程的思想操作关系型数据库的规范。
1、创建Module
2. 添加数据源, 新建 jpa 数据库(我们不需要创建数据库,有jpa帮我们创建)
3. 创建实体类,并使用JPA注解进行配置映射关系:
package com.example.springboot.entity;
import javax.persistence.*;
/**
* jpa采用的是Orm(对象关系映射)模型
*/
@Entity //说明 它是和数据表映射的类
@Table(name = "tbl_user") //指定对应映射的表名,省略不写默认表名是类同 user
public class User {
@Id //指定主键
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(name = "user_name", length = 5)//与数据表对应的一个字段
private String username;
@Column //省略不写默认字段名就是属性名
private String password;
public User() {
}
public User(String username, String password) {
this.username = username;
this.password = password;
}
//省略get,set
}
-
类上使用 JPA注解@Entity标注,说明它是和数据表映射的类;
-
@Table(name=“表名”)指定对应映射的表名,省略默认表名就是类名。
-
@Id标识主键,@GeneratedValue(strategy =GenerationType.IDENTITY)标识自增长主键
-
@Column标识字段
- 创建UserRepository接口继承JpaRepository,就会crud及分页等基本功能
package com.example.springboot.dao;
import com.example.springboot.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
/**
* 自定义接口继承JpaRepository,就会有crud操作且分页排序 等功能
*/
// 指定的泛型<操作的实体类,主键的数据类型>
public interface UserRepository extends JpaRepository<User, Integer> {
}
JpaRepository内部封装操作数据库的方法
- JPA 配置在全局配置文件中添加 ( spring.jpa.* 开头)
接下来我们直接启动主启动类,看看能否帮我们自动创建数据表
表自动创建成功
6.测试方法
package com.example.springboot.controller;
import com.example.springboot.dao.UserRepository;
import com.example.springboot.entity.User;
import com.example.springboot.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import java.util.Optional;
@RestController
public class UserController {
@Autowired
UserRepository userRepository;
@GetMapping("/user/{id}")
public User getUserById(@PathVariable("id") Integer id){
Optional<User> userOptional = userRepository.findById(id);
User user = userOptional.get();
return user;
}
@GetMapping("/user")
public User addUser(User user) {
User user2 = userRepository.save(user);
return user2;
}
@Autowired
IUserService userService;
@GetMapping("/user2")
public User addUser2(User user) {
userService.addUser(user);
return user;
}
}
重启,测试:
返回数据:
查看数据表中的数据:
===============================================
记得双击,么么哒