MyBatis逆向工程时Mapper.xml中生成多余字段问题解决
比如我们有Employee实体类、EmployeeMapper接口、EmployeeMapper.xml映射文件 Employee中明明只有employee_id,last_name,email,department_id的字段,而sql映射文件中缺出现了manager_id,first_name,commission_pct等等多余字段
原因: 逆向工程生成代码的过程中,不光会根据我们指定数据库mybatis中的表employees生成了代码,而且还根据系统自带的数据库performance_scheme下的employees表又生成了代码,两张表都叫employees,生成的代码都合并到了一起,导致了错误
解放方法一:修改逆向工程的jdbc配置(推荐) 在generatorConfig.xml的数据库连接信息处添加一条标签
<!--解决mysql驱动升级到8.0后不生成指定数据库代码的问题-->
<property name="nullCatalogMeansCurrent" value="true" />
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/mybatis"
userId="root"
password="lnzh123">
<!--解决mysql驱动升级到8.0后不生成指定数据库代码的问题-->
<property name="nullCatalogMeansCurrent" value="true" />
</jdbcConnection>
解决方法二:修改我们要逆向工程自动生成的表的名字 修改我们要逆向工程自动生成的表的名字,使之不要与同一个数据库下的其他表的名字有所重复
<table tableName="employees_mybatis" domainObjectName="Employee"/>
<table tableName="departments_mybatis" domainObjectName="Department"/>
解决方法三:修改逆向工程配置文件generatorConfig.xml(不推荐) 在逆向工程配置文件generatorConfig.xml中的 标签中添加catalog字段,指定表的数据库,就可以防止从performance_scheme中读取表
<!-- 逆向分析的表 -->
<!-- catalog:指定表所在的数据库名-->
<!-- tableName设置为*号,可以对应所有表,此时不写domainObjectName -->
<!-- domainObjectName属性指定生成出来的实体类的类名 -->
<table catalog="mybatis" tableName="employees" domainObjectName="Employee"/>
<table catalog="mybatis" tableName="departments" domainObjectName="Department"/>
但这个方法同时也会造成自动生成的文件的目录出现问题 还需要修改配置文件中相关的包名
|