基于SpringBoot的代码自动生成
条目 | 条目说明 |
---|---|
作者 | 田乐乐 |
版本号 | v1.0 |
版本描述 | 新增 |
目录
文章目录
使用技术
框架:SpringBoot、Mybatis/Mybatis-plus
其他:lombok、druid、velocity
一、背景
1、项目中多人开发,使用JDK1.6,IDE编译使用JDK1.5。一人使用1.6在项目上添加注解,部分使用1.5编译报错。
2、框架搭建,使用简单工厂创建Service对象。开发项目代码中存在不使用该框架单独创建对象操作。
3、DAO实现类中,对数据库表进行CRUD,使用Date替换HiveQL中相应的占位符,使用SimpleDateFormat对时间进行parse()操作,一定概率下会导致并发问题。
当微服务项目启动,使用JDK1.8解决了上述部分问题,但是有没有能够类似想方正平台简化部分开发呢?
二、需求
基于以上背景,现需要一套解决方案从而规范开发,提高开发效率。
实现目标:spring/springboot/springCloud项目代码自动生成。
三、优势
3.1、规范开发
代码自动生成带来的第一个好处就是开发规范,本身因为考虑是否是编译错误引起的不必要麻烦。
另外,使用JDK1.8,也算是从刚开始就解决了一些并发问题。比如在JDK1.8中java.time包新增一些类就对此种并发问题进行了解决——新日期时间API。
3.2、提高开发效率
3.2.1不再需要进行繁琐的手动逆向工程
虽然使用插件可以手动进行逆向工程(数据库表、字段生成对应的POJO、mapper;生成对应的DAO、Service及其实现、生成规则配置等),比如EasyCode。但是如果使用自定义代码,生成更多对应产物,可以更加方便的完成开发,提高开发效率,比如生成单元测试的json文件(为满足所有DAO、Service单元测试100%的覆盖率和单元测试单元测试本身语句覆盖率的70%使用)、快速开发产品化需要新增的SQL(为满足产品化新增页面)等等。
四、设计思路
4.1、数据库连接
pom.xml部分内容如下(依赖未做删减):
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<mybatis.spring.boot.version>1.3.0</mybatis.spring.boot.version>
<druid.version>1.0.28</druid.version>
<commons.lang.version>2.6</commons.lang.version>
<commons.io.version>2.5</commons.io.version>
<commons.configuration.version>1.10</commons.configuration.version>
<fastjson.version>1.2.45</fastjson.version>
<velocity.version>1.7</velocity.version>
<pagehelper.spring.boot.version>1.2.5</pagehelper.spring.boot.version>
<mysql.version>5.1.38</mysql.version>
<mssql.version>4.0</mssql.version>
<oracle.version>11.2.0.3</oracle.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis.spring.boot.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>${commons.lang.version}</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>