Open sagexueqi opened 3 years ago
问题描述 在mysql数据库中,表中字段类型为bigint(20) unsigned时,生成的Mapper文件jdbcType=BIGINT UNSIGNED。导致应用加载Mapper配置失败,无法启动。
bigint(20) unsigned
jdbcType=BIGINT UNSIGNED
建表语句
GUI中显示的JDBC TYPE
Mapper文件中错误的jdbcType
期望结果 针对类似的字段数据类型,需要根据java.sql.Types转换为实际的jdbcType。
java.sql.Types
bigint(20) unsigned在mapper中的jdbcType应该为BIGINT
问题原因
DbUtil.getTableColumns()
JDBC TYPE
rs.getString("TYPE_NAME")
修复方案
jdbc type
JavaTypeResolverDefaultImpl
问题描述 在mysql数据库中,表中字段类型为
bigint(20) unsigned
时,生成的Mapper文件jdbcType=BIGINT UNSIGNED
。导致应用加载Mapper配置失败,无法启动。建表语句![image](https://user-images.githubusercontent.com/5387597/124485817-8abcb300-dddf-11eb-9b77-1b7fffd1c518.png)
GUI中显示的JDBC TYPE![image](https://user-images.githubusercontent.com/5387597/124486050-c9eb0400-dddf-11eb-9744-dcc699914814.png)
Mapper文件中错误的jdbcType![image](https://user-images.githubusercontent.com/5387597/124486293-061e6480-dde0-11eb-9a16-396897bed046.png)
期望结果 针对类似的字段数据类型,需要根据
java.sql.Types
转换为实际的jdbcType。bigint(20) unsigned
在mapper中的jdbcType应该为BIGINT问题原因
DbUtil.getTableColumns()
获取列JDBC TYPE
的过程中,直接根据rs.getString("TYPE_NAME")
获取到的Type名称作为JDBC TYPE,并覆盖mybatis-generator生成的列配置修复方案
DbUtil.getTableColumns()
设置字段jdbc type
时,使用mybatis generator提供的JavaTypeResolverDefaultImpl
进行转换