<optgroup id="srizi"></optgroup>

<optgroup id="srizi"></optgroup>

系統城裝機大師 - 唯一官網:www.jasafloorhardener.com!

當前位置:首頁 > 網絡編程 > JavaScript > 詳細頁面

SpringBoot下使用MyBatis-Puls代碼生成器的方法

時間:2020-10-19來源:www.jasafloorhardener.com作者:電腦系統城

1.官方地址:

http://mybatis.plus/guide/generator.html#%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B

2.數據庫結構:

在這里插入圖片描述

3.依賴導入

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<dependency>
     <groupId>mysql</groupId>
     <artifactId>mysql-connector-java</artifactId>
     <scope>runtime</scope>
     <version>5.1.39</version>
   </dependency>
       <dependency>
     <groupId>com.baomidou</groupId>
     <artifactId>mybatis-plus-boot-starter</artifactId>
     <version>3.4.0</version>
   </dependency>
   <dependency>
     <groupId>com.baomidou</groupId>
     <artifactId>mybatis-plus-generator</artifactId>
     <version>3.4.0</version>
   </dependency>
 
   <dependency>
     <groupId>org.freemarker</groupId>
     <artifactId>freemarker</artifactId>
     <version>2.3.30</version>
   </dependency>
   <dependency>
     <groupId>org.projectlombok</groupId>
     <artifactId>lombok</artifactId>
     <optional>true</optional>
   </dependency>

配置freemarker是因為myBatis中默認的引擎是freemarker,支持自定義引擎

3.目錄結構

在這里插入圖片描述

4.官方生成器類

CodeGenerator

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
public class CodeGenerator {
  /**
   * <p>
   * 讀取控制臺內容
   * </p>
   */
  public static String scanner(String tip) {
    Scanner scanner = new Scanner(System.in);
    StringBuilder help = new StringBuilder();
    help.append("請輸入" + tip + ":");
    System.out.println(help.toString());
    if (scanner.hasNext()) {
      String ipt = scanner.next();
      if (StringUtils.isNotBlank(ipt)) {
        return ipt;
      }
    }
    throw new MybatisPlusException("請輸入正確的" + tip + "!");
  }
 
