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/