MybatisPlus使用代码篇
package spring.server.consumer; import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.generator.AutoGenerator; import com.baomidou.mybatisplus.generator.InjectionConfig; import com.baomidou.mybatisplus.generator.config.*; import com.baomidou.mybatisplus.generator.config.po.TableInfo; import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; import java.io.File; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class MybatisPlusGenerator { /** * 项目路径 修改为你项目的实际绝对路径 * */ private static String canonicalPath = "C:\\Spring\\spring-server-consumer"; /** * 基本包名 */ private static String basePackage = "spring.server.consumer"; /** * 作者 */ private static String authorName = "sxy"; /** * table前缀 */ private static String[] prefix = {""}; /** * 数据库类型 */ private static DbType dbType = DbType.MYSQL; /** * 数据库配置四要素 */ private static String driverName = "com.mysql.cj.jdbc.Driver"; private static String url = "jdbc:mysql://localhost:3306/mysqltest?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false"; private static String username = "root"; private static String password = "123456"; public static void main(String[] args) { String[] tables = getTables(); // 代码生成器 AutoGenerator mpg = new AutoGenerator(); /** * 获取项目路径 */ try { canonicalPath = new File("").getCanonicalPath(); } catch (IOException e) { e.printStackTrace(); } // 全局配置 GlobalConfig globalConfig = new GlobalConfig(); globalConfig.setOutputDir(canonicalPath + "/src/main/java"); globalConfig.setFileOverride(false); globalConfig.setActiveRecord(true); globalConfig.setEnableCache(false); globalConfig.setBaseResultMap(true); globalConfig.setBaseColumnList(true); globalConfig.setOpen(true); globalConfig.setAuthor(authorName); globalConfig.setMapperName("%sMapper"); globalConfig.setXmlName("%sMapper"); globalConfig.setServiceName("I%sService"); globalConfig.setServiceImplName("%sServiceImpl"); globalConfig.setControllerName("%sController"); globalConfig.setSwagger2(true); mpg.setGlobalConfig(globalConfig); // 数据源配置 DataSourceConfig dataSourceConfig = new DataSourceConfig(); dataSourceConfig.setDriverName(driverName); dataSourceConfig.setDbType(dbType); dataSourceConfig.setUrl(url); dataSourceConfig.setUsername(username); dataSourceConfig.setPassword(password); mpg.setDataSource(dataSourceConfig); // 包配置 PackageConfig packageConfig = new PackageConfig(); packageConfig.setParent(basePackage); packageConfig.setController("controller"); packageConfig.setEntity("entity"); packageConfig.setMapper("dao"); packageConfig.setService("service"); packageConfig.setServiceImpl("service.impl"); mpg.setPackageInfo(packageConfig); // 自定义配置 InjectionConfig cfg = new InjectionConfig() { @Override public void initMap() { // to do nothing } }; /** * 注入自定义配置 */ // 注入自定义配置,可以在 VM 中使用 cfg.abc 设置的值 InjectionConfig abc = new InjectionConfig() { @Override public void initMap() { Map<String, Object> map = new HashMap<String, Object>(); map.put("abc", this.getConfig().getGlobalConfig().getAuthor() + "-mp"); this.setMap(map); } }; //自定义文件输出位置(非必须) List<FileOutConfig> fileOutList = new ArrayList<FileOutConfig>(); fileOutList.add(new FileOutConfig("/templates/mapper.xml.vm") { @Override public String outputFile(TableInfo tableInfo) { return canonicalPath + "/src/main/resources/mapper/" + tableInfo.getEntityName() + "Mapper.xml"; } }); abc.setFileOutConfigList(fileOutList); mpg.setCfg(abc); // 配置模板 TemplateConfig templateConfig = new TemplateConfig(); // 配置自定义输出模板 //指定自定义模板路径,注意不要带上.ftl/.vm, 会根据使用的模板引擎自动识别 // templateConfig.setEntity("templates/entity2.java"); // templateConfig.setService(); // templateConfig.setController(); templateConfig.setXml(null); mpg.setTemplate(templateConfig); // 策略配置 StrategyConfig strategyConfig = new StrategyConfig(); strategyConfig.setTablePrefix(prefix); strategyConfig.setNaming(NamingStrategy.underline_to_camel); strategyConfig.setInclude(tables); strategyConfig.setEntityBuilderModel(true); strategyConfig.setRestControllerStyle(true); mpg.setStrategy(strategyConfig); mpg.execute(); } public static String[] getTables() { ArrayList tables=new ArrayList(); try { Class.forName(driverName); Connection conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/mysqltest?user=root&password=123456"); Statement stmt = conn.createStatement(); //getTableNameByCon(conn); ResultSet rs = stmt.executeQuery("show tables; "); while (rs.next()) { String tableName= rs.getString(1); tables.add(tableName); } Object[] arrayAreas= tables.toArray(); String[] tableNames=new String[arrayAreas.length]; for (int i=0;i<arrayAreas.length;i++) { tableNames[i]=arrayAreas[i].toString(); } return tableNames; } catch (Exception e) { e.printStackTrace(); } return null; } }
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· 一个基于 .NET 开源免费的异地组网和内网穿透工具
· 《HelloGitHub》第 108 期
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单