com.github.zlcb:zlsdk-codegen

zlsdk-codegen is a lightweight code generator.


License
GPL-3.0

Documentation

目录

项目介绍

  • zlsdk-codegen是一款开源的代码生成工具包。目前可以生成Entity、Mapping、Mapper、Service、Controller代码,很大程度上降低了开发人员的工作量
  • 适用于使用Springboot、Mybatis进行快速构建开发。提供简洁、灵活的API,使开发人员尽量只用关注上层代码

开发环境

  • JDK1.8
  • Maven3.0+

快速开始

  1. 在需要生成代码的项目中引入以下包:
<dependency>
    <groupId>com.github.zlcb</groupId>
    <artifactId>zlsdk-codegen</artifactId>
    <version>1.0.3</version>
    <optional>true</optional>
</dependency>

2、复制以下代码到主方法(main)(建议单独创建一个类

package com.github.zlcb.zlboot;

import com.github.zlcb.zlsdk.codegen.SmartCodeGenerator;
import com.github.zlcb.zlsdk.codegen.config.*;
import com.github.zlcb.zlsdk.codegen.database.Driver;

/**
 * @author Zhongl
 * @date 2020/05/23 18:33
 */
public class CodeGenApp {

    public static void main(String[] args) {
    	SmartCodeGenerator.run(GlobalConfig.configurer()
                .dataSource(DataSourceConfig.configurer()
                        .setDriver(Driver.MySql)
                        .setUrl("jdbc:mysql://localhost:3306/db?useSSL=false&serverTimezone=UTC")
                        .setUsername("root")
                        .setPassword("root")
                        .config())
                .config());
    }

}

3、修改数据源信息,启动 main() 方法

使用指南

依赖包说明

        <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>2.1.1</version>
        </dependency>
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.13</version>
        </dependency>

配置类说明

GlobalConfig
配置项 配置说明 是否必须 默认值
basePackage 基础包名,用于生成其他类时,作为包的前缀,例如:com.github.zlcb.service com.github.zlcb
mappingPackage 映射文件包名 mapping
author 类文件注释中的@author CodeGen
dataSource 代码生成的数据源 默认为空,详见DataSource
strategy 代码生成策略 默认策略,详见StrategyConfig
template 生成代码的模板(默认使用velocity) 默认模板,详见TemplateConfig
customizer 自定义数据入口
DataSource
配置项 说明 是否必须 默认值
driver 数据库驱动(枚举) true
driverName 数据库驱动名称 com.mysql.cj.jdbc.Driver,低版本需要修改为:com.mysql.jdbc.Driver
url 数据库连接地址
username 数据库用户名 true
password 数据库用户密码
StrategyConfig
配置项 说明 是否必须 默认值
generateBase 是否生成基类,包含:IMapper、IService、BaseService false
generateEntity 是否生成实例类 true
generateMapping 是否生成数据映射文件 true
generateMapper 是否生成数据访问类 true
generateService 是否生成服务接口和服务实现类 true
generateController 是否生成访问控制类 true
allowOverrideFile 文件已存在时,是否允许直接覆盖旧文件 false
allowRepeatFile 是否允许生成重复文件,在不允许覆盖旧文件的情况下生效,以时间戳为后缀的方式生成新文件 true
tablePrefix 表名前缀,生成类名时,忽略指定的表前缀
fixedTableNames 指定需要生成的表
ignoreTableNames 指定需要忽略的表,在未指定需要生成表的情况下生效
TemplateConfig
配置项 说明 是否必须 默认值
iMapper IMapper接口模板,暂时不允许自定义 /codegen/imapper.java.vm
iService IService接口模板,暂时不允许自定义 /codegen/iservice.java.vm
baseService BaseService类模板,暂时不允许自定义 /codegen/baseService.java.vm
r R类模板,暂时不允许自定义 /codegen/r.java.vm
mapping 数据映射文件模板,可自定义 /codegen/mapping.xml.vm
entity 实体类文件模板,可自定义 /codegen/entity.java.vm
mapper 数据访问类文件模板,可自定义 /codegen/mapper.java.vm
service 服务接口文件模板,可自定义 /codegen/service.java.vm
serviceImpl 服务实现类文件模板,可自定义 /codegen/serviceImpl.java.vm
controller 访问控制类文件模板,可自定义 /codegen/controller.java.vm
PackageConfig(内置)
配置项 说明 值(根据basePackage解析来)
iMapper IMapper接口模板,暂时不允许自定义 ${basePackage}.common.mapper
iService IService包名 ${basePackage}.common.service
baseService BaseService包名 ${basePackage}.common.service
r R类包名 ${basePackage}.common
entity 实体类包名 ${basePackage}.entity
mapper 数据访问类包名 ${basePackage}.mapper
service 服务接口包名 ${basePackage}.service
${basePackage}.service.impl
controller 访问控制类包名 ${basePackage}.controller
OutputPathConfig(内置)
配置项 说明 值(根据basePackage解析来)
iMapper IMapper生成目录 ${user.dir}/src/main/java/${basePackage}/common/mapper
iService IService生成目录 ${user.dir}/src/main/java/${basePackage}/common/service
baseService BaseService生成目录 ${user.dir}/src/main/java/${basePackage}/common/service
r R类生成目录 ${user.dir}/src/main/java/${basePackage}b/common
entity 实体类生成目录 ${user.dir}/src/main/java/${basePackage}/entity
mapper 数据访问类生成目录 ${user.dir}/src/main/java/${basePackage}/mapper
service 服务接口生成目录 ${user.dir}/src/main/java/${basePackage}/service
${user.dir}/src/main/java/${basePackage}/service/impl
controller 访问控制类生成目录 ${user.dir}/src/main/java/${basePackage}/controller

方法说明

run()
package com.github.zlcb.zlboot;

import com.github.zlcb.zlsdk.codegen.SmartCodeGenerator;
import com.github.zlcb.zlsdk.codegen.config.*;
import com.github.zlcb.zlsdk.codegen.database.Driver;

/**
 * @author Zhongl
 * @date 2020/05/23 18:33
 */
public class CodeGenApp {

    public static void main(String[] args) {
        SmartCodeGenerator.run(GlobalConfig.configurer()
                .basePackage("com.github.zlboot")
                .mappingPackage("mapping")
                .author("CodeGen")
                .dataSource(DataSourceConfig.configurer()
                        .setDriver(Driver.MySql)
                        .setDriverName("com.mysql.cj.jdbc.Driver")
                        .setUrl("jdbc:mysql://localhost:3306/db?useSSL=false&serverTimezone=UTC")
                        .setUsername("root")
                        .setPassword("root")
                        .config())
                .strategy(StrategyConfig.configurer()
                        .setGenerateBase(true) //是否生成基类
                        .setGenerateEntity(true) //是否生成Entity
                        .setGenerateMapper(true) //是否生成Mapper
                        .setGenerateService(true) //是否生成Service,包含接口和实现
                        .setGenerateController(true) //是否生成Controller
                        .setGenerateMapping(true) //是否生成mapping映射文件
                        .addFixedTableNames("up_application") //指定生成的表
                        .addIgnoreTableNames("") //指定忽略的表,在未指定生成表的情况下才会生效
                        .setTablePrefix("up_") //指定表前缀,生成类名时,忽略指定的表前缀
                        .setAllowOverrideFile(false)
                        .setAllowRepeatFile(true)
                        .config())
                .template(TemplateConfig.configurer()
                        .setEntityFileName("/codegen/entity.java.vm")
                        .setMapperFileName("/codegen/mapper.java.vm")
                        .setServiceFileName("/codegen/service.java.vm")
                        .setServiceImplFileName("/codegen/serviceImpl.java.vm")
                        .setControllerFileName("/codegen/controller.java.vm")
                        .setMappingFileName("/codegen/mapping.java.vm")
                        .config())
                .metadata(new MetaDataCustomizer() {
                    @Override
                    protected void customize() {
                        this.push("name", "Zhongl");
                        this.push("age", 18);
                    }
                })
                .config());
    }

}
peek()(查看表信息)

查看表的相关信息,在需要指定生成表的时候可以先行查看相关表信息

package com.github.zlcb.zlboot;

import com.github.zlcb.zlsdk.codegen.SmartCodeGenerator;
import com.github.zlcb.zlsdk.codegen.config.*;
import com.github.zlcb.zlsdk.codegen.database.Driver;

/**
 * @author Zhongl
 * @date 2020/05/23 18:33
 */
public class CodeGenApp {

    public static void main(String[] args) {
		SmartCodeGenerator.peek(DataSourceConfig.configurer()
                .setDriver(Driver.MySql)
                .setUrl("jdbc:mysql://localhost:3306/db?useSSL=false&serverTimezone=UTC")
                .setUsername("root")
                .setPassword("root")
                .config());
    }
}
以上代码输出:
=============================
NAME             COMMENT     
================ ============
up_application   应用系统        
up_dept          部门信息        
up_role          角色信息        
up_user          人员信息        
up_user_dept_rel 人员部门关系      
up_user_role_rel 人员角色关系      
=============================
Rows:6
peek()(查看表字段信息)
package com.github.zlcb.zlboot;

import com.github.zlcb.zlsdk.codegen.SmartCodeGenerator;
import com.github.zlcb.zlsdk.codegen.config.*;
import com.github.zlcb.zlsdk.codegen.database.Driver;

/**
 * @author Zhongl
 * @date 2020/05/23 18:33
 */
public class CodeGenApp {

    public static void main(String[] args) {
		SmartCodeGenerator.peek(DataSourceConfig.configurer()
                .setDriver(Driver.MySql)
                .setUrl("jdbc:mysql://localhost:3306/db?useSSL=false&serverTimezone=UTC")
                .setUsername("root")
                .setPassword("root")
                .config(), "up_application"); //指定表名
    }
}
以上输出内容:
====================================================================
NAME             DATA_TYPE PRIMARY_KEY AUTO_INCREMENT COMMENT       
================ ========= =========== ============== ==============
id               bigint    Yes         Yes            唯一标识          
name             varchar   No          No             应用名称          
code             varchar   No          No             应用代码          
uri              varchar   No          No             应用服务URL       
logo             blob      No          No             应用logo        
sub_logo         blob      No          No             应用副logo       
title            varchar   No          No             应用标题          
sub_title        varchar   No          No             应用副标题         
order_num        int       No          No             排序号           
status           char      No          No             状态            
create_user_id   varchar   No          No             创建者标识         
create_real_name varchar   No          No             创建者姓名         
create_time      datetime  No          No             创建时间          
update_user_id   varchar   No          No             更新者标识         
update_real_name varchar   No          No             更新者姓名         
update_time      datetime  No          No             更新时间          
--------------------------------------------------------------------
Rows:16

如何交流、反馈?