设为首页 收藏本站
查看: 1198|回复: 0

[经验分享] Mybatis Generator自动生成Mybatis的相关代码

[复制链接]

尚未签到

发表于 2016-11-24 10:20:17 | 显示全部楼层 |阅读模式
本文将简要介绍怎样利用Mybatis Generator自动生成Mybatis的相关代码:

一、构建一个环境:

1. 首先创建一个表:

 

Sql代码   DSC0000.png


  • CREATETABLEpet (nameVARCHAR(20), owner VARCHAR(20), species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);  

  

2. 然后注入数据

Sql代码  


  • insertintopet values('Fluffy', 'Harold', 'cat', 'f', '1993-02-04', null);  
  • insertintopet values('Claws', 'Gwen', 'cat', 'm', '1994-03-17', null);  
  • insertintopet values('Buffy', 'Harold', 'dog', 'f', '1989-05-13', null);  
  • insertintopet values('Fang', 'Benny', 'dog', 'm', '1990-08-27', null);  
  • insertintopet values('Bowser', 'Diane', 'dog', 'm', '1979-08-31', '1995-07-29');  
  • insertintopet values('Chirpy', 'Gwen', 'bird', 'f', '1998-09-11', null);  
  • insertintopet values('Whistler', 'Gwen', 'bird', null, '1997-12-09', null);  
  • insertintopet values('Slim', 'Benny', 'snake', 'm', '1996-04-29', null);  

 

注:这里的sql例子来自 http://dev.mysql.com/doc/refman/5.5/en/creating-tables.html

3. 在 Mybatis 主页 http://code.google.com/p/mybatis/ 上下载 Mybatis mybatis-generator-core [本文使用的是 1.3.0 版本]。当然运行 mybatis-generator 生成的代码还需要下载 mybatis 的 jar 包[本例使用的是 3.0.2 版本],和相关数据库的 jdbc [本文中使用的是MySql的jdbc] 。

 

二、运行 mybatis-generator

1. 要运行 generator ,需要给 generator 提供一个配置文件,指定其生成的数据库的相关信息。
以下是一个示例:

Xml代码  


  • <?xmlversion="1.0"encoding="UTF-8"?>
  • <!DOCTYPE generatorConfiguration  
  •   PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"  
  •   "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
  •   
  • <generatorConfiguration>
  •     <classPathEntrylocation="mysql-connector-java-5.1.6-bin.jar"/>
  •   
  •     <contextid="DB2Tables"targetRuntime="MyBatis3">
  •   
  •         <commentGenerator>
  •             <propertyname="suppressDate"value="true"/>
  •         </commentGenerator>
  •   
  •         <jdbcConnectiondriverClass="com.mysql.jdbc.Driver"
  •             connectionURL="jdbc:mysql://localhost/test"userId="qgd"password="123456">
  •         </jdbcConnection>
  •   
  •         <javaTypeResolver>
  •             <propertyname="forceBigDecimals"value="false"/>
  •         </javaTypeResolver>
  •   
  •         <javaModelGeneratortargetPackage="test.model"
  •             targetProject="../src/main/java">
  •             <propertyname="enableSubPackages"value="true"/>
  •             <propertyname="trimStrings"value="true"/>
  •         </javaModelGenerator>
  •   
  •         <sqlMapGeneratortargetPackage="test.dao"
  •             targetProject="../src/main/java">
  •             <propertyname="enableSubPackages"value="true"/>
  •         </sqlMapGenerator>
  •   
  •         <javaClientGeneratortype="XMLMAPPER"
  •             targetPackage="test.dao"targetProject="../src/main/java">
  •             <propertyname="enableSubPackages"value="true"/>
  •         </javaClientGenerator>
  •   
  •         <tabletableName="pet"domainObjectName="Pet">
  •         </table>
  •   
  •     </context>
  • </generatorConfiguration>

 

这个配置文件提供了 mybatis-generator所需要的参数信息:

  * 其中classPathEntry 是引用的jdbc的类路径,这里将jdbc jar和generator的jar包放在一起了;
