默认开启大小写敏感,建表语句里都是大写且没有引号,实体类中如下,如果 @TableField("BRANCH")改为 @TableField("branch"),则插入时报错Invalid column name [branch],改为大写则插入正常。但是为什么其他字段带下划线的不用改为大写也不会报错呢??
@ApiModelProperty(value = "上级机构Id")
@TableField("parent_company_id")
@Excel(name = "上级机构Id")
private Long parentCompanyId;
/**
* 是否是分支机构
*/
@ApiModelProperty(value = "是否是分支机构")
@TableField("BRANCH")
@Excel(name = "是否是分支机构")
private String branch;
达梦数据库中,字段名加双引号会强制保留大小写,不加引号则默认转为大写。MyBatis-Plus 自带“驼峰转下划线并转为大写”的自动映射策略,因此像 parentCompanyId 会自动映射为数据库中的 PARENT_COMPANY_ID 字段,不会报错。而对于不含下划线的字段,如 branch,如果在 @TableField("branch") 中写成小写,则无法匹配达梦默认的大写字段 BRANCH,从而报错。解决方法是:在 @TableField 中写明大写字段名,或通过全局配置启用字段名自动转大写的策略
这纯是大小写和敏感问题呢,应该和下划线没关系,建议把SQL打印出来核实,可能insert语句没涉及到那些字段索引没报错而已