Maven集成插件mybatis-generator(mybatis自动生成实体代码的插件)使用

mybatis-generator这个插件有什么用处

这个插件是通过连接数据库,根据数据库中的表来自动生成model、数据库控制层接口以及对应的xml文件的一个插件

怎么使用这个插件

现在来谈谈怎么使用这个插件,既然式maven下的插件,所以第一步先建立一个maven的项目,然后再pom文件里的build标签下的plugins标签下加上这个插件的内容

注意:要在这个这插件下加上MySQL的驱动和mybatis的依赖,不然等会去生成代码的时候会报找不到对应操作的错误,这里的log4j插件可加可不加,不影响最后的结果。如果在这里不加入对应的依赖,也可以单独建立一个配置文件来指定本地的这些jar包的位置,这个稍后再介绍

然后第二步新增一个generatorConfig.xml的文件放在maven项目的resource文件夹下

然后讲解下里面一些常用的标签以及这些标签一些常用的属性
官网地址:http://www.mybatis.org/generator/configreference/commentGenerator.html

1)generatorConfiguration这个属性,顾名思义,这个就是这个插件的配置内容标签了
2)context:元素用于指定生成一组对象的环境。 子元素用于指定要连接的数据库,要生成的对象类型以及要内省的表。 可以在元素内列出多个元素,以允许在MyBatis Generator(MBG)的同一运行中生成来自不同数据库或具有不同生成参数的对象。
常用属性:
id: 这个context唯一的标识,在一些报错信息上会用到;
defaultModelType:此属性用于设置生成的模型类型的默认值。 模型类型定义MBG将如何生成域类。 对于某些模型类型,MBG将为每个表生成单个域类,而其他MBG可能会根据表的结构生成不同的类。 该属性支持以下值:
conditional:
这是默认值
此模型类似于层次模型,只是如果该单独的类只包含一个字段,则不会生成单独的类。 因此,如果表只有一个主键字段,该字段将合并到基本记录类中。

flat:
此模型仅为任何表生成一个域类。 该类将保存表中的所有字段。

hierarchical:
如果表具有主键,则此模型将生成主键类,另一个类包含表中的任何BLOB列,另一个类包含其余字段。 类之间存在适当的继承关系。

targetRuntime:这个属性是指生成代码时运行的插件,比如mybatis3,ibatis等,常用的值有:MyBatis3、MyBatis3Simple、MyBatis3DynamicSql、Ibatis2Java2、Ibatis2Java5

3)commentGenerator:元素用于定义Comment Generator的属性。 Comment Generator用于为MyBatis Generator(MBG)生成的各种元素生成注释(Java字段,Java方法,XML元素等)。 默认的Comment Generator将JavaDoc注释添加到所有生成的Java元素,以在Eclipse插件中启用Java合并功能。 此外,还会为每个生成的XML元素添加注释。 评论的目的还在于告知用户元素已生成并且可以重新生成(即 - 不应更改它们)。 此元素是元素的可选子元素。
默认实现是org.mybatis.generator.internal.DefaultCommentGenerator。 如果您只想修改某些行为,则默认实现是为可扩展性而设计的。

常用属性:
suppressAllComments:此属性用于指定MBG是否将在生成的代码中包含任何coments;默认值是false,当属性为false或未指定时,所有生成的元素都将包含指示元素是生成元素的注释。为true时不生成对应的注释

suppressDate:此属性用于指定MBG是否将在生成的注释中包含生成时间戳。默认值是false,当该属性的值为false或未设置时,默认生成的注释会生成时间戳.当值为true时生成的注释不加时间戳。

4)jdbcConnection:元素用于指定内省表所需的数据库连接的属性。 MyBatis Generator使用JDBC的DatabaseMetaData类来发现您在配置中指定的表的属性。 每个元素都需要一个或元素。

常用属性:
driverClass:数据库连接驱动类
connectionURL:数据库连接地址
注意:当数据库连接地址的URL中有& 符号的时候,需要用&替代转义
userId:数据库用户名
password:连接密码

5)javaTypeResolver:元素用于定义Java类型解析器的属性。 Java Type Resolver用于根据数据库列信息计算Java类型。 如果可能的话,默认的Java Type Resolver尝试通过替换Integral类型(Long,Integer,Short等)来尝试使JDBC DECIMAL和NUMERIC类型更容易使用。如果不希望出现这种情况,请将属性“forceBigDecimals”设置为“true”。 如果您想要与默认行为不同的行为,也可以替换自己的实现。 此元素是元素的可选子元素。

