# 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 ~