创建Spring Boot 工程
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.Driver
3)创建实体类。
@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: true
6)配置成功之后可运行主方法,就会在数据库中创建相对应的表,在运行日志会出现。
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) 运行主方法,在地址栏中调试即可。