* commentGenerator 是用来除去时间信息的,这在配合类似subversion的代码管理工具时使用很有效,因为可以减少没有必要的注释迁入;
* jdbcConnection是指定的jdbc的连接信息;
* javaTypeResolver式类型转换的信息,这里并没有用到;
* javaModelGenerator是模型的生成信息,这里将指定这些Java model类的生成路径;
* sqlMapGenerator是mybatis 的sqlMapper XML文件的生成信息,包括生成路径等;
* javaClientGenerator是应用接口的生成信息;
* table是用户指定的被生成相关信息的表,它必须在指定的jdbc连接中已经被建立。

2. mybatis-generator 有多种运行方式,最简单的就是命令行的方式,只需要指定相应的配置文件的路径即可:

Java代码  


  • java -jar mybatis-generator-core-1.3.0.jar -configfile ../src/main/resource/config.xml -overwrite  

 

运行后生成的代码包括模型类 test.model.Pet 和 test.model.PetExample , test.dao.PetMapper 接口以及其相对应的 xml 映射文件,在这里就不在赘述了。

三、使用 mybatis-generator 生成的代码

1. 现在我们要利用这些生成的代码,首先我们需要一个关于所有映射的配置文件。需要我们手写如下:【不知道为什么generator没有选择自动生成这个文件,毕竟这些信息generator都可以得到】

Xml代码  


  • <?xmlversion="1.0"encoding="UTF-8"?>
  • <!DOCTYPE configuration  
  •     PUBLIC "-//mybatis.org//DTD Config 3.0//EN"  
  •     "http://mybatis.org/dtd/mybatis-3-config.dtd">
  • <configuration>
  •     <environmentsdefault="development">
  •         <environmentid="development">
  •             <transactionManagertype="JDBC"/>
  •             <dataSourcetype="POOLED">
  •                 <propertyname="driver"value="com.mysql.jdbc.Driver"/>
  •                 <propertyname="url"value="jdbc:mysql://localhost/test"/>
  •                 <propertyname="username"value="qgd"/>
  •                 <propertyname="password"value="123456"/>
  •             </dataSource>
  •         </environment>
  •     </environments>
  •     <mappers>
  •         <mapperresource="test/dao/PetMapper.xml"/>
  •     </mappers>
  • </configuration>

  

2. 另外还要使用然后我们还需要一个Main示例方法来调用这些已生成的代码:

Java代码  


  • packagetest;  
  •   
  • importjava.io.Reader;  
  • importjava.util.List;  
  •   
  • importorg.apache.ibatis.io.Resources;  
  • importorg.apache.ibatis.session.SqlSession;  
  • importorg.apache.ibatis.session.SqlSessionFactory;  
  • importorg.apache.ibatis.session.SqlSessionFactoryBuilder;  
  •   
  • importtest.dao.PetMapper;  
  • importtest.model.Pet;  
  • importtest.model.PetExample;  
  •   
  • publicclassTest {  
  •   
  •     publicstaticvoidmain(String[] args) throwsException {  
  •         String resource = "MapperConfig.xml";  
  •         Reader reader = Resources.getResourceAsReader(resource);  
  •         SqlSessionFactory sqlMapper = newSqlSessionFactoryBuilder().build(reader);  
  •         SqlSession sqlSession = sqlMapper.openSession();  
  •   
  •         PetExample pet = newPetExample();  
  •         pet.or().andDeathIsNotNull();  
  •         try{  
  •             PetMapper mapper = sqlSession.getMapper(PetMapper.class);  
  •             List<Pet> allRecords = mapper.selectByExample(pet);  
  •             for(Pet s : allRecords)  
  •                 System.out.println(s);  
  •         } finally{  
  •             sqlSession.close();  
  •         }  
  •     }  
  • }  

 

这样就可以打印出相应的查询结果信息了。

四、小结

该示例的完整的Eclipse工程见附件mybatis-generator-usage.zip,其中已经包含了示例需要使用的jar包。

本文中只是用到了mybatis-generator 的一部分功能,mybatis-generator 生成代码的方式还包括ant或Maven脚本,或者直接使用java API生成;另外通过修改配置文件,generator还可以指定表的生成细节,并可以添加插件。其功能文档在generator的分发包的doc文件夹下有更详细的介绍。

这里使用的表示没有主键的表,针对有一个主键或多个主键的表,mybatis-generator的生成的内容也有所不同,感兴趣的读者可以自行试验一下。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-304868-1-1.html 上篇帖子: springmvc mybatis整合 下篇帖子: 讲的很好的几篇mybatis的博文,学习了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表