又名大狼狗代码生成器,基于SpringBoot2+Freemarker的JAVA代码生成器,以释放双手为目的,支持mysql/oracle/pgsql三大数据库, 用DDL-SQL语句生成JPA/JdbcTemplate/Mybatis/MybatisPlus/BeetlSQL等相关代码.

Overview

SpringBootCodeGenerator


又名JAVA在线代码生成平台sql转java大狼狗代码生成器mybatis在线生成器SQL转Java JPA、MYBATIS实现类代码生成平台
image image image Build Status

Author

powered by Moshow郑锴(大狼狗) , https://zhengkai.blog.csdn.net

Description

Based on SpringBoot2+Freemarker
#基于SpringBoot2Freemarker的代码生成平台

For reducing the repetitive CRUD work
#以解放双手为目的,减少大量的重复CRUD工作

mainly support mysql, support oracle and pgsql as well
#支持MySQL、Oracle、PgSQL三大主流数据库

generate to many popular templates by ddl-sql/insert-sql/simple json
可通过建表SQL语句INSERT语句或者简单JSON生成JPA/JdbcTemplate/Mybatis/MybatisPlus/BeetlSQL/CommonMapper相关模板代码.

thanks for your using and feedback,I'm inspired by the 600PV every day and github more than 900 stars
感谢大家的使用和反馈,每天六百的PV和获得超过九百多的星星是我前进和继续做下去的动力。

hope everyone can keep good balance on work and life , stay health and safety , be smooth on work as well
愿大家可以维持生活和工作平衡,保持健康和安全,祝大家工作顺利!

