关于参考《MyBatis Generator 1.3.4 扩展,可以设置 Mapper(Dao)后缀》的一些疑问
2017-07-25 03:32
621 查看
写在前面的话:
1】自己配置一个项目,想在项目中用到MyBatis Generator逆向生成bean、dao、mapper文件。
2】用maven加载插件MyBatis Generator 1.3.5后,配置generatorConfig.xml。重点如下:
3】运行Generator后,的确生成了相应的bean、dao、mapper文件;
4】但是有点不完美的地方:
生成的dao文件名后自动带上了mapper,变成了SysOrgMapper.java;
生成的xml文件名后自动带上了Mapper,成了SysOrgMapper.xml;
5】因为觉得Dao文件名有点纠结(我希望的是生成类似文件:SysOrgDao.java、SysOrgMapper.xml),所以在网上搜索了下解决方案,没想到还真找到一篇。
传送门:MyBatis Generator 1.3.4 扩展,可以设置 Mapper(Dao)后缀
原文地址:http://blog.csdn.net/isea533/article/details/52430691
源码传送门:通用Mapper地址
源码地址:http://git.oschina.net/free/Mapper
6】遂根据文档指导进行代码修改,修改完成后执行如下步骤:
(1) 运行main方法:
(2) 运行generator 插件:
7】运行出现错误,但是依然生产了bean、dao、mapper相应的文件。错误如下:
1】自己配置一个项目,想在项目中用到MyBatis Generator逆向生成bean、dao、mapper文件。
2】用maven加载插件MyBatis Generator 1.3.5后,配置generatorConfig.xml。重点如下:
<context id="xxxxTables" defaultModelType="flat" targetRuntime="MyBatis3"> <table tableName="%" domainObjectName=""></table>
3】运行Generator后,的确生成了相应的bean、dao、mapper文件;
4】但是有点不完美的地方:
生成的dao文件名后自动带上了mapper,变成了SysOrgMapper.java;
生成的xml文件名后自动带上了Mapper,成了SysOrgMapper.xml;
5】因为觉得Dao文件名有点纠结(我希望的是生成类似文件:SysOrgDao.java、SysOrgMapper.xml),所以在网上搜索了下解决方案,没想到还真找到一篇。
传送门:MyBatis Generator 1.3.4 扩展,可以设置 Mapper(Dao)后缀
原文地址:http://blog.csdn.net/isea533/article/details/52430691
源码传送门:通用Mapper地址
源码地址:http://git.oschina.net/free/Mapper
6】遂根据文档指导进行代码修改,修改完成后执行如下步骤:
(1) 运行main方法:
(2) 运行generator 插件:
7】运行出现错误,但是依然生产了bean、dao、mapper相应的文件。错误如下:
[ERROR] Failed to execute goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.5:generate (default-cli) on project QRCodeServices: targetRuntime in context CtfsDbTables is invalid -> [Help 1] org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.5:generate (default-cli) on project QRCodeServices: targetRuntime in context CtfsDbTables is invalid at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80) at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288) at org.apache.maven.cli.MavenCli.main(MavenCli.java:199) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) at org.codehaus.classworlds.Launcher.main(Launcher.java:47) Caused by: org.apache.maven.plugin.MojoExecutionException: targetRuntime in context CtfsDbTables is invalid at org.mybatis.generator.maven.MyBatisGeneratorMojo.execute(MyBatisGeneratorMojo.java:217) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207) ... 21 more [ERROR] [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException[/code]
8】不知道这个错误到底是什么原因导致的,能力有限分析不出来。接到第7条:
生成的dao文件名后自动带上了Dao,变成了SysOrgDao.java;
但是!
生成的xml文件名后也自动带上了Dao,变成了SysOrgDao.xml;
9】跟预期不符,然后继续修改代码,
10】大概分析了下:TkMyBatis3Impl类的:calculateMyBatis3XmlMapperFileName()方法,大概确定了导致这个xml文件名添加Dao的位置:但是不知道怎么修改。
应该是这段代码://支持mapperName = "{0}Dao" 等用法 sb.append(MessageFormat.format(mapperName, fullyQualifiedTable.getDomainObjectName()));不明白该怎么修改,苦逼,所以整了个笨方法。
11】笨方法:把方法体中的if选择语句做了点修改:。
改成:
直接走else,给文件名加上"Mapper.xml"。
12】最后重新跑了一下,实现了原来的目的:
生成的dao文件:SysOrgDao.java;
生成的xml文件:SysOrgMapper.xml;
----------------------------------------------------------------
留下几个小问题比较困惑:
【1】 第六步的操作是不是有问题,感觉是不是那个位置没配好,操作需要这么复杂吗?
【2】错误到底是什么原因导致的?
【3】第十步还有更好的解决方案吗?第十步我尝试过直接注释掉:calculateMyBatis3XmlMapperFileName这个方法,但是结果变成了:
生成的dao和xml变成了:{0}Dao.java、{0}Dao.xml
几个问题,如果有路过的大神能帮忙解答下就好。
相关文章推荐
- MyBatis Generator 1.3.4 扩展,可以设置 Mapper(Dao)后缀
- 构建PHP扩展时可以参考的一些资料
- 关于“错误:找不到或无法加载主类”的错误的解决办法(环境变量确信自己已经设置好了的人可以参考一下这个)
- 前面在《Asp.Net Forums中对.Net中序列化和反序列化的应用》一文中讲了,对于一些扩展属性,可以将字符串集合序列化为二进制,也可以从二进制反序列化为字符串集合。其实我一直有个疑问,对于asp.net中可以很容易实现,但是在asp中该如何?
- 项目开发中的一些注意事项以及技巧总结 基于Repository模式设计项目架构—你可以参考的项目架构设计 Asp.Net Core中使用RSA加密 EF Core中的多对多映射如何实现? asp.net core下的如何给网站做安全设置 获取服务端https证书 Js异常捕获
- 关于CONFIG_LOCALVERSION_AUTO设置去掉内核版本号SVN后缀
- 关于iOS Tabbar的一些设置
- 初学ios开发,关于自定义界面有一些疑问
- 关于一些强制将主页设置为XXX的解决方法~
- 玩转Dos模拟 关于dosbox的一些设置技巧
- 关于VC6.0界面MFC设置成XP风格问题【可以变得更加好看】
- 一些软件开发规范,可以参考一下
- 用SQL语句添加删除修改字段、一些表与字段的基本操作、数据库备份等,需要的朋友可以参考下。
- 关于对SWS插件的一些扩展
- 关于MFC的一些疑问
- Android 关于volley的一些源码和扩展 (二)
- cocos2d-x 关于CCpoint的一些算法或者说扩展
- 关于java的一些问题,比较基础,大家可以看看咯
- 关于windows环境下配置nginx的一些疑问
- 关于网络的一些设置