<javaModelGenerator>
标签
标签用于定义Java模型生成器的属性,元素用于定义Java模型生成器的属性是用于生成与数据库表相匹配的各种java类。必须包含子标签<context>
。
<javaModelGenerator targetPackage="test.model"
targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
必须的属性
targetPackage:指定自动生成类文件的包路径,当enableSubPackages
property为true时,实际的包路径将是targetPackage + sub packages,MyBatis Generator会根据包名生成对应的文件夹路径。
targetProject:为生成的对象指定一个project,如果你使用的是eclipse,应当指定项目的source folder,当然,也可以指定其他目录,如果目录不存在,MBG不会为你创建。
可选属性
无
子标签
- (0..N)
支持的properties
这些属性需要定义在子标签中
- constructorBased:是否生成构造函数,这个构造函数将包含domain类中的所有字段,同时SQL返回的result map将不通过set方法而是使用这个构造函数来组装对象,默认false。当“immutable”属性设置为true时,此字段被强制为true,此属性会被
<table>
标签的同名属性覆盖。另,该属性仅对Mybatis3有效。 - enableSubPackages:默认为false,举个例子,如果我们有张叫“MYTABLE ”的表在名为“MYSCHEMA”的schema中,并且我们设置了“targetPackage ”属性为”com.mycompany”;如果这个属性值设为true,那么为这张表自动生成的类将放置在”com.mycompany.myschema”中;如果false,则会放在”com.mycompany”中;
- immutable:默认值false,当为true时,自动生成的模型类将不会包含setter方法,而用构造方法来实现初始化赋值的功能;因此也就是immutable不可变的意思;如果为false,那么生成模型的同时会为模型生成一组setter方法,可以通过setter方法修改模型的属性;
- rootClass 指定一个所有模型类的父类,例如 com.mycompany.MyRootClass,此属性会被
<table>
标签中的同名属性覆盖;生成器在生成代码时会避免override,即父类中存在属性”aaa”,那么自动生成的对象将不再生成”aaa”属性来覆盖父类,判断是否与父类精确匹配:
- 属性名称精确匹配
- 属性拥有同样的类型
- 父类属性中有getter方法
- 有setter方法
- trimStrings:增加为返回的字符型字段值去除空白字符的代码;可以被
<table>
和<columnOverride>
标签中的同名元素覆盖。