在做Mybatis 逆向工程生成 Javabean 时,结果发现生成多了一个 xxxKey 实体类,经过一番百度后知道了生成这个实体类的原因是表中存在联合主键,然后为了便于代码的重构,把实体和实体的关系隔绝到两个类,互相不干扰。
生成类如下图:
由于表 Answersheet 和表 Score 中都存在联合主键,然后一个表直接生成对应的三个 JavaBean(xxx,xxxExample,xxxKey)
如果想要正常生成,即不生成 xxxKey 实体类,只要在逆向工程的配置文件中的 context 标签里加上这个 defaultModelType="flat" 属性即可。(defaultModelType 为控制生成类方式)
<context id="DB2Tables" targetRuntime="MyBatis3" defaultModelType="flat">
加上之后再生成一次,结果发现这个 xxxKey 实体类没有了
---------------------------------------------------------------------------------------------------------------------
补充一下:
最近用mybatis的逆向工程生成代码的时候,发现的类多了一个 xxxWithBlos的类,经过了解,这是因为数据库表中的一个字段是text 类型,而 mybatis 逆向工程生成类时,会为这个字段单独生成一个 xxxWithBlos 的类
这样做的原因是:
text类型长度最大是65535,如果不用 blob 类型,就不能保证不溢出
解决:
用以上解决生成xxxKey的方法即可
经过实践本人用以下方式不知道为什么是不可以的,如果上面的方式无效,可以尝试下这种,也许可以
<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://ip:port/DBName" userId="root"
password="root">
<!-- 加入以下 -->
<property name="nullCatalogMeansCurrent" value="true" />
</jdbcConnection>