6)javaModelGenerator:元素用于定义Java模型生成器的属性。 Java模型生成器构建与内省表匹配的主键类,记录类和Query by Example类。 此元素是元素的必需子元素。

常用属性:
constructorBased:此属性用于选择MyBatis Generator是否将为接受类中每个字段的值的类生成构造函数。 此外,将构建SQL结果映射以使用构造函数而不是每个字段的“setter”。
此属性仅适用于MyBatis3,iBATIS2将被忽略。
如果“immutable”属性设置为“true”,则忽略此属性(并强制为“true”)。

元素中的相应属性可以覆盖此属性。
默认值为false。

enableSubPackages:此属性用于选择MyBatis Generator是否将根据内省表的目录和架构为对象生成不同的Java包。
例如,假设模式MYSCHMA中的表为MYTABLE。 还假设targetPackage属性设置为“com.mycompany”。 如果此属性为true,则表的生成对象将放在包“com.mycompany.myschema”中。 如果属性为false,则生成的对象将放在“com.mycompany”架构中。
默认值为false。

immutable:此属性用于选择MyBatis Generator是否将生成不可变模型类 - 这意味着类将不具有“setter”方法,并且构造函数将接受类中每个字段的值。
如果为true,则强制使用参数化构造函数构建模型类,而不管“constructorBased”属性的值如何。
此属性仅适用于MyBatis3,iBATIS2将被忽略。

元素中的相应属性可以覆盖此属性。
默认值为false。

trimStrings:此属性用于选择MyBatis Generator是否添加代码以从数据库返回的字符字段中修剪空白区域。 如果数据库将数据存储在CHAR字段而不是VARCHAR字段中,则此选项非常有用。 如果为true,MyBatis Generator将插入代码以修剪字符字段。 可以使用

或元素中的trimStrings属性覆盖。
默认值为false。

7)sqlMapGenerator:元素用于定义SQL映射生成器的属性。 SQL Map Generator为每个内省表构建一个MyBatis / iBATIS格式的SQL映射XML文件。

如果定位了iBATIS2,则此元素是元素的必需子元素。

如果MyBatis3是目标,那么只有当您选择的javaClientGenerator需要XML时,此元素才是元素的必需子元素。
如果未指定javaClientGenerator,则适用以下规则:
如果指定sqlMapGenerator,则MBG将仅生成SQL映射XML文件和模型classess。
如果未指定sqlMapGenerator,则MBG将仅生成模型类。
常用属性:
targetPackage:这是将放置生成的SQL Maps的包。 在默认生成器中,属性“enableSubPackages”控制实际包的计算方式。 如果为true,则计算的包将是targetPackage加上表的目录和模式的子包(如果存在)。 如果为false(默认值),则计算的包将完全是targetPackage属性中指定的包。 MyBatis Generator(MBG)将根据生成的包创建文件夹。

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

enableSubPackages:此属性用于选择MBG是否将根据内省表的目录和架构为对象生成不同的Java包。
例如,假设模式MYSCHMA中的表为MYTABLE。 还假设targetPackage属性设置为“com.mycompany”。 如果此属性为true,则表的生成的SQL Map将放在包“com.mycompany.myschema”中。 如果属性为false,则生成的SQL Map将放在“com.mycompany”架构中。
默认值为false。

8)javaClientGenerator:元素用于定义Java客户端生成器的属性。 Java客户端生成器构建Java接口和类,允许轻松使用生成的Java模型和XML映射文件。 对于iBATIS2目标环境,这些生成的对象采用DAO接口和实现类的形式。 对于MyBatis,生成的对象采用映射器接口的形式。 此元素是元素的可选子元素。 如果未指定此元素,则MyBatis Generator(MBG)将不会生成Java客户端接口和类。

常用属性:
type:此属性用于选择一个预定义的Java客户端生成器,或指定用户提供的Java客户端生成器。 任何用户提供的DAO生成器都必须扩展类org.mybatis.generator.codegen.AbstractJavaClientGenerator类,并且必须具有公共默认构造函数。
该属性接受以下值以选择其中一个预定义的生成器:
当context标签的targetRuntime是Mybatis3时,type属性可以有一下三个值:
XMLMAPPER:生成的对象将是MyBatis 3.x映射器基础结构的Java接口。 接口将依赖于生成的XML映射器文件

MIXEDMAPPER:生成的对象将是MyBatis 3.x映射器基础结构的Java接口。 接口将基于注释和XML的混合。 将使用注释将在简单注释工作的地方使用。 此客户端不会生成和Sql Provider,因此所有复杂的动态SQL都将以XML格式生成。
MIXEDMAPPER需要MyBatis 3.0.4或更高版本。