Tips or Features

  • 支持DDL SQL/INSERT SQL/SIMPLE JSON三种生成模式
  • 自动记忆最近生成的内容,最多保留9个
  • 提供众多通用模板,易于使用,复制粘贴加简单修改即可完成CRUD操作
  • 支持特殊字符模板(#请用代替;$请用代替)
  • Util集合提供一些基本对象的使用方法供方便COPY,如对应的CRUD SQL语句、setMap、getMap、get属性等等
  • 关于类名注释,可根据comment=(mysql)或者comment on table(pgsql/oracle)生成
  • 可设置是否自动引包(java中的import)及引入包路径(java类中的package),建议取消并配合IDEA的自动引包更智能(Settings→Editor→General→Auto Import,勾选Add unambiguous imports on the fly以及Optimize imports on the fly)。
  • 可设置表名前缀,例如sys_user前缀为sys_之后可以正确生成user类
  • 可在applicaltion.yml中的OEM.mode设置js/css引入模式local(本地模式,默认)/CDN(云CDN模式,在线网站推荐,省流量)
  • OEM信息可以在applicaltion.yml中的OEM中更改

Url

感谢卡卡将他部署在BEJSON上,目前是besjon专供的金牌工具(线上版本不一定是最新的,会有延迟,请谅解,谢谢).

感谢三叔将他部署在DEVTOOLS上,继续作为Golden Tool开放给大家使用。

Thanks for JetBrains providing us the Licenses for Open Source DevelopmentGet free access to all JetBrains tools for developing your open source project! .

访问地址 http://localhost:1234/generator
BEJSON 在线地址 https://java.bejson.com/generator
DEVTOOLS 在线地址 https://java.devtools.cn
CSDN BLOG https://zhengkai.blog.csdn.net
GITEE仓库 https://gitee.com/moshowgame/SpringBootCodeGenerator/releases
GITHUB仓库 https://github.com/moshowgame/SpringBootCodeGenerator

Update Logs

更新日期 更新内容
2021.08.07 新增当前模板保持功能,重新生成代码后依然会保持在当前选择模板。
新增renren-fast模板。
2021.08.05 解决 update 方法语法错误;调整部分语句避免sonarLint告警(感谢@Henry586的PR);
add swagger-yml.ftl(感谢@fuuqiu的PR);
支持common-mapper&修复entity和plusentity的swagger引包错误(感谢@chentianming11的PR)
2021.03.24 修复Mybatis.XML中缺失test=关键字问题。(感谢@BWHN/YUEHUI的反馈)。
2021.01.18 OEM信息优化,支持多配置文件模式,支持在application*.yml自定义信息,以及切换local/cdn模式。
2021.01.17 生成后自动trim掉前后空格输出。
完善ReadMe文档。
优化云CDN引入部分。
优化returnUtil部分。
表明前缀选项(感谢@wwlg的建议)。
是否带字段注释设置(感谢@fengpojian的建议)。
优化Mybatis的''!=判断(感谢@zhongsb的建议)。
Mybatis-Plus增加Service层(感谢@yf466532479的建议)。
2021.01.16 全新3.0版本:
一、前端半vue半js化,更多动态加载项。
二、支持更多生成设置,优化生成场景。
三、js导入支持本地/CDN模式,支持断网环境轻松使用。
2020.10.22 1.tinyint多加一个Short类型转换(感谢@wttHero的建议)
2020.10.20 1.修复mapper2 insert代码问题(感谢@mXiaoWan的PR)
2.优化对fulltext/index关键字的处理(感谢@WEGFan的反馈)。
3.新增日期类型的转换选择(感谢@qingkediguo的建议)。
4.新增是否包装类型的转换选择(感谢@gzlicanyi的建议)。
2020.06.28 优化Util下的BeanUtil,支持更多map.put的操作。整合CRUD模板到SQL(CRUD)模板。
2020.06.21 修复FreemarkerUtil的Path问题导致JAR包运行时无法获取template的问题。
2020.05.25 1.一些fix,关于封装工具类以及layui模板优化等.
2.优化表备注的获取逻辑.
3.生成时间格式改为yyyy-MM-dd,移除具体的时间,只保留日期
2020.05.22 1.新增insert-sql模式,支持对"insert into table (xxx) values (xxx)"语句进行处理,生成java代码(感谢三叔的建议).
2020.05.17 1.代码重构!异常处理优化,Freemarker相关工具类优化,简化模板生成部分,通过template.json来配置需要生成的模板,不需要配置java文件.
2.修复包含comment关键字时注释无法识别的问题.(感谢@1nchaos的反馈).
3.赞赏优化,感谢大家的赞赏.
4.新增mapper2(Mybatis-Annotation模板)(感谢@baisi525和@CHKEGit的建议).
2020.05.03 1.优化对特殊字符的处理,对于包含#和$等特殊字符的,在模板使用井和¥代替便可,escapeString方法会自动处理.
2.优化mybatisplus实体类相关(感谢@chunchengmeigui的反馈).
3.修优化对所有类型的判断(感谢@cnlw的反馈).
4.移除swagger-entity,该功能已经包含在‘swagger-ui’的下拉选项中
5.升级hutool和lombok版本
2020.03.06 1.提交一套layuimini+mybatisplus的模板.
2.修复mybatisplus一些相关问题.
2020.02.06 1.新增历史记录功能,自动保存最近生成的对象.
2.新增swagger开关选项和修复@Column带name参数(感谢@liuyu-struggle的建议).
3.去除mybatis模板中的方括号[]和修改模板里的类注释样式(感谢@gaohanghang的PR)
2019.12.29 1.修复bejson安全防护策略拦截问题(感谢@liangbintao和@1808083642的反馈).
2.优化字段名含date字符串的处理(感谢@smilexzh的反馈).
3.控制台动态输出项目访问地址(感谢@gaohanghang的提交)
2019.11.28 1.修复支持string-copy导致的以n结尾的字母不显示问题.
2.jpa-entity新增swagger@ApiModel@ApiModelProperty注解和SQL字段@Column注解(感谢@yjq907的建议)
2019.11.26 1.springboot2内置tomcat更换为性能更强大的undertow.
2.修复tinyintTransType参数丢失问题
2019.11.24 1.java代码结构优化.
2.新增简单的json生成模式.
3.新增简单的正则表达式匹配模式(感谢@ydq的贡献).
4.新增对复制String代码中的乱SQL代码的支持 5.优化对JSON的父子节点/处理,JSONObject和JSONArray节点处理,子节点缺失'{'头处理
2019.11.23 1.移除频繁出错和被过滤的layer,改为jquery-toast.
2.Util功能优化,新增json和xml.
2019.11.16 优化对primary关键字的处理(感谢@liujiansgit的反馈).
2019.11.15 1.添加tinyint类型转换(感谢@lixiliang&@liujiansgit的Suggestion).
2.添加一键复制功能(感谢@gaohanghang的Suggestion).
3.Mybatis的insert增加keyProperty="id"用于返回自增id(感谢@88888888888888888888的Suggestion).
4.优化date类型的支持(感谢@SteveLsf的反馈).
5.其他一些优化.
2019.10.15 修复jdbcTemplates中insert语句第一个字段丢失的问题.
2019.09.15 1.添加对象getset模板.
2.添加sql模板.
3.启动类添加日志输出,方便项目使用(感谢@gaohanghang 的pull request)
2019.09.10 优化以及更新Maven依赖,减少打包体积.
1.修复mapper接口load方法,但是xml中方法不匹配问题.
2.移除mapper中CRUD时的@param 注解,会影响xml的解析(感谢@caojiantao的反馈).
3.优化MyBatis的xml文件对Oracle的支持.(感谢@wylove1992的反馈).
4.新增对boolean的处理(感谢@violinxsc的反馈)以及优化tinyint类型生成boolean类型问题(感谢@hahaYhui的反馈)
2019.09.09 添加是否下划线转换为驼峰的选择(感谢@youngking28 的pull request).
2019.05.18 1.优化注释.
2.修改 mybatis模板中 controller注解.
3.修改 mybatis模板中 dao文件使用为 mapper文件.
4.修改 mybatis模板中 service实现类中的一个 bug.
5.修改 index.ftl文件中 mybatis模板的 dao -> mapper(感谢@unqin的pull request)
2019.05.11 优化mybatis模块的dao和xml模板,修改dao接口注解为@Repository,所有dao参数改为包装类,删除update语句最后的UpdateTime = NOW(),修改dao接口文件的方法注释使其更符合javaDoc的标准,修改insert语句增加插入行主键的返回,修改load的方法名为selectByPrimaryKey,修改xml的update语句新增动态if判空,修改xml的insert语句新增动态插入判空,更符合mybatisGenerator标准(感谢@Archer-Wen的贡献 ).
2019.04.29 新增返回封装工具类设置.
优化对oracle注释comment on column的支持(感谢@liukex反馈).
优化对普通和特殊storage关键字的判断(感谢@AhHeadFloating的反馈 ).
2019.02.11 提交gitignore,解决StringUtils.lowerCaseFirst潜在的NPE异常,校验修改为@RequestParam参数校验,lombok之@Data和@Slf4j优化,fix JdbcDAO模板类名显示为中文问题,WebMvcConfig整合MessageConverter,模板代码分类(感谢@liutf和@tfgzs的pull request).
2019.02.10 实体生成规则切换为包装类型,不再采用基本数据类型,为实体类生成添加显示的默认构造方法(感谢@h2so的pull request).
2019.01.06 修复处理number/decimal(x,x)类型的逻辑(感谢@arthaschan的反馈).
修复JdbcTemplates模板两处错误(感谢@everflourish的反馈).
2018.12.12 首页UI优化.
新增MybatisPlus模块(感谢@三叔同事的建议).
修复作者名和包名获取失败问题(感谢@Yanch1994的反馈).
2018.11.22 优化正则表达式点号的处理,优化处理字段类型,对number类型增加int,long,BigDecimal的区分判断(感谢@lshz0088的指导).
2018.11.08 修复非字段描述"KEY FK_xxxx (xxxx)"导致生成KEY字段情况(感谢@tornadoorz反馈).
2018.10.18 支持double(x,x)的类型,以及comment里面包含一些特殊字符的处理(感谢@tanwubo的反馈).
2018.10.10 CDN变更,修复CDN不稳定导致网页js报错问题.
2018.10.03 新增element-ui/bootstrap生成.
2018.10.02 修复公共CDN之Layer.js404问题,导致项目无法生成.
2018.09.27 优化COMMENT提取逻辑,支持多种复杂情况的注释(感谢@raodeming的反馈).
2018.09.26 全新BeetlSQL模块,以及一些小细节优化(感谢@三叔同事的建议).
2018.09.25 优化SQL表和字段备注的推断,包括pgsql/oralce的comment on column/table情况处理等.
2018.09.18 优化SQL类型推断.
优化PrimaryKey判断.
修复jpacontroller中Repository拼写错误问题.
2018.09.17 全新首页,静态文件全部采用CDN.新增jdbcTemplate模块.
2018.09.16 1.优化oracle支持,优化DDL语句中"或者'或者空格的支持.
2.补充char/clob/blob/json等类型,如果类型未知,默认为String.
2018.09.15 新增Swagger-UI模板.修复一些命名和导入问题.JPA的Entity默认第一个字段为Id,如果不是请手工修改.
2018.09.13 修复字段没有描述以及类型为DATE型导致的问题.新增JPA的Controller模板.
2018.08.31 初始化项目.新增JPA系列Entity+Repository模板.

ClassInfo/TableInfo

名称 说明
packageName 自定义的包名
authorName 自定义的作者名
tableName sql中的表名
className java类名
classComment sql表备注/java类备注
fieldName 字段名
fieldComment 字段备注

Options

名称 说明 默认值
作者 authorName zhengkai.blog.csdn.net
包名 packageName cn.devtools
返回(成功) returnUtilSuccess Return.SUCCESS
返回(失败) returnUtilFailure Return.ERROR
忽略前缀 ignorePrefix sys_
输入类型 dataType DDL SQL
TinyInt转换 tinyintTransType int
时间类型 timeTransType Date
命名类型 nameCaseType CamelCase/驼峰
是否包装类型 isPackageType true
是否swaggerUI isSwagger false
是否字段注释 isComment true
是否自动引包 isAutoImport
是否带包路径 isWithPackage
是否Lombok isLombok true

How to add a new template

  1. resources/templates/code-generator中找到对应类型
  2. COPY并编写freemarker模板文件.ftl
  3. 修改template.json文件,新增模板信息,页面可动态加载

Comments
  • oracle 注释不能添加在实体类里面默认是表字段

    oracle 注释不能添加在实体类里面默认是表字段

    CREATE TABLE "RKSJ_POPULATION_INFO" ( "ID" VARCHAR2(32 BYTE) NOT NULL , "BSRK" NUMBER(11) COMENT '用户名', "LRRK" NUMBER(11) , "LRRKZB" NUMBER(3,1) , "LRRKTB" CHAR(1 BYTE) , "LCRK" NUMBER(11) , "LCRKZB" NUMBER(3,1) , "LCRKTB" CHAR(1 BYTE) ); COMMENT ON COLUMN "RKSJ_POPULATION_INFO"."ID" IS '主表唯一标示'; COMMENT ON COLUMN "RKSJ_POPULATION_INFO"."BSRK" IS '本市人口'; COMMENT ON COLUMN "RKSJ_POPULATION_INFO"."LRRK" IS '流入人口'; COMMENT ON COLUMN "RKSJ_POPULATION_INFO"."LRRKZB" IS '流入人口占比'; COMMENT ON COLUMN "RKSJ_POPULATION_INFO"."LRRKTB" IS '流入人口同比增长还是下降(0:下降 1:增长)'; COMMENT ON COLUMN "RKSJ_POPULATION_INFO"."LCRK" IS '流出人口'; COMMENT ON COLUMN "RKSJ_POPULATION_INFO"."LCRKZB" IS '流出人口占比'; COMMENT ON COLUMN "RKSJ_POPULATION_INFO"."LCRKTB" IS '流出人口同比增长还是下降(0:下降 1:增长)';

    opened by liukex 3
  • 给作者贡献两个正则吧

    给作者贡献两个正则吧

    看了下源码,发现只是单纯的对ddl做了字符串的解析,既然是这种实现方式的话,其实完全可以用纯正则来处理了,而且甚至还可以用 js+html+一些js模板引擎 来实现一个纯静态页面的版本。贡献一下我的正则吧,供作者参考。

        //匹配整个ddl,将ddl分为表名,列sql部分,表注释
        private static final Pattern DDL_PATTERN = Pattern.compile("\\s*create\\s+table\\s+(?<tableName>\\S+)[^\\(]*\\((?<columnsSQL>[\\s\\S]+)\\)[^\\)]+?(comment\\s*(=|on\\s+table)\\s*'(?<tableComment>.*?)'\\s*;?)?$", Pattern.CASE_INSENSITIVE);
        //匹配列sql部分,分别解析每一列的列名 类型 和列注释
        private static final Pattern COL_PATTERN = Pattern.compile("\\s*(?<fieldName>\\S+)\\s+(?<fieldType>\\w+)\\s*(?:\\([\\s\\d,]+\\))?((?!comment).)*(comment\\s*'(?<fieldComment>.*?)')?\\s*(,|$)", Pattern.CASE_INSENSITIVE);
    
        public static void parse(String sql){
            Matcher matcher = DDL_PATTERN.matcher(sql);
            if (matcher.find()){
                String tableName = matcher.group("tableName");
                String tableComment = matcher.group("tableComment");
                System.out.println(tableName + "\t\t" + tableComment);
                System.out.println("==========");
                String columnsSQL = matcher.group("columnsSQL");
                if (columnsSQL != null && columnsSQL.length() > 0){
                    Matcher colMatcher = COL_PATTERN.matcher(columnsSQL);
                    while (colMatcher.find()){
                        String fieldName = colMatcher.group("fieldName");
                        String fieldType = colMatcher.group("fieldType");
                        String fieldComment = colMatcher.group("fieldComment");
                        if (!"key".equalsIgnoreCase(fieldType)){
                            System.out.println(fieldName + "\t\t" + fieldType + "\t\t" + fieldComment);
                        }
                    }
                }
            }
        }
    
        public static void main(String[] args){
            System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
            parse("CREATE TABLE `userinfo` (\n" +
                    "  `user_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID',\n" +
                    "  `username` varchar(255) NOT NULL COMMENT '用户名',\n" +
                    "  `addtime` datetime NOT NULL COMMENT '创建时间',\n" +
                    "  PRIMARY KEY (`user_id`)\n" +
                    ") ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户信息'");
            System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
            parse("CREATE TABLE `USER` (\n" +
                    "`ID` varchar(32) PRIMARY KEY COMMENT '主键',\n" +
                    "`password` varchar(32) NOT NULL COMMENT '密码',\n" +
                    "`username` varchar(32) NOT NULL COMMENT '用户'\n" +
                    ") ENGINE=InnoDB DEFAULT CHARSET=utf8;");
            System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
            parse("CREATE TABLE `tb_amount` (\n" +
                    "`ID` int(10) NOT NULL AUTO_INCREMENT,\n" +
                    "`PRODUCT_CODE` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '产品代码',\n" +
                    "`GENDER` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '性别(male,female)',\n" +
                    "`MIN_INSURED_AGE` int(3) NULL DEFAULT NULL COMMENT '最小投保年龄',\n" +
                    "`MAX_INSURED_AGE` int(3) NULL DEFAULT NULL COMMENT '最大投保年龄',\n" +
                    "`AMOUNT` double(10, 2) NULL DEFAULT NULL COMMENT '基本保额',\n" +
                    "`PREMIUM_RATE` double(10, 2) NULL DEFAULT NULL COMMENT '基本保费',\n" +
                    "`YEAR_NUM` int(3) NULL DEFAULT NULL COMMENT '缴费年限',\n" +
                    "`PREMIUM_TYPE` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '费率类型',\n" +
                    "`INSURANCE_PERIOD` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '保险期间(30年,60年)',\n" +
                    "`INSURANCE_PERIOD_TYPE` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '保险期间类型(如定期年0,定期岁1,终身2,以后终身对应值:200)',\n" +
                    "`PAY_MODE` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '交费方式',\n" +
                    "PRIMARY KEY (`ID`) USING BTREE\n" +
                    ") ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;");
        }
    

    输出内容:

    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    `userinfo`		用户信息
    ==========
    `user_id`		int		用户ID
    `username`		varchar		用户名
    `addtime`		datetime		创建时间
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    `USER`		null
    ==========
    `ID`		varchar		主键
    `password`		varchar		密码
    `username`		varchar		用户
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    `tb_amount`		null
    ==========
    `ID`		int		null
    `PRODUCT_CODE`		varchar		产品代码
    `GENDER`		varchar		性别(male,female)
    `MIN_INSURED_AGE`		int		最小投保年龄
    `MAX_INSURED_AGE`		int		最大投保年龄
    `AMOUNT`		double		基本保额
    `PREMIUM_RATE`		double		基本保费
    `YEAR_NUM`		int		缴费年限
    `PREMIUM_TYPE`		varchar		费率类型
    `INSURANCE_PERIOD`		varchar		保险期间(30年,60年)
    `INSURANCE_PERIOD_TYPE`		varchar		保险期间类型(如定期年0,定期岁1,终身2,以后终身对应值:200)
    `PAY_MODE`		varchar		交费方式
    
    opened by ydq 3
  • sql

    sql

    CREATE TABLE 'lab_model_evaluation' ( 'id' int(11) NOT NULL AUTO_INCREMENT, 'advertiser' varchar(50) DEFAULT NULL, 'model' varchar(50) DEFAULT NULL, 'model_type' varchar(50) DEFAULT NULL, 'removed' tinyint(1) DEFAULT NULL, 'creation' datetime DEFAULT NULL, 'last_modified' datetime DEFAULT NULL, 'version' int(11) DEFAULT NULL, 'index_sign' tinyint(1) NOT NULL DEFAULT 0, 'index_name' varchar(20) DEFAULT NULL, 'index_value' float DEFAULT NULL, 'index_placeholder1' varchar(20) DEFAULT NULL, 'figure_sign' tinyint(1) NOT NULL DEFAULT 0, 'figure_name' varchar(20) DEFAULT NULL, 'figure_series' varchar(20) DEFAULT NULL, 'figure_type' varchar(20) DEFAULT NULL, 'figure_is_x_float' tinyint(1) DEFAULT NULL, 'figure_x' varchar(20) DEFAULT NULL, 'figure_y' float DEFAULT NULL, 'figure_xname' varchar(20) DEFAULT NULL, 'figure_yname' varchar(20) DEFAULT NULL, 'figure_placeholder1' varchar(20) DEFAULT NULL, 'figure_placeholder2' varchar(20) DEFAULT NULL, 'feature_sign' tinyint(1) NOT NULL DEFAULT 0, 'feature_name' varchar(100) DEFAULT NULL, 'feature_is_positive' tinyint(1) DEFAULT NULL, 'feature_importance' float DEFAULT NULL, 'feature_shap' float DEFAULT NULL, 'feature_shuffle' float DEFAULT NULL, 'feature_lost' float DEFAULT NULL, 'feature_bs' float DEFAULT NULL, 'feature_placeholder1' varchar(20) DEFAULT NULL, 'feature_placeholder2' varchar(20) DEFAULT NULL, PRIMARY KEY ('id') ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    opened by A2Data 2
  • 字段备注分析时,正则不严谨

    字段备注分析时,正则不严谨

    1.正则表达式的点号前面应该加上两个反斜杠,否则会认为是任意字符。 该BUG导致我的.ID和.ROAD_ID的备注发生覆盖

    Matcher columnCommentMatcher = Pattern.compile("\\."+columnName+" is `").matcher(tableSql); // "\{(.*?)\}"

    2.处理字段类型的时候,不严谨 columnLine.contains(" int") 类似这种的,可在前后适当加一些空格之类的加以区分,否则当我的字段包含这些字符的时候,产生类型判断问题。

    3.建议对number类型增加int,long,BigDecimal的区分判断 以下是我自己加的:

    else if (columnLine.contains("decimal")||columnLine.contains("number")) {
                        	//如果startKh大于等于0,则表示有设置取值范围
                        	int startKh=columnLine.indexOf("(");
                        	if(startKh>=0){
                        		int endKh=columnLine.indexOf(")",startKh);
                        		String[] fanwei=columnLine.substring(startKh+1,endKh).split(",");
                        		if("0".equals(fanwei[1])){
                        			//如果没有小数位数
                        			int length=Integer.valueOf(fanwei[0]);
                        			if(length<=9){
                        				fieldClass = Integer.class.getSimpleName();
                        			}else{
                        				fieldClass = Long.class.getSimpleName();
                        			}
                        		}else{
                        			//有小数位数一律使用BigDecimal
                        			fieldClass = BigDecimal.class.getSimpleName();
                        		}
                        	}else{
                        		fieldClass = BigDecimal.class.getSimpleName();
                        	}
                        }
    
    opened by lshz0088 2
  • mybatis-plus的代码为何Controller直接调用了Mapper?

    mybatis-plus的代码为何Controller直接调用了Mapper?

    1.mybatis-plus的代码为何Controller直接调用了Mapper?

    那Service的代码 作用是什么?

    2.Service 接口,为何没有实现类

    3.我在Controller类中引入Service类 private final OmsOrderLogisticsService omsOrderLogisticsService;

    启动时报错 Parameter 0 of constructor in com.macro.mall.controller.OmsOrderLogisticsController required a bean of type 'com.macro.mall.service.OmsOrderLogisticsService' that could not be found.

    opened by feng99 1
  • bejson 提交ddl会被宝塔网站防火墙拦截

    bejson 提交ddl会被宝塔网站防火墙拦截

    bejson 提交ddl会被宝塔网站防火墙拦截

    image

    {"tableSql":"CREATE TABLE growth_device (\n  id bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键id',\n  device_id varchar(128) NOT NULL COMMENT '设备id',\n  identifier varchar(255) NOT NULL DEFAULT '' COMMENT '设备标识 oaid/idfa/idfv',\n  attribution_data varchar(4095) NOT NULL DEFAULT '' COMMENT '归因数据体',\n  app_version varchar(32) NOT NULL DEFAULT '' COMMENT 'app版本',\n  os varchar(32) NOT NULL DEFAULT '' COMMENT '手机系统 ios android',\n  created_at bigint(20) unsigned zerofill NOT NULL COMMENT '创建时间',\n  PRIMARY KEY (id);","options":{"dataType":"sql","authorName":"zhengkai.blog.csdn.net","packageName":"com.software.system","returnUtilSuccess":"ReturnT.success","returnUtilFailure":"ReturnT.error","isPackageType":true,"isSwagger":false,"isAutoImport":false,"isWithPackage":false,"isComment":true,"isLombok":true,"ignorePrefix":"sys_","tinyintTransType":"int","nameCaseType":"CamelCase","timeTransType":"Date"}}
    
    opened by xun404 1
  • 这个语句生成的mybatis 缺少id

    这个语句生成的mybatis 缺少id

    这个语句生成的mybatis 缺少id 貌似是解析的时候都不会有id这个字段,所以所有的模板都不会有id字段

    create table stu
    (
        id      int auto_increment
            primary key,
        name    varchar(255) null,
        stu_num varchar(222) null,
        sex     varchar(255) null,
        id_num  varchar(33)  null,
        email   varchar(33)  null
    );
    

    生成的部分代码

    <resultMap id="BaseResultMap" type="cn.edu.zucc.entity.Stu" >
        <result column="name" property="name" />
        <result column="stu_num" property="stuNum" />
        <result column="sex" property="sex" />
        <result column="id_num" property="idNum" />
        <result column="email" property="email" />
    </resultMap>
    
    <sql id="Base_Column_List">
                name,
                stu_num,
                sex,
                id_num,
                email
    </sql>
    
    opened by starplatinum3 2
  • 数据为datetime类型,但mybatis中还是对其进行为空判断报错。

    数据为datetime类型,但mybatis中还是对其进行为空判断报错。

    https://blog.csdn.net/beidaol/article/details/85061472 Cause: java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String 是由于 'create_time' datetime NOT NULL COMMENT '创建时间', 在mybatis mapper中进行了 create_time = #{createTime} 这样的判断。希望只对字符串进行为空判断,避免错误。

    opened by aimei54 0
  • 在根据表结构生成mybatis xml映射文件的时候update操作test if 表达式中'' != Object的问题

    在根据表结构生成mybatis xml映射文件的时候update操作test if 表达式中'' != Object的问题

    <if "null != amount and '' != amount"> #{amount}, 这个amount如果是Ingeger或者decimal类型 非空表达('' != amount)不合适吧, 另外: <if "null != createTime and '' != createTime">#{createTime}, 把空字符串跟date类型对比会报错的

    opened by leesang836 0
Releases(20230101)
  • 20230101(Jan 1, 2023)

    | 更新日期 | 更新内容 | |:-----------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 2023.01.01 | 新增GCP BigQuery/Dataflow JJS/QlikSense BI模板。 |
    | 2022.09.28 | MySQL to Java type conversion 数据库类型转换优化(感谢@jadelike得贡献) | | 2022.07.02 | add the script to install and run,添加批处理以便直接构建或运行项目。 |

    image

    java -jar "./generator-web/target/generator-web-3.0.jar"

    Source code(tar.gz)
    Source code(zip)
    generator-web-3.0.jar(24.07 MB)
  • 2022.02.09(Feb 9, 2022)

    更新日期 | 更新内容 -- | -- 2022.02.10 | 更新springboot、fastjson、lombok依赖(感谢@Abbykawai的建议)。 2022.02.09 | 新增JPA-STARP模板(感谢@starplatinum3的贡献)。 2022.01.11 | 优化mybatis的mapper文件生成(感谢@chendong的贡献)。 2021.10.31 | 优化当有索引和额外的换行时的解析逻辑(感谢@feitian124的贡献)。修复部分模板参数不对应(感谢@Thixiaoxiao的贡献)。新增cookie记录所需配置字段逻辑,避免重复配置(感谢@Thixiaoxiao的贡献)。

    运行方法,java -jar generator-web-3.0.jar

    Source code(tar.gz)
    Source code(zip)
    generator-web-3.0.jar(24.07 MB)
  • 3.2.0(Aug 7, 2021)

    2021.08.07 | 新增当前模板保持功能,重新生成代码后依然会保持在当前选择模板。新增renren-fast模板。 -- | -- 2021.08.05 | 解决 update 方法语法错误;调整部分语句避免sonarLint告警(感谢@Henry586的PR);add swagger-yml.ftl(感谢@fuuqiu的PR);支持common-mapper&修复entity和plusentity的swagger引包错误(感谢@chentianming11的PR)

    Source code(tar.gz)
    Source code(zip)
    generator-web-3.0.jar(23.43 MB)
  • 2021.01.18(Jan 17, 2021)

    |更新日期|更新内容| |:----|:----| |2021.01.18|OEM信息优化,支持多配置文件模式,支持在application*.yml自定义信息,以及切换local/cdn模式。| |2021.01.17|生成后自动trim掉前后空格输出。
    完善ReadMe文档。
    优化云CDN引入部分。
    优化returnUtil部分。
    表明前缀选项(感谢@wwlg的建议)。
    是否带字段注释设置(感谢@fengpojian的建议)。
    优化Mybatis的''!=判断(感谢@zhongsb的建议)。
    Mybatis-Plus增加Service层(感谢@yf466532479的建议)。 | |2021.01.16|全新3.0版本:
    一、前端半vue半js化,更多动态加载项。
    二、支持更多生成设置,优化生成场景。
    三、js导入支持本地/CDN模式,支持断网环境轻松使用。|

    Source code(tar.gz)
    Source code(zip)
    generator-web-3.0-bejson.jar(23.42 MB)
  • 20200621(Jun 21, 2020)

    准备近期更新一版到java.bejson.com/generator

    JAR包请移步: https://gitee.com/moshowgame/SpringBootCodeGenerator/releases/20200621

    Source code(tar.gz)
    Source code(zip)
  • 20200517(May 17, 2020)

    1.代码重构!异常处理优化,Freemarker相关工具类优化,简化模板生成部分,通过template.json来配置需要生成的模板,不需要配置java文件。 2.修复包含comment关键字时注释无法识别的问题。(感谢@1nchaos的反馈) 3.赞赏优化,感谢大家的赞赏 4.新增mapper2(Mybatis-Annotation模板)(感谢@baisi525和@CHKEGit的建议)

    Source code(tar.gz)
    Source code(zip)
  • 20200503(May 3, 2020)

    1.优化对特殊字符的处理,对于包含#和$等特殊字符的,在模板使用井和¥代替便可,escapeString方法会自动处理 2.优化mybatisplus实体类相关(感谢@chunchengmeigui的反馈) 3.修优化对所有类型的判断(感谢@cnlw的反馈) 4.移除swagger-entity,该功能已经包含在‘swagger-ui’的下拉选项中 5.升级hutool和lombok版本

    Source code(tar.gz)
    Source code(zip)
  • r20191229.03152e5(Dec 29, 2019)

  • r20191128.b7861ca(Nov 28, 2019)

  • r20191126.a68989b(Nov 26, 2019)

    1.java代码结构优化. 2.新增简单的json生成模式 3.新增简单的正则表达式匹配模式(感谢@ydq的贡献) 4.新增对复制String代码中的乱SQL代码的支持 5.优化对JSON的父子节点/处理,JSONObject和JSONArray节点处理,子节点缺失'{'头处理 6.springboot2内置tomcat更换为性能更强大的undertow 7.修复tinyintTransType参数丢失问题

    Source code(tar.gz)
    Source code(zip)
    generator-web-r20191126.a68989b.zip(19.80 MB)
  • r20191126.65b0584(Nov 26, 2019)

    1.java代码结构优化. 2.新增简单的json生成模式 3.新增简单的正则表达式匹配模式(感谢@ydq的贡献) 4.新增对复制String代码中的乱SQL代码的支持 5.优化对JSON的父子节点/处理,JSONObject和JSONArray节点处理,子节点缺失'{'头处理

    Source code(tar.gz)
    Source code(zip)
  • 20191115(Nov 14, 2019)

    1.添加tinyint类型转换(感谢@lixiliang&@liujiansgit的Suggestion) 2.添加一键复制功能(感谢@gaohanghang的Suggestion) 3.Mybatis的insert增加keyProperty="id"用于返回自增id(感谢@88888888888888888888的Suggestion) 4.优化date类型的支持(感谢@SteveLsf的反馈) 5.其他一些优化. 6.优化对primary关键字的处理(感谢@liujiansgit的反馈).

    Source code(tar.gz)
    Source code(zip)
Owner
Moshow郑锴
Senior Software Engineer
Moshow郑锴
Spring Boot JdbcTemplate example with SQL Server: CRUD Rest API using Spring Data JDBC, Spring Web MVC

Spring Boot JdbcTemplate example with SQL Server: Build CRUD Rest API Build a Spring Boot CRUD Rest API example that uses Spring Data Jdbc to make CRU

null 7 Dec 20, 2022
Short Java programs for practice (OCP) Oracle Certified Professional Java SE 11

OCP-study Short Java programs to practice for (OCP) Oracle Certified Professional Java SE 11 Exam Google document with notes: https://docs.google.com/

Sabina Matjašič 1 May 24, 2022
Spring REST API for financial management, developed with Java 11, JWT for authentication, JUnit for unit testing and Oracle Database

control_financial Spring REST API for financial management, developed with Java 11, JWT for authentication, JUnit for unit testing and Oracle Database

Vinicius Cassaro 1 May 27, 2022
GitHub Action to download and install Oracle's Java Development Kit builds

oracle-actions/setup-java This action downloads a Java Development Kit (JDK) built by Oracle and installs it using actions/setup-java. JDKs built by O

Oracle GitHub Actions 43 Dec 15, 2022
mall学习教程,架构、业务、技术要点全方位解析。mall项目(40k+star)是一套电商系统,使用现阶段主流技术实现。涵盖了SpringBoot 2.3.0、MyBatis 3.4.6、Elasticsearch 7.6.2、RabbitMQ 3.7.15、Redis 5.0、MongoDB 4.2.5、Mysql5.7等技术,采用Docker容器化部署。

mall学习教程 简介 mall学习教程,架构、业务、技术要点全方位解析。mall项目(40k+star)是一套电商系统,使用现阶段主流技术实现。涵盖了SpringBoot 2.3.0、MyBatis 3.4.6、Elasticsearch 7.6.2、RabbitMQ 3.7.15、Redis 5

macro 11.7k Jan 8, 2023
mall-swarm是一套微服务商城系统,采用了 Spring Cloud Hoxton & Alibaba、Spring Boot 2.3、Oauth2、MyBatis、Docker、Elasticsearch、Kubernetes等核心技术,同时提供了基于Vue的管理后台方便快速搭建系统。mall-swarm在电商业务的基础集成了注册中心、配置中心、监控中心、网关等系统功能。文档齐全,附带全套Spring Cloud教程。

mall-swarm 友情提示 快速体验项目:在线访问地址。 全套学习教程:《mall学习教程》。 Spring Cloud全套教程:《SpringCloud学习教程》。 专属学习路线:学习不走弯路,整理了套非常不错的《mall专属学习路线》。 项目交流:想要加群交流项目的朋友,可以加入mall项目

macro 9.7k Jan 3, 2023
springboot 框架与其它组件结合如 jpa、mybatis、websocket、security、shiro、cache等

致歉 由于自己懒以及身体对issuse 解决的不及时。请大家以后提issuse 的时候写清楚 模块名 比如“springboot-SpringSecurity4” 和问题,我会抽时间抓紧解决。 springboot-SpringSecurity0 包含两部分代码: 第一是 博客 springboot

abel 5.9k Jan 5, 2023
SpringBlade 是一个由商业级项目升级优化而来的SpringCloud分布式微服务架构、SpringBoot单体式微服务架构并存的综合型项目,采用Java8 API重构了业务代码,完全遵循阿里巴巴编码规范。采用Spring Boot 2.4 、Spring Cloud 2020 、Mybatis 等核心技术,同时提供基于React和Vue的两个前端框架用于快速搭建企业级的SaaS多租户微服务平台。

SpringBlade微服务开发平台 采用前后端分离的模式,前端开源两个框架:Sword (基于 React、Ant Design)、Saber (基于 Vue、Element-UI) 后端采用SpringCloud全家桶,并同时对其基础组件做了高度的封装,单独开源出一个框架:BladeTool B

Chill 5.9k Jan 7, 2023
Guns基于SpringBoot 2,致力于做更简洁的后台管理系统,完美整合springmvc + shiro + mybatis-plus + beetl!Guns项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),可以直接作为一个后台管理系统的脚手架!

Guns基于Spring Boot2,致力于做更简洁的后台管理系统。包含系统管理,代码生成,多数据库适配,SSO单点登录,工作流,短信,邮件发送,OAuth2登录,任务调度,持续集成,docker部署等功。支持Spring Cloud Alibaba微服务。社区活跃,版本迭代快,加群免费技术支持。

冯硕楠 3.6k Jan 5, 2023
开源论坛、问答系统,现有功能提问、回复、通知、最新、最热、消除零回复功能。功能持续更新中…… 技术栈 Spring、Spring Boot、MyBatis、MySQL/H2、Bootstrap

码问社区 在线演示地址 www.mawen.co 功能列表 开源论坛、问答系统,现有功能提问、回复、通知、最新、最热、消除零回复功能。功能持续更新中…… 技术栈 技术 链接 Spring Boot http://projects.spring.io/spring-boot/#quick-start

小匠 2.3k Dec 30, 2022
一个小而美的低代码全栈开发平台,一键生成后端api接口+前端页面代码+在线接口文档,节省50%的前后端开发的工作量。基于springboot +mybatis+spring security+vue 技术栈

YOMA [toc] 一个小而美的低代码全栈开发平台,一键生成后端api接口+前端页面代码+在线接口文档,节省50%的前后端开发的工作量,平台代码100%开源。平台适用于企业信息化、政务、中小型互联网等项目 平台采用前后端分离架构,基于如下流行的开源框架,易上手+便于后期维护 后端:https://

Shihao Ma 149 Dec 9, 2022
参考 DDD/Clean Architecture 设计理念,整合 Spring Boot/Spring Security/Mybatis Plus/Vavr 的 Spring Realworld 应用案例

Demo · 更多项目 · 参考资料 ms-spring-ddd-examples Unified Domain-driven Layered Architecture for MicroService Apps,试图探索一套切实可行的应用架构规范,可以复制、可以理解、可以落地、可以控制复杂性的指导

王下邀月熊 19 Sep 23, 2022
Java 项目快速开发脚手架。核心技术采用 SpringBoot、MyBatis、Thymeleaf、Bootstrap。

前言 闲来无事,整一个 Java 项目快速开发脚手架。 正文 一、简介 Chewing 是一个简单的 Java 项目快速开发脚手架。既适合需要开发小型项目的小伙伴使用,也适合刚入门的新手用来学习一些常用的技术。 二、源码 Github:https://github.com/jingqueyimu/c

null 33 Sep 26, 2022
以教学为目的的电商系统。包含ToB复杂业务、互联网高并发业务、缓存应用;DDD、微服务指导。模型驱动、数据驱动。了解大型服务进化路线,编码技巧、学习Linux,性能调优。Docker/k8s助力、监控、日志收集、中间件学习。前端技术、后端实践等。主要技术:SpringBoot+JPA+Mybatis-plus+Antd+Vue3。

简介 bcMall 是一个以教学为目的的电商系统。bcMall将为你展现一个典型的系统演进过程,所使用的主流技术完全开放。 它包含ToB复杂业务、互联网高并发业务、缓存应用;DDD、微服务指导。模型驱动、数据驱动。了解大型服务进化路线,编码技巧、学习Linux,性能调优。Docker/k8s助力、监

xjjdog 411 Jan 3, 2023
🦄 开源社区系统:基于 SpringBoot + MyBatis + MySQL + Redis + Kafka + Elasticsearch + Spring Security + ... 并提供详细的开发文档和配套教程。包含帖子、评论、私信、系统通知、点赞、关注、搜索、用户设置、数据统计等模块。

Echo — 开源社区系统 项目上线到服务器之后可能会出现各种各样的 BUG,比如 Elasticsearch 服务启动失败导致搜索模块不可用,但是在本地运行是完全没问题的,所以各位小伙伴可以放心下载部署。 ?? 项目简介 Echo 是一套前后端不分离的开源社区系统,基于目前主流 Java Web

小牛肉 434 Jan 7, 2023
一个基于vue3.0+antd+less+spring boot +mybatis+mysql+maven基础权限管理平台

cc-project vue 版本 angular版本请到 https://github.com/myopenresources/cc-project 这里看 详细文档 请到 cc-project详细文档 介绍 cc-project-vue 是一个前后端分离的项目,前端使用的是vue3.0,后端使用

河马开源-hippo 21 Jun 23, 2022
【多模块微服务脚手架平台——Ancba】前后端分离架构SpringBoot 2.x、SpringCloud、SpringAdmin、Spring Security、Mybatis-plus、(Shiro)、JWT、Feign、Nacos、Knif4j等。

Ancba 打造Blog.Core项目的SpringBoot微服务版,但是更强大 ?? Ancba (Another New CLI By Alacrity) 另一个全新的敏捷脚手架(单体/模块化/微服务都可支持)。 核心知识点与进度 ?? 在 ..../resources/application-

ansonzhang 35 Nov 29, 2022