# spring-boot-starter-tool-model **Repository Path**: mrengui/spring-boot-starter-tool-model ## Basic Information - **Project Name**: spring-boot-starter-tool-model - **Description**: Spring-boot-starter-tool-moedl 是基于jdk 17,springframework 3.0.1的自动化实现数据增删改查的依赖。 可以使用极少的代码,实现数据对象的增删改查以及后台管理界面生成,让后端java开发者从繁琐的curd中解放双手,省去繁琐的前后端联调操作 - **Primary Language**: Java - **License**: MulanPSL-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 11 - **Forks**: 0 - **Created**: 2022-08-15 - **Last Updated**: 2025-02-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: SpringBoot, curd, Java ## README

Spring-boot-starter-tool-model

Java Language, Spring Framework MulanPSL2

产品官网 | 下载地址 | 文档资源 | 体验环境


## 项目介绍

Spring-boot-starter-tool-moedl 是基于jdk 17,springframework 3.0.1的自动化实现数据增删改查的依赖。 可以使用极少的代码,实现数据对象的增删改查以及后台管理界面生成,让后端java开发者从繁琐的curd中解放双手,省去繁琐的前后端联调操作

## 如何使用 ### 导入依赖

项目中已经包含了一个spring-boot项目的大部分必须依赖,因此只需要在项目中导入依赖代码即可

``` cn.xisoil spring-boot-starter-tool-model 1.1.3-RELEASE ```

如果项目需要lombok,您依旧需要导入lombok

```agsl org.projectlombok lombok 1.18.24 ``` ### 开启扫描

基于springboot,您需要在启动文件上标注以下注解,@EnableModel为本项目启动注解方法

``` @SpringBootApplication(scanBasePackages={"xx.xxx.*"}) @EnableModel @EnableJpaAuditing @EnableTransactionManagement @EnableAsync @EnableModel//开启注解 ``` ### 一些基本配置

在springboot的配置基础上,spring-boot-starter-tool-model新增了某些配置,它具有某些默认值,也可以忽略

```agsl yue: equipment: windows//可选值,linux/windows,意义不大,某些情况下的端口占用会依靠它来解决 socketio://用于支付回调的socket信息,其他配置参考netty host: 0.0.0.0 port: 9009 auto: check: false//是否自动检查数据,项目首次启动需要开启此处,项目会做一些数据的初始化操作 user://开启检查时会初始化管理员账户 username: xxx password: xxx package: controller: xx.xx.xx//控制层代码生成位置 persistent: xx.xx.xx//持久层代码生成位置 ```

在完成以上配置后即可成功启动项目,访问地址:http://ip:port/admin,这样就完成了基本的项目配置,后台数据已经完成了初始化并且包含了一些基础的栏目

## 思想:约定大于配置

在自动生成的后台中接口调用中,我们已经做了某些约定。

## 高阶操作:更好的实现CURD 以下是实体类注解 为方便理解,下面展示了一个较为完整的类 ``` @Data @Entity(name = "Basic") @Table(name = "BasicInfo") //trusteeship不为空时会自动生成持久层与控制层,只需要一个实体类,就能自动实现增删改查 @CurdModelObject(name = "基本信息",trusteeship = @CurdTrusteeShipObject(auto = false)) @EntityListeners(AuditingEntityListener.class) public class BasicInfo { @Id @GeneratedValue(generator="system-uuid") @GenericGenerator(name="system-uuid", strategy = "uuid") @Column(columnDefinition = "varchar(32)") private String id; //描述title @CurdModel(value = "网站主题") @NotBlank(message = "网站主题不能为空") private String title; //可以指定type @CurdModel(value = "ico图标",type = YueColumnsType.IMAGE) private String ico; @CurdModel(value = "logo1",type = YueColumnsType.IMAGE) private String logo; @CurdModel(value = "logo2",type = YueColumnsType.IMAGE) private String blogo; @CurdModel(value = "公司版权") private String company; @CurdModel(value = "版权所有") private String copyright; @CurdModel(value = "通知地址") private String email; @CurdModel(value = "seo-标题",type = YueColumnsType.TEXTAREA) private String tdkTitle; @CurdModel(value = "seo-描述",type = YueColumnsType.TEXTAREA) private String tdkRemark; @CurdModel(value = "seo-关键词",type = YueColumnsType.TEXTAREA) private String tdkKeywords; //富文本 @CurdModel(value = "底部信息",type = YueColumnsType.RICHTEXT) @Lob private String footerInfo; } ``` ## 自带的数据统计 ``` @VisitIntercept(clazz = xxxx.class,key = "sectionname") ``` @VisitIntercept标记的方法会进行栏目访问统计。 #### 参数: - key: 优先级最高,不为空时记录key值作为栏目名称 - clazz: YueAnalysisInterface的实现类,该方法包含了两个方法,getName(String) 与getName(),参数需要与args同时使用,使用该参数会通过调用getName方法获取sectionName,用户可自行编写逻辑获取sectionName - args: 入参序号,当用户访问地址xxx?id=xxx时,request入参中第一个字段为id,则args=1,如果key值为空,则通过key值获取对应参数,调用YueAnalysisInterface的实现类的getSectionName方法获取sectionName ## 计划任务 使用案例,通过TaskService此方法实现的定时任务可以直接通过后台管理 ```agsl @Component public class TaskUtils extends TaskService{ public TaskUtils() { super("* * * * * ?"); } @Override public String getTaskName() { return "计划任务-输出时间"; } @Override public void run() { System.out.println(new Date().getTime()); } } ``` ## 文件上传 我们新了一个模块专门用来实现文件上传,因此,你可以单独使用此模块实现文件上传,不过,spring-boot-starter-tool-model中已经包含了upload-model,如果你使用了tool-model,则无需重新引入 ```agsl // 文件上传组件 cn.xisoil spring-boot-starter-upload-model 1.0.1-RELEASE ``` ### 使用方法 创建服务 ```agsl //创建一个minio客户端 MinioClient minioClient=UploadConfigClient .of(endpoint, bucketName, ak, sk) .minio() //创建一个OBS客户端 ObsClient minioClient=UploadConfigClient .of(endpoint, bucketName, ak, sk) .obs() //创建一个OSS客户端 OssClient minioClient=UploadConfigClient .of(endpoint, bucketName, ak, sk) .oss() ``` 操作文件 ```agsl //以minio举例 //上传 minioClient.upload(FileInfo) //FileInfo 包含了文件信息,其中name字段必填,剩下字段任选其一 //删除 minioClient.delete(filename); ```