使用Mybatis Generator自动生成Mybatis相关代码

本文介绍如何使用 MyBatis Generator 自动生成 MyBatis 相关代码,包括配置文件设置、运行方式及生成后的代码使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文将简要介绍怎样利用Mybatis Generator自动生成Mybatis的相关代码:

一、构建一个环境:

1. 首先创建一个表:

Sql代码 收藏代码
  1. CREATETABLEpet(nameVARCHAR(20),ownerVARCHAR(20),speciesVARCHAR(20),sexCHAR(1),birthDATE,deathDATE);

2. 然后注入数据

Sql代码 收藏代码
  1. insertintopetvalues('Fluffy','Harold','cat','f','1993-02-04',null);
  2. insertintopetvalues('Claws','Gwen','cat','m','1994-03-17',null);
  3. insertintopetvalues('Buffy','Harold','dog','f','1989-05-13',null);
  4. insertintopetvalues('Fang','Benny','dog','m','1990-08-27',null);
  5. insertintopetvalues('Bowser','Diane','dog','m','1979-08-31','1995-07-29');
  6. insertintopetvalues('Chirpy','Gwen','bird','f','1998-09-11',null);
  7. insertintopetvalues('Whistler','Gwen','bird',null,'1997-12-09',null);
  8. insertintopetvalues('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代码 收藏代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <!DOCTYPEgeneratorConfiguration
  3. PUBLIC"-//mybatis.org//DTDMyBatisGeneratorConfiguration1.0//EN"
  4. "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
  5. <generatorConfiguration>
  6. <classPathEntrylocation="mysql-connector-java-5.1.6-bin.jar"/>
  7. <contextid="DB2Tables"targetRuntime="MyBatis3">
  8. <commentGenerator>
  9. <propertyname="suppressDate"value="true"/>
  10. </commentGenerator>
  11. <jdbcConnectiondriverClass="com.mysql.jdbc.Driver"
  12. connectionURL="jdbc:mysql://localhost/test"userId="qgd"password="123456">
  13. </jdbcConnection>
  14. <javaTypeResolver>
  15. <propertyname="forceBigDecimals"value="false"/>
  16. </javaTypeResolver>
  17. <javaModelGeneratortargetPackage="test.model"
  18. targetProject="../src/main/java">
  19. <propertyname="enableSubPackages"value="true"/>
  20. <propertyname="trimStrings"value="true"/>
  21. </javaModelGenerator>
  22. <sqlMapGeneratortargetPackage="test.dao"
  23. targetProject="../src/main/java">
  24. <propertyname="enableSubPackages"value="true"/>
  25. </sqlMapGenerator>
  26. <javaClientGeneratortype="XMLMAPPER"
  27. targetPackage="test.dao"targetProject="../src/main/java">
  28. <propertyname="enableSubPackages"value="true"/>
  29. </javaClientGenerator>
  30. <tabletableName="pet"domainObjectName="Pet">
  31. </table>
  32. </context>
  33. </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代码 收藏代码
  1. java-jarmybatis-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代码 收藏代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <!DOCTYPEconfiguration
  3. PUBLIC"-//mybatis.org//DTDConfig3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration>
  6. <environmentsdefault="development">
  7. <environmentid="development">
  8. <transactionManagertype="JDBC"/>
  9. <dataSourcetype="POOLED">
  10. <propertyname="driver"value="com.mysql.jdbc.Driver"/>
  11. <propertyname="url"value="jdbc:mysql://localhost/test"/>
  12. <propertyname="username"value="qgd"/>
  13. <propertyname="password"value="123456"/>
  14. </dataSource>
  15. </environment>
  16. </environments>
  17. <mappers>
  18. <mapperresource="test/dao/PetMapper.xml"/>
  19. </mappers>
  20. </configuration>

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

Java代码 收藏代码
  1. packagetest;
  2. importjava.io.Reader;
  3. importjava.util.List;
  4. importorg.apache.ibatis.io.Resources;
  5. importorg.apache.ibatis.session.SqlSession;
  6. importorg.apache.ibatis.session.SqlSessionFactory;
  7. importorg.apache.ibatis.session.SqlSessionFactoryBuilder;
  8. importtest.dao.PetMapper;
  9. importtest.model.Pet;
  10. importtest.model.PetExample;
  11. publicclassTest{
  12. publicstaticvoidmain(String[]args)throwsException{
  13. Stringresource="MapperConfig.xml";
  14. Readerreader=Resources.getResourceAsReader(resource);
  15. SqlSessionFactorysqlMapper=newSqlSessionFactoryBuilder().build(reader);
  16. SqlSessionsqlSession=sqlMapper.openSession();
  17. PetExamplepet=newPetExample();
  18. pet.or().andDeathIsNotNull();
  19. try{
  20. PetMappermapper=sqlSession.getMapper(PetMapper.class);
  21. List<Pet>allRecords=mapper.selectByExample(pet);
  22. for(Pets:allRecords)
  23. System.out.println(s);
  24. }finally{
  25. sqlSession.close();
  26. }
  27. }
  28. }

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

四、小结

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

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

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

mybatis也能方向生成代码,能方向生成实体类(po)、mapper接口和Mapper接口映射文件,能减少我们代码的工作量。详细步骤如下 1、下载mybatis生成架包工具MyBatis_Generator_1.3.1.zip,解压架包把features、plugins文件夹下的架包分别拷贝到eclipse安装目录下的features、plugins文件夹。重启eclipse就行。 解压后图片如下: Eclipse路径如图: 拷贝替换如图: 2、创建generatorConfig.xml文件,安装好mybatis 就能创建generatorConfig.xml 3、配置generatorConfig.xml配置文件,详细如下 [html] view plain copy <?xml version="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> <!-- <classPathEntry location="D:\\rep\\mysql\\mysql-connector-java\\5.1.19\\mysql-connector-java-5.1.19.jar" /> --> <classPathEntry location="D:\\repo\\com\\oracle\\ojdbc14\\10.2.0.1.0\\ojdbc14-10.2.0.1.0.jar" /> <context id="DB2Tables" targetRuntime="MyBatis3"> <commentGenerator> <property name="suppressAllComments" value="true" /> <property name="suppressDate" value="true" /> </commentGenerator> <jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver" connectionURL="jdbc:oracle:thin:@xxx.xxx.xxx.xxx:1521:orcl4" userId="xxx" password="xxxx" /> <javaTypeResolver> <property name="forceBigDecimals" value="false" /> <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer true,把JDBC DECIMAL 和 NUMERIC 类型解析为java.math.BigDecimal --> </javaTypeResolver> <javaModelGenerator targetPackage="com.pcmall.domain.sale.order" targetProject="pos-service/src/main/java"> <property name="enableSubPackages" value="true" /> <property name="trimStrings" value="true" /> </javaModelGenerator> <sqlMapGenerator targetPackage="mybatis.mapper.sale.order" targetProject="pos-service/src/main/resources"> <property name="enableSubPackages" value="false" /> </sqlMapGenerator> <javaClientGenerator targetPackage="com.pcmall.dao.sale.order" targetProject="pos-service/src/main/java" type="XMLMAPPER"> <property name="enableSubPackages" value="false" /> </javaClientGenerator> <table tableName="hs_zxzflx" enableSelectByExample="false" enableDeleteByExample="false" enableCountByExample="false" selectByExampleQueryId="true" enableUpdateByExample="false"> <!-- <generatedKey column="ID" sqlStatement="oracle" identity="true" /> --> </table> </context> </generatorConfiguration> 4、右击generatorConfig.xml 点击Generate MyBatis/iBATIS Artifacts 生成对应接口、接口映射文件、实体类 5、查看结果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值