restapiV2.0.0升级为simplestapi开源框架生态之simplestjpa发布

2023年 8月 1日 25.2k 0

什么是 simplest

simplest 追求存粹简单和极致。

旨在为项目快速开发提供一系列的基础能力,方便用户根据项目需求快速进行功能拓展

不在去关心一些繁琐。重复工作,而是把重点聚焦到业务。

前言

程序 10 年。作为一个多年程序。深知每个项目和程序,都有很多重复性工作要做。
入行近 10 年,我写过很多程序,也写死过很多程序。。。。。

见证互联网黄金时代,到如今的萎靡。幸运是我还在程序员大军中。和你们一起奋斗!

我的故事 公众号 期待与你交流。希望给迷茫你一点启发和帮助。

相关仓库

项目 简介 gitee 地址 github 地址
simplest-api 前后端分离项目基于 simplest-api 可以快速构建基于 Web Json API 格式的统一通讯交互 gitee.com/daTouY/simp… github.com/coder-amiao…
simplest-jpa 基于 QueryDSL 语法灵活强大的 QueryWrapper,链式 QueryChain 强大自由组合查询器,像写原生 SQL 一样基于 Java API 查询数据,优雅极致。 gitee.com/daTouY/simp… github.com/coder-amiao…
simplest-admin 基于 RABC 权限模型,功能丰富最新技术栈 Vue3.3 + Vite4 + TS + Pinia + Element-Plus 管理后台脚手架。开箱即用,可定制的代码生成模板,让你只需专注于业务开发。 gitee.com/daTouY/simp… github.com/coder-amiao…
simplest-boot 业务通用生态核心组件 gitee.com/daTouY/simp… github.com/coder-amiao…

Simplest开发文档

这里主要介绍simplest-jpa 使用

快速开始

项目 pom 中引入依赖


    cn.soboys
    simplest-jpa-spring-boot-starter
    1.0.1




    mysql
    mysql-connector-java
    8.0.28


在 SpringBoot 启动类或者配置类上通过 @EnableJPAQuery注解开启 simplest-jpa

@SpringBootApplication
@EnableJPAQuery
public class SpringbootJpaApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootJpaApplication.class, args);
    }

}

到此你项目中就可以使用所有的功能了。

数据库配置

在项目中配置对应数据库连接

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/rest-admin?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&serverTimezone=Asia/Shanghai
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.zaxxer.hikari.HikariDataSource
    hikari:
      minimum-idle: 10
      maximum-pool-size: 20
      idle-timeout: 600000
      max-life-time: 1800000

  jpa:
    hibernate:
      naming:
        implicit-strategy: org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
      ddl-auto: update # 控制是否可以基于程序中Entity的定义自动创建或者修改DB中表结构
    show-sql: true #控制是否打印运行时的SQL语句与参数信息
    database-platform: org.hibernate.dialect.MySQLDialect #数据库方言
    open-in-view: true
    properties:
      hibernate:
        enable_lazy_load_no_trans: true

定义对应entity 对应数据库表。JPA 会自动帮你生成数据库。

package cn.soboys.springbootjpa.entity;

import cn.soboys.springbootjpa.entity.base.BaseEntity;
import cn.soboys.springbootjpa.entity.dto.TitleVo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import javax.persistence.*;
import java.util.HashSet;
import java.util.Set;

/**
 * @author 公众号 程序员三时
 * @version 1.0
 * @date 2023/7/19 10:44
 * @webSite https://github.com/coder-amiao
 * 内容分类
 */
@Data
@Entity
@Table(name = "cms_category")
public class Category extends BaseEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;


    /**
     * 标题
     */
    @Column(nullable = false, length = 64)
    @Schema(description = "标题")
    private String title;


    /**
     * @Embedded 用户映射数据库表到一个实体vo。
     */
    @Embedded
    @Schema(description = "标题信息")
    private TitleVo titleVo;

    /**
     * 描述
     */
    @Schema(description = "描述")
    private String described;

    /**
     * 图标
     */
    @Column( length = 32)
    @Schema(description = "图标",maxLength = 32)
    private String icon;

    /**
     * 图片
     */
    @Column( length = 32)
    @Schema(description = "图片",maxLength = 32)
    private String pic;

    /***
     * 引用关系不填写。默认对应主键。
     */
    @ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE},fetch = FetchType.LAZY)
    @JoinTable(name = "cms_module_relation",
            joinColumns = @JoinColumn(name = "resource_id"),
            inverseJoinColumns = @JoinColumn(name = "module_id"))
    private Set modules=new HashSet();


    /**
     * 额外其他属性
     * @Transient 解绑和数据联系。属于实体类属性
     */
    @Transient
    private String other;


}

生成对应查询EntityPath

基于 QueryDSL 的APT 技术 在 maven 的 pom.xml 中引入对应的插件


    
    com.mysema.maven
    apt-maven-plugin
    1.1.3
    
        
            generate-sources
            
                process
            
            
                target/generated-sources/java
                com.querydsl.apt.jpa.JPAAnnotationProcessor
            
        
    

然后通过 maven 编译项目。

会在你指定目录生成对应查询EntityPaht实体

简单查询

  • 编写自己的Repository 继承通用BaseRepository
  • package cn.soboys.springbootjpa.repository;

    import cn.soboys.simplestjpa.BaseRepository;
    import cn.soboys.springbootjpa.entity.Category;
    import org.springframework.stereotype.Repository;

    /**
    * @author 公众号 程序员三时
    * @version 1.0
    * @date 2023/7/19 12:02
    * @webSite https://github.com/coder-amiao
    * 数据库 dao层。
    */
    @Repository
    public interface CategoryRepository extends BaseRepository

    相关文章

    JavaScript2024新功能:Object.groupBy、正则表达式v标志
    PHP trim 函数对多字节字符的使用和限制
    新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
    使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
    为React 19做准备:WordPress 6.6用户指南
    如何删除WordPress中的所有评论

    发布评论