基于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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。