ANNOTATEDMAPPER:生成的对象将是MyBatis 3.x映射器基础结构的Java接口。 接口将基于注释和MyBatis 3.x SqlProviders。 不会生成XML映射器文件。
ANNOTATEDMAPPER需要MyBatis 3.0.4或更高版本。

9)table:

元素用于选择数据库中的表以进行内省。 选定的表将导致为每个表生成以下对象:

MyBatis / iBATIS格式的SQL Map文件
一组构成表格“模型”的类,包括:
用于匹配表的主键的类(如果表具有主键)。
用于匹配表中不在主键和非BLOB字段中的字段的类。 如果有主键,则此类将扩展主键。
用于保存表中任何BLOB字段的类(如果有)。 此类将根据表的配置扩展前两个类中的一个。
一个类,用于在不同的“by example”方法中生成动态where子句(selectByExample,deleteByExample)。
(可选)DAO接口和类
必须至少指定一个

元素作为元素的必需子元素。 您可以指定无限制的表元素。

常用属性:
tableName:数据库表的名称(不包括架构或目录)。 如果需要,指定的值可以包含SQL通配符。

schema:数据库模式 - 如果您的数据库不使用模式,或者存在默认模式,则不需要。 如果需要,指定的值可以包含SQL通配符。

catalog:数据库目录 - 如果数据库不使用目录,或者存在缺省目录,则不需要。

alias:如果指定,则此值将用于对任何生成的SQL select语句中的表和所有列名称进行别名。 列名称将使用模式alias_actualColumnName别名。

domainObjectName:生成对象名称的基本名称。 如果未指定,MBG将根据tableName自动生成名称。 名称(在此处指定或自动生成)将用于计算生成的域类名称和DAO类名称。
您可以在域对象名称中指定包片段。 例如,如果指定foo.Bar,则域对象将为Bar,并且包foo将附加到生成器配置中指定的目标包。

mapperName :MyBatis3生成的映射器类和XML文件的名称。 如果未指定,则名称将是域对象名称,加上单词“Mapper”。
您可以在映射器名称中指定包片段。 例如,如果指定foo.BarMapper,则映射器将为BarMapper,并且包foo将附加到生成器配置中指定的目标包。
自版本1.3.4

sqlProviderName:MyBatis3生成的SQL提供程序类的名称(可能会也可能不会根据配置生成)。 如果未指定,则名称将是域对象名称,加上单词“SqlProvider”。
您可以在SQL提供程序名称中指定程序包片段。 例如,如果指定foo.BarSqlProvider,则SQL提供程序将为BarSqlProvider,并且包foo将附加到生成器配置中指定的目标程序包。
自版本1.3.4

enableInsert:表示是否应生成插入语句。
默认值为true。

enableSelectByPrimaryKey:表示是否应生成select by primary key语句。 无论此设置如何,如果表没有主键,则不会生成语句。
默认值为true。

enableSelectByExample:表示是否应生成select by example语句。 此语句允许在运行时生成许多不同的动态查询。
默认值为true。

enableUpdateByPrimaryKey:表示是否应生成主键语句更新。 无论此设置如何,如果表没有主键,则不会生成语句。
默认值为true。

enableDeleteByPrimaryKey:表示是否应生成主键语句删除。 无论此设置如何,如果表没有主键,则不会生成语句。
默认值为true。

enableDeleteByExample:表示是否应生成按示例删除语句。 此语句允许在运行时生成许多不同的动态删除。
默认值为true。

enableCountByExample:表示是否应生成按语句计数的语句。 此语句将返回表中与示例匹配的行数。
默认值为true。

enableUpdateByExample:表示是否应生成示例语句的更新。 此语句将更新表中与示例匹配的行。 如果为true,则还将生成示例“selective”语句的更新。 “selective”语句仅更新record参数中的相应值为非null的列。
默认值为true。

selectByPrimaryKeyQueryId:此值将以此形式添加到select by primary key语句的选择列表中:“''作为QUERYID”。 这对于在运行时识别DBA跟踪工具中的查询非常有用。 如果使用这样的值,则应为MBG生成的每个不同查询指定唯一ID。

selectByExampleQueryId:此值将以此形式添加到select by example语句的选择列表中:“''作为QUERYID”。 这对于在运行时识别DBA跟踪工具中的查询非常有用。 如果使用这样的值,则应为MBG生成的每个不同查询指定唯一ID。

怎么生成对应代码?

想在对应的数据库新建一张表,然后在编辑器中进行以下操作:

然后就可以去配置文件里对应的包的位置查看生成的代码了

猜你喜欢

转载自blog.csdn.net/Strongermans/article/details/84235527