1)在pom文件中导入依赖
<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-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> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> </dependencies>2)在 application.yml 文件中导入数据源。
spring: datasource: username: root password: root url: jdbc:mysql://localhost:3306/springdata?serverTimezone=Asia/Shanghai driver-class-name: com.mysql.cj.jdbc.Driver3)创建实体类。
@Entity @Table(name = "tbl_user") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; @Column private String lastName; @Column private String email; //setter getter toString 有参无参构造 }4)编写一个接口来操作实体类
public interface UserRepository extends JpaRepository<User, Integer> { }4.1) JpaRepository 继承 PagingAndSortingRepository<T, ID>, QueryByExampleExecutor<T> 实现了分页功能
@NoRepositoryBean public interface JpaRepository<T, ID> extends PagingAndSortingRepository<T, ID>, QueryByExampleExecutor<T> { @Override List<T> findAll(); @Override List<T> findAllById(Iterable<ID> ids); // ... }
4.2) PagingAndSortingRepository<T, ID>, QueryByExampleExecutor<T> 继承了 CrudRepository<T, ID> 可以实现基本的Crud 功能。
@NoRepositoryBean public interface PagingAndSortingRepository<T, ID> extends CrudRepository<T, ID> { Iterable<T> findAll(Sort sort); Page<T> findAll(Pageable pageable); }
4.3)CrudRepository<T, ID> 继承了 Repository<T, ID>
@NoRepositoryBean public interface CrudRepository<T, ID> extends Repository<T, ID> { <S extends T> S save(S entity); <S extends T> Iterable<S> saveAll(Iterable<S> entities); Optional<T> findById(ID id); boolean existsById(ID id); Iterable<T> findAll(); Iterable<T> findAllById(Iterable<ID> ids); long count(); void deleteById(ID id); void delete(T entity); void deleteAll(Iterable<? extends T> entities); void deleteAll(); }4.4)Repository 就是一个接口类。
@Indexed public interface Repository<T, ID> { }5)在application.yml 文件中配置api。
# 配置 jpa jpa: hibernate: # 更新或者创建 数据库表结构 ddl-auto: update # 控制台展示sql show-sql: true6)配置成功之后可运行主方法,就会在数据库中创建相对应的表,在运行日志会出现。
Hibernate: create table tbl_user (id integer not null auto_increment, email varchar(255), last_name varchar(255), primary key (id)) engine=InnoDB这表示Spring Data 底层是 Hibernate 进行对数据进行操作的。
7) 创建控制层controller, 再创建UserController 控制类。
@RestController public class UserController { @Autowired UserRepository userRepository; @RequestMapping("/get/{id}") public User getUser(@PathVariable("id") Integer id) { return userRepository.getOne(id); } @RequestMapping("/save/user") public User insertUser(User user) { return userRepository.save(user); } }
8) 运行主方法,在地址栏中调试即可。
