JPA之初始用
最近的项目数据库层面使用的是jpa框架,之前一直都是用的mybatis,所以自己学习了一下jpa的使用,并做个记录。话不多说,直接说使用。
首先创建一个项目,这个过程就省略了,我这里用的是idea自带的springboot项目启动,一键启动,pom文件导入的依赖如下:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<!-- Mysql Connector -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.18</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- JPA,用于自动生成表结构 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
<version>1.0.2</version>
</dependency>
<!-- lombok(通过注解的方式,在编译时自动为属性生成构造器、getter/setter、equals、hashcode、toString方法。
在源码中没有getter和setter方法,但是在编译生成的字节码文件中有getter和setter方法。) -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.20</version>
<scope>provided</scope>
</dependency>
</dependencies>
依赖的用途都有注释,自己看一下。
下面是实体类的生成,参考这篇博客:IDEA连接数据库生成实体类方法与定制Groovy生成脚本,不做赘述。
接下来实体类生成好,需要写一个BaseRepository继承JPA本身实现的repository,大部分简单的crud都会覆盖到,BaseRepository代码如下:
@NoRepositoryBean
public interface BaseRepository<T> extends JpaRepository<T, Long>, JpaSpecificationExecutor<T>, Serializable {
}
@NoRepositoryBean注解不要忘了,在做项目时创建对象的功能会交给Spring去管理在扫描Repository层包时会扫描到BaseRepository接口,所有对象类接口都会继承此接口,为了告诉JPA不要创建对应接口的bean对象,就在类上加注解@NoRepositoryBean
接下来自己写一个对应实体类的Repository,我这里写的是ServiceRequestLogRepository,命名规则是实体类名加Repository,代码如下:
@Repository
public interface ServiceRequestLogRepository extends BaseRepository<ServiceRequestLog> {
List<ServiceRequestLog> findAllByApiIdAndFileId(Long apiId, Long fileId);
@Query(nativeQuery = true, value = "select * from service_request_log where API_ID = ?1")
List<ServiceRequestLog> findByMy(Long apiId);
}
上面有两个方法,第一个是spring会默认帮你实现的,要符合他的命名规则(自己研究一下他的命名规则,估计你看到这个方法名就明白了),第二个方法是我自己的写的原生sql,这样的方法名随便你取,但是sql语句你要自己写,多用于复杂的sql语句场景。
接下就是三层架构调用,直到controller层返回页面显示,这个自己去试一下吧~
到此,简单的jpa的使用就结束了。