一、powerdesigner设计数据库

在实际开发中,我们不可能在workbench或Navicat中手动创建数据库,再手动编写数据库对应的PO。通常情况下我们会借助第三方软件,设计系统中所用到的数据库实体。而后使用代码生成器,生成初步的代码。本章就介绍一个常用的数据库设计软件,powerdesigner。

1.1 展示内容设置

在空白处单击右键,选择display preference>>table>>advanced
记得把这个页面的Indexes 和 Comment勾上

而后点击colomn,设置为如图

1.2 domain设置

domain我通常不做复杂的设计,以好用方便为主

1.3 数据库表设计

这里以公主连结会战报刀工具为例,展示下表的设计
数据库设计如图所示:

而后,点击菜单的database,选择generate database,生成数据库文件。
再然后把数据库文件在数据库中执行,就得到我们业务所需的表。

1.4 数据导出

点击Database->generate Database,即可生成对应的sql
对于每一张表,也要记得勾选generate,才会有生成

二、mybatis-plus 原生的代码生成器

mybatis-plus提供了原生的代码生成器,本节直接展示代码,详细配置可见官网

static void officialGen(){String outputPath =  "E:\\DOCUMENT\\generator\\bailan2";FastAutoGenerator.create("jdbc:mysql://localhost:3307/bailan?useSSL=false&useUnicode=true&characterEncoding=utf-8","root", "qqhilvMgAl@7").globalConfig(builder -> {// 设置作者builder.author("织法")// 开启 swagger 模式.enableSwagger()// 覆盖已生成文件.fileOverride()// 指定输出目录.outputDir(outputPath);}).packageConfig(builder -> {// 设置父包名builder.parent("indi.zhifa.recipe.bailan.busy")// 指定模块名称.moduleName("dbgen").entity("entity.po").service("dao.service").serviceImpl("dao.service.impl").mapper("dao.mapper");}).strategyConfig(builder -> {// 设置过滤表前缀builder.addTablePrefix("bl_","sys_").addExclude("gc_user").entityBuilder().enableLombok().enableRemoveIsPrefix().logicDeleteColumnName("del").logicDeletePropertyName("del").addTableFills(new Column("create_time", FieldFill.INSERT)).addTableFills(new Property("createTime", FieldFill.INSERT)).addTableFills(new Column("create_by",FieldFill.INSERT)).addTableFills(new Property("createBy",FieldFill.INSERT)).addTableFills(new Column("create_name",FieldFill.INSERT)).addTableFills(new Property("createName",FieldFill.INSERT)).addTableFills(new Column("create_ip",FieldFill.INSERT)).addTableFills(new Property("createIp",FieldFill.INSERT)).addTableFills(new Column("modify_time", FieldFill.UPDATE)).addTableFills(new Property("modifyTime", FieldFill.UPDATE)).addTableFills(new Column("modify_by",FieldFill.UPDATE)).addTableFills(new Property("modifyBy",FieldFill.UPDATE)).addTableFills(new Column("modify_name",FieldFill.UPDATE)).addTableFills(new Property("modifyName",FieldFill.UPDATE)).addTableFills(new Column("modify_ip",FieldFill.UPDATE)).addTableFills(new Property("modifyIp",FieldFill.UPDATE)).idType(IdType.ASSIGN_ID).formatFileName("%sEntity").entityBuilder().superClass(BaseEntity.class).disableSerialVersionUID().enableLombok().versionColumnName("version").versionPropertyName("version").addSuperEntityColumns("id","create_time","create_by","create_name","create_ip","modify_by","modify_time","modify_name","modify_ip","version","del").serviceBuilder().formatServiceFileName("I%sDbService").formatServiceImplFileName("%sDbServiceImpl").serviceBuilder().superServiceClass(IZfDbService.class).superServiceImplClass(ZfDbServiceImpl.class);})// 使用Freemarker引擎模板,默认的是Velocity引擎模板.templateEngine(new FreemarkerTemplateEngine()).execute();}

三、使用freemark,自己制作一个代码生成器

然而,官方的生成工具有很多问题。
第一,生成的代码和我们的要求不完全相同。比如,我们用的swagger3,而官方的生成的是2。
第二,官方的生产,对vo,dto的支持不是很好
第三,实际开发中,一个微服务可能涉及好几十张表,但其实可以再分模块,我们希望同一模块的实体、mapper、service放到同一包下
第四,对分页的支持不强。实际开发的分页查询,都是机械重复的代码,我们每次手动编写,一个实体可能20分钟就浪费掉了。
这部分不太好做,先鸽着吧,有空回过头来搞这块

3.1 使用自己的framemark模板

mybatisplus的模板在这里,我们可以粘到自己的工程中稍作魔改

在配置时,添加下列代码

                .templateConfig(templet->{templet.entity("templates/MyEntity.java");templet.mapper("templates/MyMapper.java");//templet.mapperXml("templates/MyMapper.xml");templet.service("templates/MyService.java");templet.serviceImpl("templates/MyServiceImpl.java");templet.controller("templates/MyController.java");}).execute();

把模板资源放到自己工程resource下即可。

3.2 更深度的定制

读取一个xml,然后自己做些解析。这个以后再写……

芝法酱躺平攻略(4)—— powerdesigner与mybatis-plus生成代码相关推荐

  1. 芝法酱躺平攻略(1)——SpringBoot 多模块 maven工程搭建

    SpringBoot maven工程搭建 一.设计目标 项目结构: 1. 根目录 2. common模块 3. web-common模块 3.1 web模块 3.2 mysql模块 3.3 redis ...

  2. 芝法酱躺平攻略(5)—— SpringBoot编写公主连结公会战报刀工具

    一.业务分析 1.1 简化的增删改查业务 本期只先实现业务,还没有涉及鉴权等操作,故用户和公会系统,就简单编写. 用户系统: 函数命 功能 描述 create 创建用户 传昵称,创建用户 info 查 ...

  3. 蒂法html5游戏,完全攻略蒂法

    完整的Tifa攻略游戏 坏蛋冰淇淋,冷冻的双重英雄,双箭头,双箭头II,唤醒盒,唤醒盒... 寻求完整指南3 Tifa's 说明! 分享:随便玩:你好,啤酒,饮料,头发,鼓掌(拍拍),哭泣,亲吻,跳, ...

  4. 法瑞意游记+攻略 三(巴黎 埃菲尔铁塔、凯旋门、圣心大教堂、爱墙、奥赛美术馆 十二月二十八) 未完...

    攻略Tips: Museum Pass,如果玩的地方包括卢浮.凡尔赛什么的,一天玩两个地方以上的,就买吧.第三天了,也就奥赛博物馆因为是下午三点到的,排了比较长的队,其它像卢浮.凡尔赛都没怎么排队.每 ...

  5. 【攻略】前端特工 - 腾讯CodeStar代码星计划

    本人前端小白,偶然看到了觉得好玩,就玩上了. 以下内容转自 http://targetkiller.net/tencent-quiz/ 腾讯前端AlloyTeam的招聘闯关游戏出炉了~ 地址http: ...

  6. 【攻略】前端突击队 - 腾讯CodeStar代码星计划第二季

    腾讯CodeStar代码星计划 ==> http://codestar.alloyteam.com/q2/ 玩玩--参考了网上的题解 闯关攻略 进入闯关后,按住ctrl,向下滑动滚轮,将网页缩到 ...

  7. 2022淘宝618喵运会怎么组队升级 拉拉队猫猫玩法实战pk技巧攻略

    618喵运会已经开启啦,大家有拉队友助力吗?也就是拉拉队玩法,今天小编就和大家分享一下怎么组队升级,实战pk的时候怎么打是最厉害的,下面就和小编一起来看看淘宝618喵运会组队玩法攻略. 手机淘宝搜索: ...

  8. ❥挑灯夜读系列❥-- 软件设计师考试躺过攻略(2021年下半年)

    现在是2021年9月下旬,离软考还有四十多天.通过此系列文章整理各板块的重要知识点,绘制成自己更喜欢的笔记格式.边学习边记录的过程,也是对自己的一种督促.放弃不难,但坚持一定很酷! 一.考试要求 掌握 ...

  9. 网赚项目(二)喵小二日入200躺赚攻略

    你是不是做过微商?到最后把朋友圈那点社交资源都耗尽也没赚到几个钱,还搞得自己社交压力巨大.或者你是不是在网络上疯狂刷单?各种软件装了好几满屏,手机卡得要命,最后发现刷单赚的那点钱竟然还不够买一个手机. ...

最新文章

  1. loading加载和layer.js
  2. python 2.6下 No module named sysconfig
  3. iOS中SQLite持久化存储第三方库FMDB
  4. python元组求和_Python 列表和元组 - 学习笔记(持续更新)
  5. 新手怎样学习C语言C++?
  6. mysql与mysqli
  7. 【雷达通信】基于matlab GUI雷达定位模拟【含Matlab源码 304期】
  8. SpringMVC的Restful风格
  9. C++ socket编程select模型
  10. C语言程序设计 利用数组处理批量数据
  11. 李飞飞:我怎样走上 AI 研究之路
  12. 【C语言】(用函数实现)任意给定两个正整数a和n,计算a+aa+aaa+aa...(n个a)的和。(例如输入1,3即为计算1+11+111的值)。
  13. HOW TO LEECH USING IRC
  14. 3 4j不是合法的python表达式_3+4j不是合法的Python表达式。
  15. 蚂蚁金服区块链创新大赛
  16. JUDE-UML工具软件介绍
  17. 通过命令运行jar包(指定外部依赖jar包)
  18. 【java毕业设计】基于javaEE+SSH+oracle的健康管理系统设计与实现(毕业论文+程序源码)——健康管理系统
  19. 医疗行业售前100问之第2问:医院有几张网?
  20. android spine动画教程,cocos2dx3.2 spine动画

热门文章

  1. iOS开发面试攻略(KVO、KVC、多线程、锁、runloop、计时器)
  2. umi创建简单的登录界面
  3. python包管理工具pip使用手册
  4. Py之interpret:interpret的简介、安装、案例应用之详细攻略
  5. 安卓DataBinding问题:ActivityMainBinding、FragmentHomeBinding类不存在且无法自动导入
  6. linux 查看有哪些ip正在连接
  7. 写给初入行,刚接触Auto CAD的新人一些建议——第一期
  8. STM32项目设计:基于STM32指纹密码锁
  9. JAVAWEB实用技术——二维码的生成【详解】
  10. JVM在OOM日志排查