使用mybatisplus代碼生成器可大幅提升開發效率。1. 引入相關依賴,包括mybatis-plus-generator、freemarker及數據庫驅動;2. 編寫配置類設置數據源、全局配置、包名及策略,用于生成實體類、mapper、service和controller;3. 可選自定義模板以滿足編碼風格需求;4. 注意常見問題如數據庫連接、字段映射、注釋生成等,確保配置準確以提升代碼生成效果。
使用MyBatisPlus代碼生成器可以大幅提升開發效率,尤其在項目初期搭建階段。它能根據數據庫表結構自動生成實體類、Mapper接口、Service層、Controller層等基礎代碼,省去了大量重復勞動。
1. 引入依賴
要使用MyBatisPlus的代碼生成器,首先要在項目中引入相關依賴。如果你用的是maven項目,可以在pom.xml中添加以下內容:
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.5.2</version> </dependency> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.31</version> </dependency>
注意:不同版本的MyBatisPlus Generator可能對FreeMarker或其他模板引擎有不同要求,確保版本兼容性。
另外,還需要數據庫驅動依賴,比如mysql:
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-Java</artifactId> <version>8.0.26</version> </dependency>
2. 編寫配置類
接下來是編寫一個Java類來配置代碼生成器。你可以創建一個main方法運行這個類,也可以集成到spring Boot項目中作為啟動任務。
核心配置如下:
AutoGenerator generator = new AutoGenerator(); // 數據源配置 DataSourceConfig dataSourceConfig = new DataSourceConfig(); dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/your_db?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai"); dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver"); dataSourceConfig.setUsername("root"); dataSourceConfig.setPassword("123456"); generator.setDataSource(dataSourceConfig); // 全局配置 GlobalConfig globalConfig = new GlobalConfig(); globalConfig.setOutputDir(System.getProperty("user.dir") + "/src/main/java"); globalConfig.setAuthor("your_name"); globalConfig.setOpen(false); globalConfig.setServiceName("%sService"); // 去掉IService前綴 generator.setGlobalConfig(globalConfig); // 包名配置 PackageConfig packageConfig = new PackageConfig(); packageConfig.setParent("com.example.demo"); packageConfig.setModuleName("system"); generator.setPackageInfo(packageConfig); // 策略配置 StrategyConfig strategy = new StrategyConfig(); strategy.setNaming(NamingStrategy.underline_to_camel); // 表轉類名策略 strategy.setColumnNaming(NamingStrategy.underline_to_camel); // 字段轉屬性名策略 strategy.setEntityLombokModel(true); // 使用Lombok strategy.setRestControllerStyle(true); // Controller為RestController風格 strategy.setInclude("user", "role"); // 需要生成的表名 generator.setStrategy(strategy); // 執行生成 generator.execute();
幾點說明:
- outputDir建議設置成項目的src/main/java目錄下,這樣生成的代碼可以直接使用。
- setServiceName(“%sService”)去掉默認的I前綴,更符合多數團隊命名習慣。
- 如果你使用Lombok,記得加上依賴,并且ide安裝了Lombok插件。
3. 自定義模板(可選)
如果默認生成的代碼風格或結構不符合你的需求,可以通過自定義模板來調整。
步驟如下:
- 下載官方默認模板(通常是以.ftl結尾的Freemarker文件)
- 修改模板內容,比如Controller加注解、字段描述格式化等
- 在配置中指定模板路徑:
TemplateConfig templateConfig = new TemplateConfig(); templateConfig.setController("templates/controller.java.ftl"); generator.setTemplate(templateConfig);
這種方式適合希望統一編碼風格、添加特定注釋或字段處理邏輯的團隊。
4. 常見問題與注意事項
- 數據庫連接失敗:檢查url、用戶名、密碼是否正確,尤其是MySQL 8以上驅動名稱應為com.mysql.cj.jdbc.Driver
- 生成的類沒有字段:可能是表字段名和命名策略不匹配,或者未開啟自動映射
- 字段類型不準確:有些數據庫類型如tinyint會被識別為布爾值,需要手動調整或修改模板
- 字段注釋沒生成:確保數據庫字段設置了comment,并在策略中開啟字段注釋支持:
strategy.setEntityTableFieldAnnotationEnable(true);
基本上就這些。配置一次后,后續新增表只需要改一下strategy.setInclude(…)即可快速生成代碼。雖然看起來步驟不少,但每一步都比較直觀,關鍵在于理解各配置項的作用。