使用mybatis-plus查询数据库时出现没出现过的字段

在设计entity时,应遵循属性全小写的约定,以匹配MySQL数据库默认对字段名的处理方式。避免使用下划线(_)命名,因为这可能导致MyBatis在映射时出现意想不到的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在entity当中属性的定义应该统一用小写的格式,因为mysql数据库对于字段名都是大小写默认为小写的
另外最好不要用_这种方式命名属性名 mybatis会产生奇怪的错误
在这里插入图片描述

使用 MyBatis-Plus ,若希望忽略数据库字段的大小写敏感性,可以通过以下几种方式进行配置和处理: 1. **使用 `@TableId` 和 `@TableName` 注解忽略大小写**: 在实体类中,若数据库字段名与实体类属性名存在大小写差异,MyBatis-Plus 默认会进行匹配。例如,数据库字段为 `user_name`,而实体类属性为 `userName`,可以通过以下方式配置自动映射: ```java @Data public class User { @TableId(value = "user_name", type = IdType.AUTO) private Long id; @TableField("user_name") private String userName; } ``` 此,即使数据库字段为下划线命名风格,而实体类属性为驼峰命名风格,MyBatis-Plus 也能正确映射字段值。 2. **全局配置自动映射字段名**: MyBatis-Plus 提供了全局配置项,可以通过 `MyBatisPlusProperties` 配置类来设置自动映射字段名的规则。例如,在 `application.yml` 中配置如下内容: ```yaml mybatis-plus: configuration: mapUnderscoreToCamelCase: true ``` 启用该配置后,MyBatis-Plus 会自动将数据库中的下划线命名风格字段映射到实体类的驼峰命名风格属性上,从而实现大小写不敏感的字段匹配。 3. **自定义字段映射策略**: 若需要更复杂的字段映射逻辑,可以实现 `MetaObjectHandler` 接口或使用 `MyBatis` 原生的 `TypeHandler` 来处理字段映射。例如,可以通过自定义 `TypeHandler` 来处理字段名的大小写转换: ```java public class CustomTypeHandler extends BaseTypeHandler<String> { @Override public void setNonNullValue(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) throws SQLException { ps.setString(i, parameter.toLowerCase()); } @Override public String getNullableResult(ResultSet rs, String columnName) throws SQLException { return rs.getString(columnName).toLowerCase(); } @Override public String getNullableResult(ResultSet rs, int columnIndex) throws SQLException { return rs.getString(columnIndex).toLowerCase(); } @Override public String getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { return cs.getString(columnIndex).toLowerCase(); } } ``` 然后在 `application.yml` 中注册该 `TypeHandler`: ```yaml mybatis-plus: type-handlers: - handler: com.example.handler.CustomTypeHandler java-type: java.lang.String ``` 4. **使用 `Wrapper` 查询忽略字段大小写**: 在使用 `QueryWrapper` 或 `LambdaQueryWrapper` 构建查询条件,可以通过 `eq` 方法结合数据库字段名进行查询MyBatis-Plus 会自动处理字段名的大小写问题。例如: ```java List<User> users = userMapper.selectList(new QueryWrapper<User>().eq("user_name", "JohnDoe")); ``` 若数据库字段名不区分大小写,查询将自动匹配所有符合条件的记录。 通过上述方法,可以在不同层面对数据库字段的大小写进行忽略或处理,从而提升 MyBatis-Plus 在不同数据库环境下的兼容性和灵活性。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值