逆向⼯程__Generate插件安装xml配置⽂件解析使⽤反向⽣成代码接⼝说明
逆向⼯程
通过数据库中的单表,⾃动⽣成java代码。Mybatis官⽅提供了逆向⼯程,可以针对单表⾃动⽣成mybatis代码(mapper.l\pojo类),实现了ORM,对象关系映射。Generate插件
在eclipse中安装Generate插件
下载安装就是下⼀步那种
或者在l⽂件中添加mybatis的generator插件
<plugin>
<groupId&ator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<!--关联上⾯的配置⽂件 -->
<configurationFile>src/main/resources/l</configurationFile>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
<executions>
<execution>
<id>Generate MyBatis Artifacts</id>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId&ator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</version>
</dependency>
</dependencies>
</plugin>
创建逆向⼯程
项⽬类型没有限制,可以是java项⽬也可以是web项⽬,或者maven项⽬都可以。
创建⼀个xml配置⽂件
<?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>
<!-- 数据库的驱动包路径 -->
<classPathEntry location="D:\apache-maven-3.6.1\apache-maven-3.6.1\conf\repository\mysql\mysql-connector-java\5.1.41\mysql-connector-java-5.1.41.jar" />
<context id="DB2Tables" targetRuntime="MyBatis3">
<!-- 去掉⽣成⽂件中的注释 -->
<commentGenerator>
<property name="suppressAllComments" value="true" />
</commentGenerator>
<!-- 数据库链接URL、⽤户名、密码 -->
<jdbcConnection driverClass="sql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/demo"
userId="root"
password="rootzsl">
</jdbcConnection>
<!-- <jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver"
connectionURL="jdbc:oracle:thin:@localhost:1521:XE"
userId="car"
password="car">
</jdbcConnection>  -->
<javaTypeResolver >
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- ⽣成模型的包名和位置当前项⽬下 ,使⽤绝对路径,项⽬名\src\main\java-->
<!-- targetPackage="包" targetProject="当前项⽬下"-->
<javaModelGenerator targetPackage="com.zsl.pojo" targetProject="spring-springmvc-mybatis-pojo\src\main\java">
<!-- 是否在当前路径下新加⼀层schema,eg:false路径p.del, p.del.[schemaName] -->
<!-- 在targetPackage的基础上,根据数据库的schema再⽣成⼀层package,最终⽣成的类放在这个package下,默认为false -->
<property name="enableSubPackages" value="false" />
<!-- 设置是否在getter⽅法中,对String类型字段调⽤trim()⽅法 -->
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- ⽣成的映射⽂件包名和位置 -->
<!-- targetPackage="包" targetProject="当前项⽬下"-->
<sqlMapGenerator targetPackage="com.zsl.mapper"  targetProject="spring-springmvc-mybatis-mapper\src\main\java">
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>
<!-- ⽣成DAO的包名和位置 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.zsl.mapper"  targetProject="spring-springmvc-mybatis-mapper\src\main\java">
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
<!-- tableName="数据表" domainObjectName="" -->
<table  tableName="emp" domainObjectName="Emp" schema=""></table>
</context>
</generatorConfiguration>
运⾏,⾃动⽣成pojo以及orm映射⽂件和映射⽂件的接⼝
使⽤逆向⽣成的代码完成CRUD
⽣成了pojo类Emp和EmpExample,以及映射⽂件l和EmpMapper接⼝
EmpMapper接⼝说明
long countByExample(EmpExample example);// 按条件计数
int deleteByExample(EmpExample example);//  按条件进⾏删除
int deleteByPrimaryKey(Integer empno); //  按主键删除
int insert(Emp record);// 按条件插⼊数据(返回值为ID)
int insertSelective(Emp record);//  按条件插⼊值不为null的字段
List<Emp> selectByExample(EmpExample example);//  按条件查询
Emp selectByPrimaryKey(Integer empno);// 按主键查询
int updateByExampleSelective(@Param("record") Emp record, @Param("example") EmpExample exa
mple);// 按条件更新值不为null的字段int updateByExample(@Param("record") Emp record, @Param("example") EmpExample example);//按条件更新
int updateByPrimaryKeySelective(Emp record);// 按主键更新值不为null的字段
int updateByPrimaryKey(Emp record);// 按主键更新
Insert和insertSelective的区别:
两者的区别在于如果选择insert 那么所有的字段都会添加⼀遍即使没有值,
但是如果使⽤inserSelective就会只给有值的字段赋值(会对传进来的值做⾮空判断)。
适⽤于除了select查询操作的其他xxxx和xxxxSelective。
CRUD⼩demo
EmpService
package com.zsl.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.zsl.mapper.EmpMapper;
import com.zsl.pojo.Emp;
import com.zsl.pojo.EmpExample;
import com.zsl.pojo.EmpExample.Criteria;
import com.zsl.service.IEmpService;
@Service
public class EmpServiceImpl implements IEmpService {
@Autowired
private EmpMapper empMapper;
@Override
public List<Emp> query() {
EmpExample example = new EmpExample();
List<Emp> list = empMapper.selectByExample(example);
return list;
}
@Override
public List<Emp> queryByName(String ename) {
// TODO Auto-generated method stub
EmpExample example = new EmpExample();
Criteria criteria = ateCriteria();
criteria.andEnameLike(ename);
List<Emp> list = empMapper.selectByExample(example);
return list;
}
@Override
public Integer addEmp(Emp emp) {
// TODO Auto-generated method stub
int insertSelective = empMapper.insertSelective(emp);
return insertSelective;
}
@Override
public Integer updateEmp(Emp emp) {
// TODO Auto-generated method stub
int updateByPrimaryKey = empMapper.updateByPrimaryKey(emp);
return updateByPrimaryKey;
}
@Override
public Integer deleteEmp(Integer empno) {
// TODO Auto-generated method stub
int deleteByPrimaryKey = empMapper.deleteByPrimaryKey(empno);
return deleteByPrimaryKey;
}
}
Controller
package ller;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.zsl.pojo.Emp;
import com.zsl.service.IEmpService;
@Controller
public class TestAction {
@Autowired
private IEmpService empService;
@RequestMapping("/query")
@ResponseBody
public void query() {
// TODO Auto-generated method stub
List<Emp> list = empService.query();
for (Emp emp : list) {
System.out.println(emp);
}
}
@RequestMapping("/queryByName")
@ResponseBody
public void queryByName(String ename) {
// TODO Auto-generated method stub
List<Emp> list = empService.queryByName(ename);
for (Emp emp : list) {
System.out.println(emp);
}
}
@RequestMapping("/addEmp")
@ResponseBody
public void addEmp(Emp emp) {
// TODO Auto-generated method stub
Integer addEmp = empService.addEmp(emp);
System.out.println("新增了:"+addEmp);
}
@RequestMapping("/updateEmp")
@ResponseBody
public void updateEmp(Emp emp){
Integer updateEmp = empService.updateEmp(emp);
System.out.println("修改了:"+updateEmp);
}
@RequestMapping("/deleteEmp")
@ResponseBody
public void deleteEmp(Integer empno) {
// TODO Auto-generated method stub
Integer deleteEmp = empService.deleteEmp(empno);
System.out.println("删除了:"+deleteEmp);
}
}
附上
详细逆向⼯程配置xml解释说明
<?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>
<!-- 可以⽤于加载配置项或者配置⽂件,在整个配置⽂件中就可以使⽤${propertyKey}的⽅式来引⽤配置项 resource:配置资源加载地址,使⽤resource,MBG从classpath开始,⽐如com/myproject/generatorConfig.properties  url:配置资源加载地质,使⽤URL的⽅式,⽐如file:///C:/myfolder/generatorConfig.properties. 注意,两个属性只能选址⼀个;
另外,如果使⽤了mybatis-generator-maven-plugin,那么在l中定义的properties都可以直接在l中使⽤
<properties resource="" url="" /> -->
<!-- 在MBG⼯作的时候,需要额外加载的依赖包 location属性指明加载jar/zip包的全路径 <classPathEntry location="/Program
Files/IBM/SQLLIB/java/db2java.zip" /> -->
<!-- context:⽣成⼀组对象的环境 id:必选,上下⽂id,⽤于在⽣成错误时提⽰ defaultModelType:指定⽣成对象的样式
1,conditional:类似hierarchical; 2,flat:所有内容(主键,blob)等全部⽣成在⼀个对象中; 3,hierarchical:主键⽣成⼀个XXKey对象(key
class),Blob等单独⽣成⼀个对象,其他简单属性在⼀个对象中(record class) targetRuntime: 1,MyBatis3:默认的值,⽣成基于MyBatis3.x以上版本的内容,包括XXXBySample;
2,MyBatis3Simple:类似MyBatis3,只是不⽣成XXXBySample; introspectedColumnImpl:类全限定名,⽤于扩展MBG -->
<context id="mysql" defaultModelType="hierarchical"
targetRuntime="MyBatis3Simple">
<!-- ⾃动识别数据库关键字,默认false,如果设置为true,根据SqlReservedWords中定义的关键字列表;⼀般保留默认值,遇到数据库关键字(Java关键字),使⽤columnOverride覆盖 -->
<property name="autoDelimitKeywords" value="false" />
<!-- ⽣成的Java⽂件的编码 -->
<property name="javaFileEncoding" value="UTF-8" />
<!-- 格式化java代码 -->
<property name="javaFormatter"
value="ator.api.dom.DefaultJavaFormatter" />
<!-- 格式化XML代码 -->
<property name="xmlFormatter"
value="ator.api.dom.DefaultXmlFormatter" />
<!-- beginningDelimiter和endingDelimiter:指明数据库的⽤于标记数据库对象名的符号,⽐如ORACLE就是双引号,MYSQL默认是`反引号; -->
<property name="beginningDelimiter" value="`" />
<property name="endingDelimiter" value="`" />
<!-- 必须要有的,使⽤这个配置链接数据库 @TODO:是否可以扩展 -->
<jdbcConnection driverClass="sql.jdbc.Driver"
connectionURL="jdbc:mysql:///pss" userId="root" password="admin">
<!-- 这⾥⾯可以设置property属性,每⼀个property属性都设置到配置的Driver上 -->
</jdbcConnection>
<!-- java类型处理器⽤于处理DB中的类型到Java中的类型,默认使⽤JavaTypeResolverDefaultImpl;注意⼀点,默认会先尝试使⽤Integer,Long,Short等来对应DECIMAL和
NUMERIC数据类型; -->
<javaTypeResolver
type="pes.JavaTypeResolverDefaultImpl">
<!-- true:使⽤BigDecimal对应DECIMAL和 NUMERIC数据类型 false:默认, scale>0;length>18:使⽤BigDecimal;
scale=0;length[10,18]:使⽤Long; scale=0;length[5,9]:使⽤Integer; scale=0;length<5:使⽤Short; -->
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- java模型创建器,是必须要的元素负责:1,key类(见context的defaultModelType);2,java类;3,查询类
targetPackage:⽣成的类要放的包,真实的包受enableSubPackages属性控制; targetProject:⽬标
项⽬,指定⼀个存在的⽬录下,⽣成的内容会放到指定⽬录中,如果⽬录不存在,MBG不会⾃动建⽬录 -->
<javaModelGenerator
targetPackage="com._batis.domain"
targetProject="src/main/java">
<!-- for MyBatis3/MyBatis3Simple ⾃动为每⼀个⽣成的类创建⼀个构造⽅法,构造⽅法包含了所有的field;⽽不是使⽤setter; -->
<property name="constructorBased" value="false" />
<!-- 在targetPackage的基础上,根据数据库的schema再⽣成⼀层package,最终⽣成的类放在这个package下,默认为false -->
<property name="enableSubPackages" value="true" />
<!-- for MyBatis3 / MyBatis3Simple 是否创建⼀个不可变的类,如果为true,那么MBG会创建⼀个没有setter⽅法的类,取⽽代之的是类似constructorBased的类 -->
<property name="immutable" value="false" />
<!-- 设置⼀个根对象,如果设置了这个根对象,那么⽣成的keyClass或者recordClass会继承这个类;在Table的rootClass属性中可以覆盖该选项
注意:如果在key class或者record class中有root class相同的属性,MBG就不会重新⽣成这些属性了,包括: 1,属性名相同,类型相同,有相同的getter/setter⽅法; -->
<property name="rootClass"
value="com._batis.domain.BaseDomain" />
<!-- 设置是否在getter⽅法中,对String类型字段调⽤trim()⽅法 -->
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- ⽣成SQL map的XML⽂件⽣成器,注意,在Mybatis3之后,我们可以使⽤l⽂件+Mapper接⼝(或者不⽤mapper接⼝),
或者只使⽤Mapper接⼝+Annotation,所以,如果 javaClientGenerator配置中配置了需要⽣成XML的话,这个元素就必须配置
targetPackage/targetProject:同javaModelGenerator -->
<sqlMapGenerator
targetPackage="com._batis.mapper"
targetProject="src/main/resources">
<!-- 在targetPackage的基础上,根据数据库的schema再⽣成⼀层package,最终⽣成的类放在这个package下,默认为false -->
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!-- 对于mybatis来说,即⽣成Mapper接⼝,注意,如果没有配置该元素,那么默认不会⽣成Mapper接⼝ targetPackage/targetProject:同javaModelGenerator
type:选择怎么⽣成mapper接⼝(在MyBatis3/MyBatis3Simple下): 1,ANNOTATEDMAPPER:会⽣成使⽤Mapper接⼝+Annotation的⽅式创建(SQL⽣成在annotation中),不会⽣成对应的XML;
2,MIXEDMAPPER:使⽤混合配置,会⽣成Mapper接⼝,并适当添加合适的Annotation,但是XML会⽣成在XML中; 3,XMLMAPPER:会⽣成Mapper接⼝,接⼝完全依赖XML;
注意,如果context是MyBatis3Simple:只⽀持ANNOTATEDMAPPER和XMLMAPPER -->
<javaClientGenerator
targetPackage="com._batis.mapper" type="ANNOTATEDMAPPER"
targetProject="src/main/java">
<!-- 在targetPackage的基础上,根据数据库的schema再⽣成⼀层package,最终⽣成的类放在这个package下,默认为false -->
<property name="enableSubPackages" value="true" />
<!-- 可以为所有⽣成的接⼝添加⼀个⽗接⼝,但是MBG只负责⽣成,不负责检查 <property name="rootInterface"
value=""/> -->
</javaClientGenerator>
<!-- 选择⼀个table来⽣成相关⽂件,可以有⼀个或多个table,必须要有table元素选择的table会⽣成⼀下⽂件: 1,SQL
map⽂件 2,⽣成⼀个主键类; 3,除了BLOB和主键的其他字段的类; 4,包含BLOB的类; 5,⼀个⽤户⽣成动态查询的条件类(selectByExample,
deleteByExample),可选; 6,Mapper接⼝(可选) tableName(必要):要⽣成对象的表名;注意:⼤⼩写敏感问题。正常情况下,MBG会⾃动的去识别数据库标识符的⼤⼩写敏感度,在⼀般情况下,MBG会
根据设置的schema,catalog或tablename去查询数据表,按照下⾯的流程: 1,如果schema,catalog或tablename中有空格,那么设置的是什么格式,就精确的使⽤指定的⼤⼩写格式去查询;
2,否则,如果数据库的标识符使⽤⼤写的,那么MBG⾃动把表名变成⼤写再查; 3,否则,如果数据库的标识符使⽤⼩写的,那么MBG⾃动把表名变成⼩写再查;
4,否则,使⽤指定的⼤⼩写格式查询;另外的,如果在创建表的时候,使⽤的""把数据库对象规定⼤⼩写,就算数据库标识符是使⽤的⼤写,在这种情况下也会使⽤给定的⼤⼩写来创建表名;
这个时候,请设置delimitIdentifiers="true"即可保留⼤⼩写格式;可选: 1,schema:数据库的schema; 2,catalog:数据库的catalog;
3,alias:为数据表设置的别名,如果设置了alias,那么⽣成的所有的SELECT SQL语句中,列名会变成:alias_actualColumnName
4,domainObjectName:⽣成的domain类的名字,如果不设置,直接使⽤表名作为domain类的名字;可以设置为somepck.domainName,那么会⾃动把domainName类再放到somepck包⾥⾯;
5,enableInsert(默认true):指定是否⽣成insert语句; 6,enableSelectByPrimaryKey(默认true):指定是否⽣成按照主键查询对象的语句(就是getById或get);
7,enableSelectByExample(默认true):MyBatis3Simple为false,指定是否⽣成动态查询语句; 8,enableUpdateByPrimaryKey(默认true):指定是否⽣成按照主键修改对象的语句(即update);
9,enableDeleteByPrimaryKey(默认true):指定是否⽣成按照主键删除对象的语句(即delete); 10,enableDeleteByExample(默认true):MyBatis3Simple为false,指定是否⽣成动态删除语句;
11,enableCountByExample(默认true):MyBatis3Simple为false,指定是否⽣成动态查询总条数语句(⽤于分页的总条数查询);
12,enableUpdateByExample(默认true):MyBatis3Simple为false,指定是否⽣成动态修改语句(只修改对象中不为空的属性);
13,modelType:参考context元素的defaultModelType,相当于覆盖; 14,delimitIdentifiers:参考tableName的解释,注意,默认的delimitIdentifiers是双引号,如果类似MYSQL这样的数据库,使⽤的是`(反引号,那么还需要设置context的begi    15,delimitAllColumns:设置是否所有⽣成的SQL中的列名都使⽤标识符引起来。默认为false,delimitIdentifiers参考context的属性
注意,table⾥⾯很多参数都是对javaModelGenerator,context等元素的默认属性的⼀个复写; -->
<table tableName="userinfo">
<!-- 参考 javaModelGenerator 的 constructorBased属性 -->
<property name="constructorBased" value="false" />
<!-- 默认为false,如果设置为true,在⽣成的SQL中,table名字不会加上catalog或schema; -->
<property name="ignoreQualifiersAtRuntime" value="false" />
<!-- 参考 javaModelGenerator 的 immutable 属性 -->
<property name="immutable" value="false" />
<!-- 指定是否只⽣成domain类,如果设置为true,只⽣成domain类,如果还配置了sqlMapGenerator,那么在mapper
XML⽂件中,只⽣成resultMap元素 -->
<property name="modelOnly" value="false" />
springframework jar包下载
<!-- 参考 javaModelGenerator 的 rootClass 属性 <property name="rootClass" value=""/> -->
<!-- 参考javaClientGenerator 的 rootInterface 属性 <property name="rootInterface"
value=""/> -->
<!-- 如果设置了runtimeCatalog,那么在⽣成的SQL中,使⽤该指定的catalog,⽽不是table元素上的catalog
<property name="runtimeCatalog" value=""/> -->
<!-- 如果设置了runtimeSchema,那么在⽣成的SQL中,使⽤该指定的schema,⽽不是table元素上的schema <property
name="runtimeSchema" value=""/> -->
<!-- 如果设置了runtimeTableName,那么在⽣成的SQL中,使⽤该指定的tablename,⽽不是table元素上的tablename
<property name="runtimeTableName" value=""/> -->
<!-- 注意,该属性只针对MyBatis3Simple有⽤;如果选择的runtime是MyBatis3Simple,那么会⽣成⼀个SelectAll⽅法,如果指定了selectAllOrderByClause,那么会在该SQL中添加指定的这个order条件; -->
<property name="selectAllOrderByClause"
value="age desc,username asc" />
<!-- 如果设置为true,⽣成的model类会直接使⽤column本⾝的名字,⽽不会再使⽤驼峰命名⽅法,⽐如BORN_DATE,⽣成的属性名字就是BORN_DATE,⽽不会是bornDate -->
<property name="useActualColumnNames" value="false" />
<!-- generatedKey⽤于⽣成⽣成主键的⽅法,如果设置了该元素,MBG会在⽣成的<insert>元素中⽣成⼀条正确的<selectKey>元素,该元素可选
column:主键的列名; sqlStatement:要⽣成的selectKey语句,有以下可选项: Cloudscape:相当于selectKey的SQL为:
VALUES IDENTITY_VAL_LOCAL() DB2 :相当于selectKey的SQL为: VALUES IDENTITY_VAL_LOCAL()
DB2_MF :相当于selectKey的SQL为:SELECT IDENTITY_VAL_LOCAL() FROM SYSIBM.SYSDUMMY1
Derby :相当于selectKey的SQL为:VALUES IDENTITY_VAL_LOCAL() HSQLDB :相当于selectKey的SQL为:CALL
IDENTITY() Informix :相当于selectKey的SQL为:select dbinfo('sqlca.sqlerrd1') from
systables where tabid=1 MySql :相当于selectKey的SQL为:SELECT LAST_INSERT_ID()
SqlServer :相当于selectKey的SQL为:SELECT SCOPE_IDENTITY() SYBASE :相当于selectKey的SQL为:SELECT
@@IDENTITY JDBC :相当于在⽣成的insert元素上添加useGeneratedKeys="true"和keyProperty属性
<generatedKey column="" sqlStatement=""/> -->
<!-- 该元素会在根据表中列名计算对象属性名之前先重命名列名,⾮常适合⽤于表中的列都有公⽤的前缀字符串的时候,⽐如列名为:CUST_ID,CUST_NAME,CUST_EMAIL,CUST_ADDRESS等;
那么就可以设置searchString为"^CUST_",并使⽤空⽩替换,那么⽣成的Customer对象中的属性名称就不是 custId,custName等,⽽是先被替换为ID,NAME,EMAIL,然后变成属性:id,name,email;
注意,MBG是使⽤placeAll来替换searchString和replaceString的,
如果使⽤了columnOverride元素,该属性⽆效; <columnRenamingRule searchString="" replaceString=""/> -->
<!-- ⽤来修改表中某个列的属性,MBG会使⽤修改后的列来⽣成domain的属性; column:要重新设置的列名;注意,⼀个table元素中可以有多个columnOverride元素哈~ -->
<columnOverride column="username">
<!-- 使⽤property属性来指定列要⽣成的属性名称 -->
<property name="property" value="userName" />
<!-- javaType⽤于指定⽣成的domain的属性类型,使⽤类型的全限定名 <property name="javaType" value=""/> -->
<!-- jdbcType⽤于指定该列的JDBC类型 <property name="jdbcType" value=""/> -->
<!-- typeHandler ⽤于指定该列使⽤到的TypeHandler,如果要指定,配置类型处理器的全限定名注意,mybatis中,不会⽣成到l中的typeHandler
只会⽣成类似:where id = #{id,jdbcType=BIGINT,typeHandler=com._batis.MyTypeHandler}的参数描述
<property name="jdbcType" value=""/> -->
<!-- 参考table元素的delimitAllColumns配置,默认为false <property name="delimitedColumnName"
value=""/> -->
</columnOverride>
<!-- ignoreColumn设置⼀个MGB忽略的列,如果设置了改列,那么在⽣成的domain中,⽣成的SQL中,都不会有该列出现 column:指定要忽略的列的名字;
delimitedColumnName:参考table元素的delimitAllColumns配置,默认为false 注意,⼀个table元素中可以有多个ignoreColumn元素
<ignoreColumn column="deptId" delimitedColumnName=""/> -->
</table>
</context>
</generatorConfiguration>

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