技术程序员

mybatis自动生成类,ORM配置实践

2016-01-30  本文已影响669人  igool

        mybatis目前一直作为我主要使用的ORM框架,当然,它的简单,SQL可控,高效才是我选择它的最终原因。前段时间学习了他的实体,ORM的XML文件自动生成,感觉也是比较简单。下面稍微介绍一下具体的配置方面的

在它的官网上,有几种方式来生成类及配置。

1 从命令提示符 使用 XML 配置文件

2 作为Ant 任务使用 XML 配置文件

3 作为Maven Plugin

4 从另一个Java 程序使用 XML 配置文件

5 插件生成

今天,我只讲实践第3,5点:

一 使用MAVEN插件

首先在你的POM里面添加一个PLUG,


另外,针对MVN,需要设置两个内置变量:


mybatis.generator.overwrite:表示每次生成是否覆盖之前的文件,默认为否

mybatis.generator.configurationFile:表示生成代码文件的配置文件,默认文件名为generatorConfig.xml,这里我进行自定义,因为插件生成对比MVN的生成,里面的配置项不能公用,当然。各位看官,有好的方式,也请分享一下。OK。MVN的配置生成就OK了。你只需要使用熟悉的mvn clean install,即可从DB生成你想要的实体,ORM的配置。

二 使用官方的插件

这个是基于eclipse的swt的,GITHUB上面,有这个插件的地址https://github.com/mybatis/generator/tree/master/eclipse/UpdateSite,下载下来,然后放到eclispe下面的dropins下面,重启一下就行了。

最后,我们重点的讲一下generatorConfig.xml这个配置项文件

classPathEntry :元素 用于添加运行类路径位置到类路径中的 MyBatis Generator(MBG)。 classPathEntry元素是generatorConfiguration的子元素.MBG 在这些情况下从这些路径下加载类:

a 当加载 JDBC 驱动内省数据库时

b 当加载根类中的 JavaModelGenerator 检查重写的方法时

context :元素用于指定生成一组对象的环境。子元素用于指定要连接到的数据库、 要生成对象的类型和要内省的表。多个 context元素可以在generatorConfiguration元素中列出来,这样可以在同一个MyBatis Generator (MBG)从不同的数据库或者使用不同的生成生成器参数生成对象。以下都 是context的子元素

commentGenerator:用来定义注释生成的属性,主要有suppressAllComments,suppressDate这两个属性。其中suppressAllComments
表示是否生成注释,suppressDate表示是否生成日期

jdbcConnection:定义数据库相关的属性说明,比较简单,就不列了。


javaModelGenerator:JAVA的model生成配置,主要有targetPackage,targetProject丙个属性

targetPackage:表示生成的MODEL包路径

targetProject:表示生成的MODEL项目路径

sqlMapGenerator:用于定义SQL映射生成器的属性。SQL映射生成器为每一个内省的表生成MyBatis/iBATIS形式的XML文件。如果不指定一个javaClientGenerator,则适用以下规则:

如果您指定一个sqlMapGenerator,那么MBG将只生成SQL映射的XML文件和模型对象。如果您没有指定一个sqlMapGenerator,那么MBG将只会生成模型对象。

targetPackage:这个包用于放置生成的SQL映射文件。在默认的生成器中,属性"enableSubPackages"用来控制如何计算实际的包。

如果是true,如果表的catalog和schema存在,就将他们作为子包加起来。如果"enableSubPackages"是false(默认值),计算的package将是targetPackage属性指定的值。MBG 将创建所需的生成包的文件夹。

targetProject:这用来指定生成SQL映射的目标项目。当在Eclipse环境中运行时,此选项指定保存对象的位置的项目和源文件夹。在其他环境中,此值应为本地文件系统上的现有目录。如果它不存在,MBG不会创建它。

javaClientGenerator:用于定义 Java 客户端代码生成器的属性。Java客户端生成器生成Java接口和类,它可以简单地使用生成的Java模型和XML映射文件。在iBATIS2目标环境中,这些对象可以生成DAO接口和实现类形式的代码。对Mybatis来说,会生成Mapper接口形式的代码。如果不指定此元素,然后代码生成器(MBG)将不会生成Java客户端接口和类。

table 元素用来从内省数据库中选择一个表。选定的表会生成如下的这些对象:

一个 MyBatis/iBATIS 格式的SQL映射文件

一组根据表生成的"model"类:

一个和表的主键匹配的类(如果表有主键)。

一个包含了非主键字段和BLOB字段的类,如果存在主键类,这个类就会继承主键类。

如果表中包含BLOB字段,就会有一个包含了BLOB字段的类。这个类会根据表的配置继承上面的一个或两个类。

一个用于不同的"by example"方法(selectByExample, deleteByExample)生成动态查询条件的类。

(可选) 一个DAO接口或者类。

最后给个配置截图:


当然,这个mybatis的插件其实是不支持多表关联去生成代码。初看,好像是不太友好。不过,你静下来想一下,其实也就明白。在一个大数据访问的时代,为什么需要多表关联。我们跟本不需要!!!就是要单表。足够简单,足够清晰,足够NB.话说回来,你确实需要多表关连时,可以在它的基础上,再去改你的SQL了。

上一篇下一篇

猜你喜欢

热点阅读