基于Mybatis plus 自動代碼生成器的實(shí)現(xiàn)代碼
1.使用的是maven項(xiàng)目,添加依賴
<!-- mybatis-plus begin --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus</artifactId> <version>2.2.0</version> </dependency>
還有數(shù)據(jù)庫的連接
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>compile</scope> </dependency>
最后是源碼
import com.baomidou.mybatisplus.generator.AutoGenerator; import com.baomidou.mybatisplus.generator.config.DataSourceConfig; import com.baomidou.mybatisplus.generator.config.GlobalConfig; import com.baomidou.mybatisplus.generator.config.PackageConfig; import com.baomidou.mybatisplus.generator.config.StrategyConfig; import com.baomidou.mybatisplus.generator.config.rules.DbType; import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; import org.junit.jupiter.api.Test; /** * mybatis-plus 自動生成代碼 * * @author Terry * @version 1.0 * @date 2018-05-16 09:35 */ public class SimpleMp { @Test public void generateCode() { //指定包名 String packageName = "com.hciot.hhhh"; //user -> UserService, 設(shè)置成true: user -> IUserService boolean serviceNameStartWithI = false; //指定生成的表名 String[] tableNames = new String[]{"data_air_sensor_co", "order_product", "relation_device_gateway"}; generateByTables(serviceNameStartWithI, packageName, tableNames); } /** * 根據(jù)表自動生成 * * @param serviceNameStartWithI 默認(rèn)為false * @param packageName 包名 * @param tableNames 表名 * @author Terry */ private void generateByTables(boolean serviceNameStartWithI, String packageName, String... tableNames) { //配置數(shù)據(jù)源 DataSourceConfig dataSourceConfig = getDataSourceConfig(); // 策略配置 StrategyConfig strategyConfig = getStrategyConfig(tableNames); //全局變量配置 GlobalConfig globalConfig = getGlobalConfig(serviceNameStartWithI); //包名配置 PackageConfig packageConfig = getPackageConfig(packageName); //自動生成 atuoGenerator(dataSourceConfig, strategyConfig, globalConfig, packageConfig); } /** * 集成 * * @param dataSourceConfig 配置數(shù)據(jù)源 * @param strategyConfig 策略配置 * @param config 全局變量配置 * @param packageConfig 包名配置 * @author Terry */ private void atuoGenerator(DataSourceConfig dataSourceConfig, StrategyConfig strategyConfig, GlobalConfig config, PackageConfig packageConfig) { new AutoGenerator() .setGlobalConfig(config) .setDataSource(dataSourceConfig) .setStrategy(strategyConfig) .setPackageInfo(packageConfig) .execute(); } /** * 設(shè)置包名 * * @param packageName 父路徑包名 * @return PackageConfig 包名配置 * @author Terry */ private PackageConfig getPackageConfig(String packageName) { return new PackageConfig() .setParent(packageName) .setXml("mapper") .setMapper("dao") .setController("controller") .setEntity("entity"); } /** * 全局配置 * * @param serviceNameStartWithI false * @return GlobalConfig * @author Terry */ private GlobalConfig getGlobalConfig(boolean serviceNameStartWithI) { GlobalConfig globalConfig = new GlobalConfig(); globalConfig .setBaseColumnList(true) .setBaseResultMap(true) .setActiveRecord(false) .setAuthor("Terry") //設(shè)置輸出路徑 .setOutputDir(getOutputDir("mybatis-plus")) .setFileOverride(true); if (!serviceNameStartWithI) { //設(shè)置service名 globalConfig.setServiceName("%sService"); } return globalConfig; } /** * 返回項(xiàng)目路徑 * * @param projectName 項(xiàng)目名 * @return 項(xiàng)目路徑 * @author Terry */ private String getOutputDir(String projectName) { String path = this.getClass().getClassLoader().getResource("").getPath(); int index = path.indexOf(projectName); return path.substring(1, index) + projectName + "/src/main/java/"; } /** * 策略配置 * * @param tableNames 表名 * @return StrategyConfig * @author Terry */ private StrategyConfig getStrategyConfig(String... tableNames) { return new StrategyConfig() // 全局大寫命名 ORACLE 注意 .setCapitalMode(true) .setEntityLombokModel(false) // 表名、字段名、是否使用下劃線命名(默認(rèn) false) .setDbColumnUnderline(true) //從數(shù)據(jù)庫表到文件的命名策略 .setNaming(NamingStrategy.underline_to_camel) //需要生成的的表名,多個表名傳數(shù)組 .setInclude(tableNames); } /** * 配置數(shù)據(jù)源 * * @return 數(shù)據(jù)源配置 DataSourceConfig * @author Terry */ private DataSourceConfig getDataSourceConfig() { String dbUrl = "jdbc:mysql://localhost:3306/test"; return new DataSourceConfig().setDbType(DbType.MYSQL) .setUrl(dbUrl) .setUsername("root") .setPassword("root") .setDriverName("com.mysql.jdbc.Driver"); } /** * 根據(jù)表自動生成 * * @param packageName 包名 * @param tableNames 表名 * @author Terry */ @SuppressWarnings("unused") private void generateByTables(String packageName, String... tableNames) { generateByTables(true, packageName, tableNames); } }
總結(jié)
以上所述是小編給大家介紹的基于Mybatis plus 自動代碼生成器的實(shí)現(xiàn)代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
java集合與數(shù)組的相同點(diǎn)和不同點(diǎn)
今天小編就為大家分享一篇關(guān)于java集合與數(shù)組的相同點(diǎn)和不同點(diǎn),小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-04-04javaweb用戶注銷后點(diǎn)擊瀏覽器返回刷新頁面重復(fù)登錄問題的解決方法
這篇文章主要為大家詳細(xì)介紹了javaweb用戶注銷后點(diǎn)擊瀏覽器返回刷新頁面重復(fù)登錄問題的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09SpringBoot?JavaMailSender發(fā)送郵件功能(實(shí)例詳解)
JavaMailSender是Spring提供的,非常好用的,實(shí)現(xiàn)郵件發(fā)送的接口 ,這篇文章主要介紹了SpringBoot?JavaMailSender發(fā)送郵件功能,需要的朋友可以參考下2024-03-03一文搞清楚Java中Comparable和Comparator的區(qū)別
Java中的Comparable和Comparator都是用于集合排序的接口,但它們有明顯的區(qū)別,文中通過一些實(shí)例代碼詳細(xì)介紹了Java中Comparable和Comparator的區(qū)別,感興趣的同學(xué)跟著小編一起學(xué)習(xí)吧2023-05-05Spring?Cloud?Gateway?整合?knife4j?聚合接口文檔功能
這篇文章主要介紹了Spring?Cloud?Gateway?整合?knife4j?聚合接口文檔的相關(guān)知識,我們可以基于?Spring?Cloud?Gateway?網(wǎng)關(guān)?+?nacos?+?knife4j?對所有微服務(wù)項(xiàng)目的接口文檔進(jìn)行聚合,從而實(shí)現(xiàn)我們想要的文檔管理功能,需要的朋友可以參考下2022-02-02