JPA之初始用

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的使用就结束了。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值