JPA是一个数据持久化的类和方法的集合,目前java项目开发中提到的JPA一般是指用Hibernate的实现,因为在java的ORM框架中,只有Hibernate实现的最好。当前学习在SpringBoot项目中使用JPA,数据库使用mysql。
一、新建一个SpringBoot项目,在pom.xml中引入jpa的依赖,和mysql数据库连接器的依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
也可以在创建项目的时候选择模块,此处会自动加入依赖,如:
二、配置数据源,在application.yml中进行配置,基础的配置都比较容易看懂,除了url、username、password需要调整,其他都是不用改的。
######数据库连接配置#################
spring:
datasource:
url: jdbc:mysql://localhost:3306/img_o2o?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
#hikari 数据源配置
hikari:
maximum-pool-size: 20
minimum-idle: 5
#JP相关
jpa:
database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
show-sql: true
hibernate:
ddl-auto: create
三、创建实体对象:通过@Entity注解表明该类是一个实体类,它和数据库表明是对应的。@Id注解表明该变量对应数据库的id,@GeneratedValue注解配置id字段为自增长,@Column注解表明该变量对应数据库表中的字段。还有很多注解属性,后面用到了可以进行实践。
@Entity
public class JpaUser {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id ;
@Column
private String username ;
@Column
private String password ;
//略过get、set
}
此时启动服务,会看到控制台会有生成表的sql,如:
再看数据库,也生成了对应的表,说明我们第一步成功了,如:
四、创建DAO层
创建一个DAO类,继承JpaRepository接口,继承之后就能对数据库进行读写操作,包含基本的单表查询方法,。在 Dao 类写 findByUsername 的方法,传入参数 usemame, JPA 已经实现了根据某个字段去查找的方法 所以该方法可以根据 usemame 字段从数据库中获取 User 的数据,不需要做额外的编码。如:
五、创建Service层
创建一个Service类,并注入dao,写一个根据用户名查询用户的方法:
六、创建Controller层
新建一个Controller类,写一个Get类型的api接口,接收参数username,通过@PathVariable注解获取RESTurl路径上的参数:
重新启动应用,手动的在数据库添加一些数据,在浏览器输入:
http://localhost:8080/user/test 最后一个参数为数据库存在的username
可以看到输入test,可以查到数据库test这一条信息,并且输出json对象。
demo代码:https://download.csdn.net/download/ssdate/10731151 (demo里的代码跟文章稍有变动)
也可以移步至码云:https://gitee.com/ssdate/spring-test