mac下mybatis-generator命令⾏⽅式⾃动⽣成mapper、
model、xml
技术是⼀层窗户纸。
1.⾸先下载两个jar包
mybatis-generator-core-1.3.5.jar
mysql-connector-java-6.0.6.jar
地址:
2.桌⾯上建⼀个⽂件夹存这些东西,并⼿动创建l⽂件和src⽂件夹。如下图所⽰:
3.配置l
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-////DTD MyBatis Generator Configuration 1.0//EN"
"/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<!-- 驱动程序(在classpath中已存在驱动的情况下不需要) -->
<classPathEntry location="/Users/XXX/Desktop/audomake/mysql-connector-java-6.0.6.jar" />
<context id="context1" targetRuntime="MyBatis3">
<!-- 注释 -->
<commentGenerator>
<property name="suppressAllComments" value="true" />
<property name="suppressDate" value="true" />
</commentGenerator>
<!-- 数据库连接 -->
<jdbcConnection driverClass="sql.cj.jdbc.Driver"
connectionURL="数据库地址"
userId="数据库名称"
password="数据库密码" />
<!--允许数值类型转换成不同类型,否则都映射为BigDecimal -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- cms为⼯程名 -->
<!-- del为javabean存放⽬录 -->
<!-- 模型⽂件 -->
<javaModelGenerator targetPackage="com.del"
targetProject="/Users/XXX/Desktop/audomake/src">
<property name="enableSubPackages" value="false" />
<!-- 当为true时,产⽣的代码⽂件将按照schema产⽣⼦⽂件夹 -->
<property name="trimStrings" value="true" />
<!-- set变量时⾃动剔除空⽩ -->
</javaModelGenerator>
<!-- XML映射⽂件 -->
<!-- l为SQL配置存放⽬录 -->
<sqlMapGenerator targetPackage="com.l"
targetProject="/Users/XXX/Desktop/audomake/src">
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>
<!-- DAO⽂件(mapper接⼝) -->
<!-- s.admin.mapper为SQL对应接⼝存⼊⽬录 -->
<javaClientGenerator targetPackage="com.health.db.mapper"
targetProject="/Users/XXX/Desktop/audomake/src" type="XMLMAPPER">
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
<!-- 数据库表 -->
<!-- 可以⼀次性配置多个表处理 -->
<!-- 后⾯发现去掉table中的schema属性就可以了.. 经测试,如果数据库⽤的是Oracle,SqlServer需要去掉schema属性,MySQL则不需要去掉-->  <table  tableName="rate_scales_patient" domainObjectName="RateScalesPatient">
<property name="useActualColumnNames" value="false"></property>
</table>
</context>
</generatorConfiguration>
4.终端输⼊ (两个⽂件的绝对路径)
java -jar /Users/XXX/Desktop/audomake/mybatis-generator-core-1.3.5.jar -configfile
/Users/XXX/Desktop/l -overwrite
附:l详细配置信息(转载部分)
有4种运⾏MBG的⽅法,具体请看⽂档
在MBG中,最主要也最重要的就是XML配置⽂件,因此本篇⽂章主要的内容就是XML配置。
这⾥按照配置的顺序对配置逐个讲解,更细的内容可以配合中⽂⽂档参照。
1. 配置⽂件头
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-////DTD MyBatis Generator Configuration 1.0//EN"
"/dtd/mybatis-generator-config_1_0.dtd">
使⽤最新版的MBG需要使⽤上⾯的xml头,配置⽂件必须包含上⾯的DOCTYPE。
2. 根节点
generatorConfiguration节点没有任何属性,直接写节点即可,如下:
<generatorConfiguration>
<!-- 具体配置内容 -->
</generatorConfiguration>
3. <generatorConfiguration>⼦元素
从这段开始,就是配置的主要内容,这些配置都是generatorConfiguration元素的⼦元素。
包含以下⼦元素(有严格的顺序):
1.  (0个或1个)
2.  (0个或多个)
3.  (1个或多个)
3.1  元素
这个元素⽤来指定外部的属性元素,不是必须的元素。
元素⽤于指定⼀个需要在配置中解析使⽤的外部属性⽂件,引⼊属性⽂件后,可以在配置中使⽤${property}这种形式的引⽤,通过这种⽅式引⽤属性⽂件中的属性值。对于后⾯需要配置的**jdbc信息**和targetProject属性会很有⽤。
这个属性可以通过resource或者url来指定属性⽂件的位置,这两个属性只能使⽤其中⼀个来指定,同时出现会报错。
resource:指定**classpath**下的属性⽂件,使⽤类似com/myproject/generatorConfig.properties这样的属性值。
url:可以指定⽂件系统上的特定位置,例如file:///C:/myfolder/generatorConfig.properties
3.2  元素
这个元素可以0或多个,不受限制。
最常见的⽤法是通过这个属性指定驱动的路径,例如:
<classPathEntry location="E:\mysql\mysql-connector-java-5.1.29.jar"/>
重点提醒:本⽂之前在这⾥有误导,特别强调。
注意,classPathEntry只在下⾯这两种情况下才有效:
当加载 JDBC 驱动内省数据库时
当加载根类中的 JavaModelGenerator 检查重写的⽅法时
因此,如果你需要加载其他⽤途的jar包,classPathEntry起不到作⽤,不能这么写,解决的办法就是将你⽤的jar包添加到类路径中,在Eclipse等IDE中运⾏的时候,添加jar包⽐较容易。当从命令⾏执⾏的时候,需要⽤java -cp xx.jar,xx2.jar xxxMainClass这种⽅式在-cp后⾯指定来使⽤(注意-jar会导致-cp⽆效)。
3.3  元素
在MBG的配置中,⾄少需要有⼀个<context>元素。
<context>元素⽤于指定⽣成⼀组对象的环境。例如指定要连接的数据库,要⽣成对象的类型和要处理的数据库中的表。运⾏MBG的时候还可以指定要运⾏的<context>。
该元素只有⼀个**必选属性**id,⽤来唯⼀确定⼀个<context>元素,该id属性可以在运⾏MBG的使⽤。
此外还有⼏个**可选属性**:
defaultModelType:**这个属性很重要**,这个属性定义了MBG如何⽣成**实体类**。
这个属性有以下可选值:
conditional:*这是默认值*,这个模型和下⾯的hierarchical类似,除了如果那个单独的类将只包含⼀个字段,将不会⽣成⼀个单独的类。因此,如果⼀个表的主键只有⼀个字段,那么不会为该字段⽣成单独的实体类,会将该字段合并到基本实体类中。
flat:该模型为每⼀张表只⽣成⼀个实体类。这个实体类包含表中的所有字段。**这种模型最简单,推荐使⽤。**
hierarchical:如果表有主键,那么该模型会产⽣⼀个单独的主键实体类,如果表还有BLOB字段,则会为表⽣成⼀个包含所有BLOB字段的单独的实体类,然后为所有其他的字段⽣成⼀个单独的实体类。 MBG会在所有⽣成的实体类之间维护⼀个继承关系。
targetRuntime:此属性⽤于指定⽣成的代码的运⾏时环境。该属性⽀持以下可选值:
MyBatis3:*这是默认值*
MyBatis3Simple
Ibatis2Java2
Ibatis2Java5⼀般情况下使⽤默认值即可,有关这些值的具体作⽤以及区别请查看中⽂⽂档的详细内容。
introspectedColumnImpl:该参数可以指定扩展ator.api.IntrospectedColumn该类的实现类。该属性的作⽤可以查看。
⼀般情况下,我们使⽤如下的配置即可:
<context id="Mysql" defaultModelType="flat">
如果你希望不⽣成和Example查询有关的内容,那么可以按照如下进⾏配置:
<context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat">
使⽤MyBatis3Simple可以避免在后⾯的<table>中逐个进⾏配置(后⾯会提到)。
MBG配置中的其他⼏个元素,基本上都是<context>的⼦元素,这些⼦元素(有严格的配置顺序)包括:
(0个或多个)
(0个或多个)mysql下载jar包
(0个或1个)
(1个)
(0个或1个)
(1个)
(0个或1个)
(0个或1个)
(1个或多个)
其中<property>属性⽐较特殊,后⾯讲解的时候都会和⽗元素⼀起进⾏讲解。在讲解<property>属性前,我们先看看**什么是分隔符?**。
这⾥通过⼀个例⼦说明。假设在Mysql数据库中有⼀个表名为user info,你没有看错,中间是⼀个空格,这种情况下如果写
出select * from user info这样的语句,肯定是要报错的,在Mysql中的时候我们⼀般会写成如下的样⼦:
select * from `user info`
这⾥的使⽤的**反单引号(`)**就是**分隔符**,**分隔符**可以⽤于**表名**或者**列名**。
下⾯继续看<property>⽀持的属性:
autoDelimitKeywords
beginningDelimiter
endingDelimiter
javaFileEncoding
javaFormatter
xmlFormatter
由于这些属性⽐较重要,这⾥⼀⼀讲解。
⾸先是autoDelimitKeywords,当表名或者字段名为SQL关键字的时候,可以设置该属性为true,MBG会⾃动给表名或字段名添加**分隔符**。
然后这⾥继续上⾯的例⼦来讲beginningDelimiter和endingDelimiter属性。
由于beginningDelimiter和endingDelimiter的默认值为双引号("),在Mysql中不能这么写,所以还要将这两个默认值改为**反单引号(`)**,配置如下:
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
属性javaFileEncoding设置要使⽤的Java⽂件的编码,默认使⽤当前平台的编码,只有当⽣产的编码需要特殊指定时才需要使⽤,⼀般⽤不到。
最后两个javaFormatter和xmlFormatter属性**可能会**很有⽤,如果你想使⽤模板来定制⽣成的java⽂件和xml⽂件的样式,你可以通过指定这两个属性的值来实现。
接下来分节对其他的⼦元素逐个进⾏介绍。
3.3.1  元素
该元素可以配置0个或者多个,不受限制。
<plugin>元素⽤来定义⼀个插件。插件⽤于扩展或修改通过MyBatis Generator (MBG)代码⽣成器⽣成的代码。
插件将按在配置中配置的顺序执⾏。
有关插件的详细信息可以参考和了解更多。
3.3.2  元素
该元素最多可以配置1个。
这个元素⾮常有⽤,相信很多⼈都有过这样的需求,就是希望MBG⽣成的代码中可以包含**注释信息*
*,具体就是⽣成表或字段的备注信息。
使⽤这个元素就能很简单的实现我们想要的功能。这⾥先介绍该元素,介绍完后会举例如何扩展实现该功能。
该元素有⼀个可选属性type,可以指定⽤户的实现类,该类需要实现ator.api.CommentGenerator接⼝。⽽且必有⼀个默认的构造⽅法。这个属性接收默认的特殊值DEFAULT,会使⽤默认的实现类ator.internal.DefaultCommentGenerator。
默认的实现类中提供了两个可选属性,需要通过<property>属性进⾏配置。
suppressAllComments:**阻⽌**⽣成注释,默认为false
suppressDate:**阻⽌**⽣成的注释包含时间戳,默认为false

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。