Spring Boot 整合 Spring Data

创建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) 运行主方法,在地址栏中调试即可。

发布了17 篇原创文章 · 获赞 0 · 访问量 1952

猜你喜欢

转载自blog.csdn.net/FOGUANGPUZHAOFOFA/article/details/102871780