springboot 学习之集成JPA

1、前言

springboot自己集成JDBC和JPA,使用的时候只需要配置相关的文件就好了。JDBC模板使用起来比较麻烦不是很常用,JPA用起来相对容易一点。

2、开发准备

我们两种方式开发,一种就是使用原来的maven直接引入依赖去开发,以另一种就是使用STS插件建立springboot项目,勾选JPA和mysql,项目建立的时候就会自动导入依赖。

<!-- 数据库驱动 -->
<dependency>
     <groupId>mysql</groupId>
     <artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- springdata jpa -->
<dependency>  
    <groupId>org.springframework.boot</groupId>  
    <artifactId>spring-boot-starter-data-jpa</artifactId>  
</dependency> 

3、建立实体类

import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity   //注意包名
@Table(name="user_info")   //自动建表,与数据库对应
public class UserInfo {

	@Id
	@GeneratedValue
	private Integer id;
	
	private String name;
	private Integer age;
	private String sex;
	private String job;
	private Date birthday;
	private Date createdTime;
	private Date updateTime;
    
        // ... 省去setter和getter方法
}

4、yml配置

# server
server:
  port: 8081
  servlet:
    context-path: /boot
 
# database
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/test
    driver-class-name:  com.mysql.jdbc.Driver
    username: root
    password: root
    
# jpa
  jpa:
    hibernate:
      ddl-auto: update  # 建表策略
    show-sql: true  #显示SQL语句

5、持久层开发

import org.springframework.data.jpa.repository.JpaRepository;

import ws.simonking.springboot.bean.UserInfo;
/*
    必须继承JpaRepository
    1、不使用注解写SQL,接口方法命名必须按照JPA规则
    2、自定义接口,使用@Query注解。具体可参考官方文档
*/
public interface UserInfoRepository extends JpaRepository<UserInfo, Integer> {
	
	UserInfo findUserInfoById(Integer id);

}

6、表现层的开发

@RequestMapping("/getUserInfo")
public UserInfo getUserInfo() {
        /*
            这里有一个大坑:使用getOne()的方法,可以查到数据。但是无法默认转化成JSON数据,返回接口直接报错
        */
        //UserInfo userInfo = userInfoRepository.getOne(1);
	UserInfo userInfo = userInfoRepository.findUserInfoById(1);
	return userInfo;
}

7、效果

8、参考文献

spring data jpa 官网:https://docs.spring.io/spring-data/jpa/docs/current/reference/html/



猜你喜欢

转载自blog.csdn.net/static_coder/article/details/79758085