# tron-starter
**Repository Path**: gaolianrui/tron-starter
## Basic Information
- **Project Name**: tron-starter
- **Description**: springboot/脚手架/场景启动器/自定义starter
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: https://gitee.com/gaolianrui/tron-starter
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2019-11-27
- **Last Updated**: 2021-10-22
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
#### 版本依赖说明
```text
本项目spring-boot版本为:2.0.8.RELEASE
==如果要集成微服务==
推荐spring-cloud的版本为:Finchley.SR4
```
#### 本工程打包到本地后,即可新建一个普通的maven项目,按照“快速开始”的步骤使用该starter
```text
第一步:install tron-spring-boot-starter-autoconfigurer
第二步:install tron-spring-boot-starter
```
#### 快速开始
###### 第一步:pom引入依赖
```xml
org.springframework.boot
spring-boot-starter-parent
2.0.8.RELEASE
com.tron
tron-spring-boot-starter
1.0.0.RELEASE
test实际项目名
org.apache.maven.plugins
maven-compiler-plugin
8
8
org.springframework.boot
spring-boot-maven-plugin
cn.tron.Start实际项目的主程序类
repackage
```
#### yaml基础配置
###### 第二步:配置yaml
```yaml
spring:
profiles:
active: dev
--- #这里active配置是必须的,不然swagger不生效。因为生产环境是不需要swagger的,所以用active来控制
spring:
profiles: dev
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/mydb?useUnicode=true&useSSL=false&characterEncoding=utf8
username: root
password: 123456
tron:
swagger:
basepackage: com.tron #实际项目的包名
title: 标题
description: 说明
version: 版本
codegenerator:
author: 作者
isoverride: 是否覆盖代码
#-----------------------可选配置---resource目录下添加建表文件启动时自动建表----------------------
schema:
- classpath:schema.sql
data:
- classpath:data.sql
initialization-mode: always
```
#### 主启动类上添加注解
###### 第三步 mapper的包扫描,大概是这个样子的
```java
@SpringBootApplication
@MapperScan(value = {"com.test.web.mapper"})
public class Start {
public static void main(String[] args) {
SpringApplication.run(Start.class, args);
}
}
```
#### 代码生成器使用
###### 第四步:建表以后,在test目录下执行生成代码
```java
@RunWith(SpringRunner.class)
@SpringBootTest
public class Code {
@Autowired
CodeGenerator codeGenerator;
@Test
public void code() {
/**
* 前缀字段的作用是,生成实体的时候去除数据库字段前缀。 如f_id生成实体时,只保留id
* @param modelName 模块名单个
* @param tableName tableName表名,多个英文逗号分割
* @param tablePrefix tablePrefix表前缀,多个英文逗号分割
* @param fieldPrefix fieldPrefix字段前缀,多个英文逗号分割
*/
codeGenerator.run("web","t_test","t_","f_,a_");
}
}
```
#### 执行完以上步骤,我为您代劳了以下配置
```java
@EnableSwagger2 //swagger2的基础配置
@EnableScheduling //定时任务
@EnableAsync //异步任务
@EnableTransactionManagement //事物控制
@EnableAspectJAutoProxy //aop
public class Config{
}
@ControllerAdvice //统一错误处理优化,持续完善
public class BaseExceptionHandler {
}
//审计字段的自动填充,createTime createBy updateTime updateBy
//当然操作人的获取需要您的一点点小协助,
//需要在您的拦截器中把userName设置在请求头里面例如:request.setAttribute("userName","tron");
public class BaseMetaObjectHandler implements MetaObjectHandler {
}
//序列化器的配置
public HttpMessageConverters fastJsonHttpMessageConverters() {}
//跨域的配置
public CorsFilter corsFilter() {}
//当然少不了常用,而且好用的插件包引入 lombok fastJson... 至于其他插件的话,源码都在你手里了,自己加呗~~~
```
#### 注意事项
###### 第一:关于建表,请补齐字段说明。带审计字段,也就是需要继承base类的实体表,需要把审计字段也建好,大概是下面的样子。
```sql
DROP TABLE IF EXISTS t_test;
CREATE TABLE t_test(
id VARCHAR(100) NOT NULL COMMENT '主键id',
user_name VARCHAR(100) NOT NULL COMMENT '用户账号',
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
update_by VARCHAR(100) COMMENT '更新人',
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
create_by VARCHAR(100) COMMENT '创建人',
PRIMARY KEY (id),
UNIQUE KEY (user_name)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '测试表';
```
###### 第二:关于数据源,当前版本和druid有冲突(具体原因看下面),建议用框架默认的 Hikari
```text
Error attempting to get column 'create_time' from result set. Cause: java.sql.SQLFeatureNotSupportedException
3.1.0之前版本没问题,针对3.1.1以及后续版本出现上述问题
现象: 集成druid数据源,使用3.1.0之前版本没问题,升级mp到3.1.1+后,运行时报错:java.sql.SQLFeatureNotSupportedException
原因: mp3.1.1+使用了新版jdbc,LocalDateTime等新日期类型处理方式升级,但druid不支持,参考issue
解决方案: 1. 坐等druid升级解决这个问题;2.保持mp版本3.1.0;3.紧跟mp版本,换掉druid数据源
mybatis-plus 官方原话~~~我就不啰嗦了
```
#### 使用小贴士
```text
swagger访问页 http://localhost:8080/doc.html
当前版本的自动生成代码包含单表的CRUD(包含分页),如果您看不上的话,到templates/controller.java.ftl修改即可~
```
#### 末了
~ enjoy it ~