什么是 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