0
点赞
收藏
分享

微信扫一扫

使用JPA自动生成代码(轻松上手看了就会版)



目录

  • 背景:
  • 方案
  • 概念:
  • JPA 的主要作用
  • jpa简单使用(Springboot项目)
  • jpa进阶使用
  • 总结


背景:

项目需要自动生成sql代码,不需要写sql语句,能够自动进行查询,我想到了JPA。

方案

概念:

JPA 的全称是 Java Persistence API,是 Java EE 规范之一,用于定义 Java 对象与关系型数据库之间的映射关系。JPA 提供了一种简单的方式,让开发者可以通过面向对象的方式来操作数据库,而不需要手动编写 SQL 语句。

JPA 的主要作用

1、将 Java 对象映射到关系型数据库中的表格。
2、提供了一种统一的 API,可以让开发者以面向对象的方式来操作数据库,而不需要关心底层的数据库操作细节。
3、支持事务处理、缓存管理等高级功能。
4、提供了查询语言 JPQL,可以以面向对象的方式编写查询语句。
JPA 是 Java EE 规范的一部分,不是一个具体的实现。常见的 JPA 实现包括 Hibernate、EclipseLink、OpenJPA 等。在使用 JPA 进行开发时,可以选择一个符合自己需求的 JPA 实现,并按照 JPA 的规范进行开发。

jpa简单使用(Springboot项目)

@Repository
public interface ContentGrainDao extends JpaRepository<ContentGrain, Long> {

}

@SpringBootApplication
public class PushClassApplication implements CommandLineRunner {
    @Autowired
    ContentGrainDao contentGrainRepository;
    @Autowired
    private UserOrderRepository userOrderRepository;
    public static void main(String[] args) {
        SpringApplication.run(PushClassApplication.class,args);
    }

    @Override
    public void run(String... args) throws Exception {

//将断点打到这里
        List<ContentGrain> result = contentGrainRepository.findAll();
        System.out.println("222");
}
}

使用JPA自动生成代码(轻松上手看了就会版)_自动化

jpa进阶使用

//AcademyEntity 是要查表的实体,Long是这张表的主键类型
public interface TTAcademyDao  extends JpaRepository<AcademyEntity, Long> 
{
    AcademyEntity findByNameAndIsDelete(String name, int isDelete);
}

JPA 的命名规范是基于方法名称自动生成 SQL 查询语句,方法名称必须遵循一定的规范,以便自动生成正确的 SQL 语句。

根据 JPA 命名规范,findByNameAndIsDelete 这个方法名表示按照 name 和 isDelete 属性进行查询。具体解释如下:

find:表示这是一个查询方法。
By:表示按照某个属性进行查询。
Name:表示按照 name 属性进行查询。
And:表示并且关系,即同时满足两个条件。
IsDelete:表示按照 isDelete 属性进行查询。
根据这个方法名称,JPA 可以自动生成类似下面的 SQL 查询语句:

SELECT * FROM AcademyEntity WHERE name = ? AND is_delete = ?

这样就可以通过方法名称来实现简单的查询操作,而不需要手动编写 SQL 查询语句。需要注意的是,JPA 命名规范有一定的限制,不支持所有的查询语句,一些复杂的查询仍然需要手动编写 SQL 语句(个人认为没有必要,要是需要使用sql的话,就不用JPA了)。

总结

善假于物实现自动化~


举报

相关推荐

0 条评论