  public static void main(String[] args) {
    // 代碼生成器
    AutoGenerator mpg = new AutoGenerator();
 
    // 全局配置
    GlobalConfig gc = new GlobalConfig();
    String projectPath = System.getProperty("user.dir");
    /**
     * 這里需要設定一下保存的地址是本項目下的/src/main/java
     */
    gc.setOutputDir(projectPath + "/maven1018/src/main/java");
    gc.setAuthor("XYD");
    gc.setOpen(false);
    // gc.setSwagger2(true); 實體屬性 Swagger2 注解
    mpg.setGlobalConfig(gc);
 
    // 數據源配置
    /**
     * 設置數據庫名稱和數據庫賬戶密碼
     */
    DataSourceConfig dsc = new DataSourceConfig();
    dsc.setUrl("jdbc:mysql://localhost:3306/temporary?useUnicode=true&useSSL=false&characterEncoding=utf8");
    // dsc.setSchemaName("public");
    dsc.setDriverName("com.mysql.jdbc.Driver");
    dsc.setUsername("root");
    dsc.setPassword("12345");
    mpg.setDataSource(dsc);
 
    // 包配置
    /**
     * 設置生成文件保存地址,模塊名為命令窗口輸入的模塊名
     */
    PackageConfig pc = new PackageConfig();
    pc.setModuleName(scanner("模塊名"));
    pc.setParent("com.baomidou.ant");
    mpg.setPackageInfo(pc);
 
    // 自定義配置
    InjectionConfig cfg = new InjectionConfig() {
      @Override
      public void initMap() {
        // to do nothing
      }
    };
 
    // 如果模板引擎是 freemarker
//    String templatePath = "/templates/mapper.xml.ftl";
    // 如果模板引擎是 velocity
    // String templatePath = "/templates/mapper.xml.vm";
 
    /**
     * 這里定義的是生成xml文檔的輸出配置,存放在resource下
     */
    // 自定義輸出配置
//    List<FileOutConfig> focList = new ArrayList<>();
    // 自定義配置會被優先輸出
//    focList.add(new FileOutConfig(templatePath) {
//      @Override
//      public String outputFile(TableInfo tableInfo) {
//        // 自定義輸出文件名 , 如果你 Entity 設置了前后綴、此處注意 xml 的名稱會跟著發生變化??!
//        return projectPath + "/maven1018/src/main/resources/mapper/" + pc.getModuleName()
//            + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
//      }
//    });
    /*
    cfg.setFileCreate(new IFileCreate() {
      @Override
      public boolean isCreate(ConfigBuilder configBuilder, FileType fileType, String filePath) {
        // 判斷自定義文件夾是否需要創建
        checkDir("調用默認方法創建的目錄,自定義目錄用");
        if (fileType == FileType.MAPPER) {
          // 已經生成 mapper 文件判斷存在,不想重新生成返回 false
          return !new File(filePath).exists();
        }
        // 允許生成模板文件
        return true;
      }
    });
    */
//    cfg.setFileOutConfigList(focList);
//    mpg.setCfg(cfg);
 
    // 配置模板
    TemplateConfig templateConfig = new TemplateConfig();
 
    // 配置自定義輸出模板
    //指定自定義模板路徑,注意不要帶上.ftl/.vm, 會根據使用的模板引擎自動識別
    // templateConfig.setEntity("templates/entity2.java");
    // templateConfig.setService();
    // templateConfig.setController();
 
    templateConfig.setXml(null);
    mpg.setTemplate(templateConfig);
 
    // 策略配置
    StrategyConfig strategy = new StrategyConfig();
    strategy.setNaming(NamingStrategy.underline_to_camel);
    strategy.setColumnNaming(NamingStrategy.underline_to_camel);
 
//    strategy.setSuperEntityClass("你自己的父類實體,沒有就不用設置!");
 
    strategy.setEntityLombokModel(true);
    strategy.setRestControllerStyle(true);
 
    // 公共父類
//    strategy.setSuperControllerClass("你自己的父類控制器,沒有就不用設置!");
 
    // 寫于父類中的公共字段
//    strategy.setSuperEntityColumns("id"); //注釋這行否則生成的實體類中沒有Id變量
 
    strategy.setInclude(scanner("表名,多個英文逗號分割").split(","));
    strategy.setControllerMappingHyphenStyle(true);
    strategy.setTablePrefix(pc.getModuleName() + "_");
    mpg.setStrategy(strategy);
    mpg.setTemplateEngine(new FreemarkerTemplateEngine());
    mpg.execute();
  }
 
}

5. 代碼生成后的配置

  • 默認生成的代碼中實體類是沒有id屬性的,在代碼生成類中注釋掉strategy.setSuperEntityColumns("id");
  • 默認生成的mapper對象上是沒有@Mapper注解,需要在主配置類中加入@MapperScan注解,進行mapper掃描
?
1
2
3
4
5
6
7
8
9
@SpringBootApplication
@MapperScan("com.example.crount.mapper")
public class Demo1018Application {
 
  public static void main(String[] args) {
    SpringApplication.run(Demo1018Application.class, args);
  }
 
}

另外自己要運行代碼進行數據庫訪問,所以application.properties中也要配置數據源

?
1
2
3
4
5
6
7
8
# 數據庫配置
spring.datasource.url=jdbc:mysql:///temporary?characterEncoding=utf-8&useSSL=false
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=12345
 
#連接池配置
#spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

6.controller開發

注入service,修改訪問的地址,寫入訪問的方法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
@RestController
public class StudentController {
 
  @Autowired
  private IStudentService studentService;
 
  @GetMapping("/demo1")
  public String m1(){
    Student student = studentService.getById(3);
    return student.getSSex();
  }
 
}

7.生成的代碼放到主配置類的同級目錄下,運行代碼

在這里插入圖片描述

到此這篇關于SpringBoot下使用MyBatis-Puls代碼生成器的方法的文章就介紹到這了

分享到:

相關信息

系統教程欄目

欄目熱門教程

人氣教程排行

站長推薦

熱門系統下載

久久大香久久久尹人尹人