基于MybatisGenerator扩展的 Model & Mapper & Service & Controller代码生成器

 

新鲜出炉的基于数据库表
自动生成Mybatis的 Model & Mapper & Service & Controller 等的代码的代码生成器,基于Mybatis Generator扩展其JavaMapper和XmlMapper的实现,一个普通业务网站的后端逻辑,点一下鼠标就实现了,项目链接:
https://github.com/fenglibin/CodeGenerator

Java代码生成器

介绍

这是一个基于数据库表
用来自动生成 Model & Mapper & Service & ServiceImpl & Controller 等代码的代码生成器
使用者可以通过修改ftl模板来生成自己所需的基本代码块
主要是为了解决日常工作、练习中代码的重复工作量
目前仅支持 Mybatis 底层代码的生成

注:本项目fork自https://github.com/zhaohaihao/CodeGenerator ,感谢原作者zhaohaihao。不过我在使用代码的时候发现原项目有很多功能或者使用场景不适合我,因而我在原来项目的基础之上做了大的调整。在原来的基础之上修改点如下: 1、去掉依赖tk.mybatis和pagehelper的依赖,完全自已实现相关的逻辑,因为我还是觉得mybatis原始的实现方式更适合我; 2、实现自定义的CustomizeJavaMapperGenerator和CustomizeXMLMapperGenerator,可以灵活的定制自已经需要生成的功能; 3、实现了按条件的分页查询,并在Controler层实现统一返回结果; 4、去掉了一些原来需要用户参与的配置和定制,完全按照MybatisGenerator的标准实现,使配置看起来更简洁,代码实现也更简单; 5、增加单元测试的相关的依赖,方便对生成代码的单元测试。

目录结构

 
  1. ├── src

  2. │   ├── main

  3. │   │   ├── java

  4. │   │   │   └── com

  5. │   │   │   ├── codegen

  6. │   │   │   │   └── vo // 项目需要的代码

  7. │   │   │   │   ├── Page.java

  8. │   │   │   │   └── Result.java

  9. │   │   │   └── gencode // 存放生成的代码(该目录中的代码可以删除)

  10. │   │   │   └── generate

  11. │   │   │   ├── persistence

  12. │   │   │   │   ├── mapper

  13. │   │   │   │   │   └── SitesMapper.java

  14. │   │   │   │   └── model

  15. │   │   │   │   └── Sites.java

  16. │   │   │   ├── service

  17. │   │   │   │   └── SitesService.java

  18. │   │   │   └── web

  19. │   │   │   └── controller

  20. │   │   │   └── SitesController.java

  21. │   │   └── resources

  22. │   │   └── com //生成的mapper.xml(该目录中的内容可以删除)

  23. │   │   └── gencode

  24. │   │   └── generate

  25. │   │   └── persistence

  26. │   │   └── mapper

  27. │   │   └── SitesMapper.xml

  28. │   └── test

  29. │   ├── java

  30. │   │   └── com

  31. │   │   └── codegen

  32. │   │   ├── generator //根据Mybatis实现的代码和xml配置生成器

  33. │   │   │   ├── CountByConditionElementGenerator.java

  34. │   │   │   ├── CountByConditionMethodGenerator.java

  35. │   │   │   ├── CustomizeJavaMapperGenerator.java

  36. │   │   │   ├── CustomizeXMLMapperGenerator.java

  37. │   │   │   ├── DeleteByConditionElementGenerator.java

  38. │   │   │   ├── DeleteByConditionMethodGenerator.java

  39. │   │   │   ├── SelectByPageElementGenerator.java

  40. │   │   │   └── SelectByPageMethodGenerator.java

  41. │   │   ├── main

  42. │   │   │   └── CodeGeneratorMain.java //代码生成器的主类

  43. │   │   ├── service

  44. │   │   │   ├── CodeGeneratorConfig.java

  45. │   │   │   ├── CodeGenerator.java

  46. │   │   │   ├── CodeGeneratorManager.java

  47. │   │   │   └── impl

  48. │   │   │   ├── ControllerGenerator.java

  49. │   │   │   ├── ModelAndMapperGenerator.java

  50. │   │   │   └── ServiceGenerator.java

  51. │   │   ├── test //单元测试存的目录(该目录可以删除)

  52. │   │   │   ├── BaseTestCase.java

  53. │   │   │   ├── controller

  54. │   │   │   │   └── SitesControllerTest.java

  55. │   │   │   └── mapper

  56. │   │   │   └── SitesMapperTest.java

  57. │   │   └── util //相关工具类的存放目录

  58. │   │   ├── DataUtil.java

  59. │   │   ├── FileUtil.java

  60. │   │   ├── MethodUtil.java

  61. │   │   └── StringUtils.java

  62. │   └── resources

  63. │   ├── config //用于单元测试的配置()

  64. │   │   └── jdbc.properties

  65. │   ├── generator //controller和service的模板所在目录

  66. │   │   └── template

  67. │   │   ├── controller.ftl

  68. │   │   └── service.ftl

  69. │   ├── generatorConfig.properties //生成器核心配置文件

  70. │   └── spring //用于单元测试的配置

  71. │   ├── applicationContext-db-normal-context-test.xml

  72. │   └── spring-application-context-test.xml

使用说明

运行

进入到 src/test/java 目录下
找到CodeGeneratorMain类 为生成器的启动项
直接 Run As Java Application 运行即可

修改配置

进入到 src/test/resources 目录下
找到 generatorConfig.properties 文件
修改对应的参数即可
具体的注释信息可参考 /src/test/java/com/codegen/service/CodeGeneratorConfig.java 类

自定义生成器

参考目录src/test/java/com/codegen/generator下面相关的实现

模板样式修改

如果需要生成自己所需的 Controller & Service 样式
进入到 src/test/resources/generator/template 目录下
修改对应的ftl文件即可

数据库表名规则

表名支持单个单词的表名,如”table1“,已经根据下划线分隔的表名如“my_table1”,其它的没有测试。

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