Generator.kt 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. package com.gxzc.zen
  2. import com.baomidou.mybatisplus.generator.AutoGenerator
  3. import com.baomidou.mybatisplus.generator.InjectionConfig
  4. import com.baomidou.mybatisplus.generator.config.*
  5. import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert
  6. import com.baomidou.mybatisplus.generator.config.po.TableInfo
  7. import com.baomidou.mybatisplus.generator.config.rules.DbColumnType
  8. import com.baomidou.mybatisplus.generator.config.rules.DbType
  9. import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy
  10. import java.io.File
  11. /**
  12. *
  13. * @author NorthLan
  14. * @date 2018/1/24
  15. * @url https://noahlan.me
  16. */
  17. fun generate(isKotlin: Boolean, author: String, pkgType: String, dataSourceConfig: DataSourceConfig) {
  18. val mpg = AutoGenerator()
  19. val path = File("zen-api").absolutePath
  20. // 全局配置
  21. mpg.globalConfig = GlobalConfig().also {
  22. it.outputDir = if (isKotlin) {
  23. "$path/src/main/kotlin"
  24. } else {
  25. "$path/src/main/java"
  26. }
  27. it.isFileOverride = true
  28. it.isActiveRecord = false
  29. it.isEnableCache = false
  30. it.isOpen = false
  31. it.author = author
  32. it.isKotlin = isKotlin
  33. it.isBaseResultMap = true
  34. it.isBaseColumnList = false
  35. it.mapperName = "%sMapper"
  36. it.xmlName = "%sMapper"
  37. it.serviceName = "I%sService"
  38. it.serviceImplName = "%sServiceImpl"
  39. }
  40. // 数据源
  41. mpg.dataSource = dataSourceConfig
  42. // 策略配置
  43. mpg.strategy = StrategyConfig().also {
  44. it.setDbColumnUnderline(true)
  45. it.isCapitalMode = false
  46. it.naming = NamingStrategy.underline_to_camel
  47. // setTablePrefix()
  48. it.superEntityClass = "com.gxzc.zen.common.base.BaseModel"
  49. it.setSuperEntityColumns("id", "create_by", "create_time", "update_by", "update_time", "remark", "enable")
  50. it.superMapperClass = "com.gxzc.zen.common.base.BaseMapper"
  51. it.superServiceClass = "com.gxzc.zen.common.base.BaseService"
  52. it.superServiceImplClass = "com.baomidou.mybatisplus.service.impl.ServiceImpl"
  53. // superControllerClass = ""
  54. // setInclude("user")
  55. it.isEntityBooleanColumnRemoveIsPrefix = true
  56. it.logicDeleteFieldName = "enable"
  57. // setExclude("")
  58. }
  59. // 包配置
  60. mpg.packageInfo = PackageConfig().also {
  61. it.parent = "com.gxzc.zen.api.$pkgType"
  62. it.entity = "model"
  63. }
  64. val cfg = object : InjectionConfig() {
  65. override fun initMap() {
  66. }
  67. }.also {
  68. it.fileOutConfigList = ArrayList<FileOutConfig>().also {
  69. it.add(object : FileOutConfig("/templates/mapper.xml.vm") {
  70. override fun outputFile(tableInfo: TableInfo?): String {
  71. return "$path/src/main/resources/mapping/$pkgType/${tableInfo?.mapperName}.xml"
  72. }
  73. })
  74. }
  75. }
  76. mpg.cfg = cfg
  77. mpg.template = TemplateConfig().also {
  78. it.controller = null // 不生成controller
  79. it.xml = null
  80. }
  81. mpg.execute()
  82. }
  83. fun main(args: Array<String>) {
  84. generate(false, "NorthLan", "bus", DataSourceConfig().also {
  85. it.dbType = DbType.MYSQL
  86. it.typeConvert = object : MySqlTypeConvert() {
  87. override fun processTypeConvert(fieldType: String?): DbColumnType {
  88. return super.processTypeConvert(fieldType)
  89. }
  90. }
  91. it.driverName = "com.mysql.jdbc.Driver"
  92. it.username = "root"
  93. it.password = "root"
  94. it.url = "jdbc:mysql://127.0.0.1:3306/archives_rec?characterEncoding=utf8"
  95. })
  96. }