# CURD_Templates **Repository Path**: zhu_hong_jun/curd_-templates ## Basic Information - **Project Name**: CURD_Templates - **Description**: mybatisplus controller层 CURD模板 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: v2.0 - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-11-10 - **Last Updated**: 2023-04-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 使用指南 - 更改项目名: - 根目录CURD_template根据对应项目改为XXX-project - 父工程xuecheng-plus-parent根据对应项目改为XXX-parent,同期修改.pom文件中的工程名 ![](/img/1.png) - 基础工程xuecheng-plus-base根据对应项目改为XXX-base,同期修改.pom文件中的工程名以及对父工程的依赖,最后修改工作包com.xuecheng为自有包 ![](/img/2.png) - 代码生成工程xuecheng-plus-generator根据对应项目改为XXX-generator,同期修改.pom文件中的工程名以及对base工程的依赖,最后修改工作包com.xuecheng为自有包 ![](/img/3.png) - 修改代码生成工程下的CodeAuto配置,需要修改的配置有: - 数据库相关:dbName、dbUrl、dbUsername、dbPassword - 工程相关:parent(工作包)、moduleName(具体模块名)、basePackageName(基础依赖模块名,如果和我的结构一致这里不用修改) - 自定义配置:uniqueKey(是否启动字段唯一性判断)、idToName(是否启动外联Id转Name),默认都是关闭 - 运行CodeAuto,会在根目录生成src文件夹,将其中的代码放置在对应的模块下(Controller --> api, service/mapper --> service, entity --> model, mapperXml --> resource) >PS1: Swagger文档默认开启,生成数据库模型对象时默认以数据库字段注释填充Swagger的Api描述,因此使用前请保证表字段注释的完备性,以便于Swagger文档的读取 >PS2:在实现查询功能时,考虑到查询条件可扩展性,我使用了Map接收前端参数,因此请求查询接口时的传参格式为url传参,如需考虑到可见性,应根据实际项目将查询请求参数拆分为对象 ## 模板更新记录 ### v1.1 原版的MybatisPlus模板并未对controller进行良好的生成,对此: - 引入以REST风格为访问URI的controller层 - 单个记录增删改 - 扩展功能:支持0或多条模糊查询条件的分页查询,该功能默认为所有表开启 - 可选功能:启用或禁用记录(必须具备status字段),该功能默认为具备status字段的所有表格开启 除了模板生成外,还定义了一些默认的接口或处理方法,减少重复造轮子 - 定义统一的后端->前端交互接口**Results** - Results为静态对象,封装有success和error方法 - 定义自动填充常用字段**AutoInitField**(在未主动赋值时) - 时间类:createTime, updateTime - 操作者类:createUser, updateUser(由于需借助ThreadLocal完成,为保持模板的简洁,此类的填充已注释) ### v1.2 bug修复记录: - 在v1.2版本中,我们修正了数据库中createTime, updateTime字段转出时,类型为Date而非LocalDateTime的bug,该bug是由于AutoCode中,将DateType设定为了ONLY_DATE导致的,采用默认设置即可使类型设置为LocalDateTime - 在v1.2版本中,我们修正了数据库中Long类型的id传回前端再返回后端而出现的末两位截断问题 ### v1.3 重要功能更新: - 删除操作以及修改status操作将支持批量进行,其API分别为: ```js // 批量删除操作 $axios({ url: '/entity', method: 'delete', params: { ids } }) // 批量修改status操作 $axios({ url: `/entity/status/${params.status}`, method: 'put', data: params.id }) ``` - 分页查询将自动将**外表关联id**替换为关联id对应的**name**字段返回 - 新增可选控制项**uniqueKey**:在数据库不支持或未设置**UNIQUE_KEY**时,自动对**username**或**name**进行唯一值判定(当两者同时存在时,只判定前者) ```java cfgParamsMap.put("uniqueKey", 0); // 1代表需要重复检测;0代表不需要重复检测,默认为0 ``` ### v2.0 功能更新: - 允许自定义排除表,在getTables中定义可变参数args,传入String数组作为待排除表的名称 - 新增自定义功能控制: - 字段idToName: 是否开启外联Id自动转Name功能,默认关闭 结构更新: - 采用微服务架构更新模板模块架构: - 整体放置在Parent工程项目下,由Parent进行版本管理 - Base模块依赖Parent,将原本的common包放置在Base模块下,为所有模块提供支持 - Templates模块依赖Base,实现代码自动生成