使用mybatis-generator生成自动生成mapper.java和mapper.xml等文件

qizi746 2018-02-07 04:51:22
首先,新建一个maven项目



groupid和artifactId被统称为“坐标”,可以保证项目的唯一性,可以根据这两个id去maven本地仓库中查找到任意项目.
groupId对应JAVA的包的结构,是main目录里java的目录结构。 一般分为多个段,这里说明前两段:第一段是域,第二段是公司名称。域又分为org、com、cn等等许多,其中org为非营利组织,com为商业组织。
artifactId是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。
就如我所在的公司京颐集团,缩写为kyee,公司的产品groupId就是com.kyee,因为公司产品是盈利性质的;再如apache公司的tomcat项目:这个项目的groupId是org.apache,它的域是org(因为tomcat是非营利项目),公司名称是apache,artigactId是tomcat。
按照这个规则,我所创建的项目,groupId为cn.qizi,cn表示域为中国,qizi是我的网络常用名。artifactId设置为testMybatisGenerator,是此项目的名称。依照这个设置,我的包结构最好是cn.qizi.testMybatisGenerator打头的,如果有个StudentDao,它的全路径就是cn.qizi.testMybatisGenerator.dao.StudentDao。


项目生成,接下来就是增加下面图中结构,用以存放各层文件

到这里,项目的架子就已经搭起来了,我们也该进入正题,讲解如何使用mybatis-generator生成自动生成mapper.java和mapper.xml等文件
首先要配置pom.xml,加载mybatis-generator插件和依赖。在pom.xml文件中增加:

<build>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
<dependencies>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.1.0</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
按照路径src/main/resources/generatorConfig.xml创建配置文件,配置文件中引入了db.properties.

generatorConfig.xml配置文件内容:
<?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>

<!--导入属性配置,也可不引入,则下面数据库连接的信息要直接写出 -->
<properties resource="db.properties"></properties>

<context id="testTables" targetRuntime="MyBatis3">
<commentGenerator>
<!-- 是否去除自动生成的注释 true:是; false:否 -->
<property name="suppressAllComments" value="true" />
</commentGenerator>
<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
<jdbcConnection driverClass="${jdbc.driver}"
connectionURL="${jdbc.url}"
userId="${jdbc.username}"
password="${jdbc.password}">
</jdbcConnection>

<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和
NUMERIC 类型解析为java.math.BigDecimal -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>

<!-- targetProject:生成PO类的位置 -->
<javaModelGenerator targetPackage="cn.qizi.testMybatisGenerator.pojo"
targetProject="src/main/java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- targetProject:mapper映射文件生成的位置 -->
<sqlMapGenerator targetPackage="cn.qizi.testMybatisGenerator.mapper"
targetProject="src/main/resources">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>
<!-- targetPackage:mapper接口生成的位置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="cn.qizi.testMybatisGenerator.dao"
targetProject="src/main/java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
<!-- 指定数据库表 -->

<table schema="" tableName="PAY_TRANSACTION_DETAIL"/>

<!-- 有些表的字段需要指定java类型
<table schema="" tableName="">
<columnOverride column="" javaType="" />
</table> -->
</context>
</generatorConfiguration>

db.properties文件内容:
jdbc.driver=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@192.168.20.250:1521:orcl
jdbc.username=xxxxxx
jdbc.password=xxxxxx

到此,便配置完成,可以生成相关文件了:

然后你会发现,你想要的文件已经出现:

希望本文能帮到像我一样的菜鸟,同样希望大神看到,见笑之余,能不吝赐教,解答下一直困扰我的问题:
1.就是按照此流程生成的.xml文件,内容重复了三遍,每次都要我手动删除;
2.使用这些自动生成的文件进行单表查询还算方便,但对于多表关联查询就很麻烦了,有什么好的解决办法么?


...全文
2680 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
appleyk 2018-02-08
  • 打赏
  • 举报
回复
http://blog.csdn.net/appleyk/article/details/78772344
appleyk 2018-02-08
  • 打赏
  • 举报
回复
使用mybatis的通用mapper,只需继承Mapper接口,增删改查一步到位,一句代码不用写,需要做的就是创建数据表在Java中对应的实体类,可以参考我的博文:Java web--使用MyBatis的通用Mapper对复杂繁琐的数据业务层进行抽离【亲测很暴力】 再说一下mybatis逆向工程自动生成数据映射的这种方式,适合对性能要求不是很高的web项目,而且这种方式太过简单,简单得无法满足我们实际开发中的需要,对于数据关系比较复杂的项目,这种方式就显得捉襟见肘,比如,插入1万条数据的时候,你用逆向工程里面的insert,你是不是要建立1万个数据库session,性能大大折扣,相反,我们可以利用逆向工程的思想,手动的去定制我们的自己的mapper,mybatis支持批量查询、修改以及插入,比如一万条数据,可以分10次,每次1000条数据进行批量插入,性能会有质的提升,更多mybatis的配置,可以参考地址:http://www.mybatis.org/mybatis-3/zh/configuration.html

51,410

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