基于Java代码配置MyBatis Generator
使用MyBatisGenerator生成器时,有时候没办法使用xml形式的配置文件,比如将Maven项目设置成pom打包方式(
src/main/java **/*.properties **/*.yml **/*.xml src/main/resources **/*.properties **/*.yml **/*.xml
这个时候就会用到纯Java代码的MyBatisGenerator配置,直接贴配置代码:
importorg.mybatis.generator.config.*; /** *基于Java代码的MBG配置 *Maven打包方式为POM的项目或模块(pom ),resources目录的内容不会输出到类路径下,所以可以选择直接使用Java代码配置! * *@author707669522@qq.com *@since2020-06-13 */ publicclassGeneratorConfig{ publicstaticConfigurationgetGeneratorConfig(){ Contextcontext=newContext(ModelType.CONDITIONAL); context.setId("simple"); context.setTargetRuntime("MyBatis3Simple"); /*添加属性*/ context.addProperty("javaFileEncoding","UTF-8"); /*插件配置,这个是我自己的插件,没有自定义插件的同学可以不配这一节,删除即可*/ PluginConfigurationpluginConfig=newPluginConfiguration(); pluginConfig.setConfigurationType("com.xgclassroom.generator.GeneratorPlugin"); context.addPluginConfiguration(pluginConfig); /*注释生成器配置*/ CommentGeneratorConfigurationcommentGeneratorConfig=newCommentGeneratorConfiguration(); commentGeneratorConfig.addProperty("suppressAllComments","true"); context.setCommentGeneratorConfiguration(commentGeneratorConfig); /*JDBC连接信息配置*/ JDBCConnectionConfigurationjdbcConnectionConfig=newJDBCConnectionConfiguration(); jdbcConnectionConfig.setDriverClass("com.mysql.cj.jdbc.Driver"); //注意代码配置中JDBC连接字符串中的参数分隔符不需要再像xml配置文件中那样使用转义符 jdbcConnectionConfig.setConnectionURL("jdbc:mysql://localhost:3306/permission_center?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false"); jdbcConnectionConfig.setUserId("xurm"); jdbcConnectionConfig.setPassword("1qaz@WSX"); jdbcConnectionConfig.addProperty("nullCatalogMeansCurrent","true");//MySQL无法识别table标签中schema类的配置,所以在URL上指明目标数据库,并追加nullCatalogMeansCurrent属性为true jdbcConnectionConfig.addProperty("remarksReporting","true");//针对oracle数据库无法读取表和字段备注 jdbcConnectionConfig.addProperty("useInformationSchema","true");//针对mysql数据库无法读取表和字段备注 context.setJdbcConnectionConfiguration(jdbcConnectionConfig); /*Model生成器配置*/ JavaModelGeneratorConfigurationjavaModelGeneratorConfig=newJavaModelGeneratorConfiguration(); javaModelGeneratorConfig.setTargetProject("permission/src/main/java");//目标项目(源码主路径) javaModelGeneratorConfig.setTargetPackage("com.xgclassroom.model");//目标包(Model类文件存放包) context.setJavaModelGeneratorConfiguration(javaModelGeneratorConfig); /*SqlMapper生成器配置(*Mapper.xml类文件),要javaClient生成器类型配合*/ SqlMapGeneratorConfigurationsqlMapGeneratorConfig=newSqlMapGeneratorConfiguration(); sqlMapGeneratorConfig.setTargetProject("permission/src/main/java");//目标项目(源码主路径) sqlMapGeneratorConfig.setTargetPackage("com.xgclassroom.mapper");//目标包(*Mapper.xml类文件存放包) context.setSqlMapGeneratorConfiguration(sqlMapGeneratorConfig); /*JavaClient生成器配置(*Mapper.java类文件)*/ JavaClientGeneratorConfigurationjavaClientGeneratorConfig=newJavaClientGeneratorConfiguration(); javaClientGeneratorConfig.setConfigurationType("XMLMAPPER");//JavaClient生成器类型(主要有ANNOTATEDMAPPER、MIXEDMAPPER、XMLMAPPER,要Context的TargetRuntime配合) javaClientGeneratorConfig.setTargetProject("permission/src/main/java");//目标项目(源码主路径) javaClientGeneratorConfig.setTargetPackage("com.xgclassroom.mapper");//目标包(*Mapper.java类文件存放包) context.setJavaClientGeneratorConfiguration(javaClientGeneratorConfig); /*表生成配置*/ TableConfigurationtableConfig=newTableConfiguration(context); tableConfig.setTableName("%"); GeneratedKeygeneratedKey=newGeneratedKey("id","JDBC",true,null);//设置主键列和生成方式 tableConfig.setGeneratedKey(generatedKey); context.addTableConfiguration(tableConfig); Configurationconfig=newConfiguration(); config.addContext(context); returnconfig; } }
然后就是把MyBatisGenerator调用过程中原本读取xml配置文件的地方换掉就可以了:
importorg.mybatis.generator.api.MyBatisGenerator; importorg.mybatis.generator.config.Configuration; importorg.mybatis.generator.internal.DefaultShellCallback; importjava.util.ArrayList; importjava.util.List; /** *MyBatisGenerator代码生成器Java调用程序 * *@author707669522@qq.com *@since2020-06-13 */ publicclassGeneratorRunner{ publicstaticvoidmain(String[]args){ try{ Listwarnings=newArrayList (); Configurationconfig; //使用xml配置文件的方式 /*FileconfigFile=newFile(GeneratorRunner.class.getClassLoader().getResource("generatorConfig.xml").getPath()); ConfigurationParsercp=newConfigurationParser(warnings); config=cp.parseConfiguration(configFile);*/ //使用纯Java代码配置的方式 config=GeneratorConfig.getGeneratorConfig(); DefaultShellCallbackcallback=newDefaultShellCallback(true); MyBatisGeneratormyBatisGenerator=newMyBatisGenerator(config,callback,warnings); myBatisGenerator.generate(null); }catch(Exceptione){ System.out.println(e.getMessage()); e.printStackTrace(); } } }
最后把xml形式的配置也贴上,说不定能帮到某些同学:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。