mybatisplus驼峰
时间: 2023-08-19 07:15:30 浏览: 131
mybatis-plus驼峰命名是指在使用mybatis-plus框架时,将数据库表字段名和实体类属性名进行自动映射的规则。默认情况下,mybatis-plus会将实体类的属性名中的大写字母变成小写,并在大写字母前加上下划线,作为数据库表字段名。例如,数据库表字段为last_name,实体类属性名为lastName。[2]
要启用mybatis-plus的驼峰命名规则,需要在mybatis的配置文件mybatis-config.xml中进行配置。在该配置文件中,可以设置mapUnderscoreToCamelCase属性为true,表示开启驼峰命名规则的自动转换。[3]
另外,在application.yml文件中,也可以通过配置mybatis的typeAliasesPackage和mapperLocations属性来指定实体类的别名包和映射文件的位置。[1]
综上所述,mybatis-plus的驼峰命名规则可以通过配置mybatis的配置文件和application.yml文件来实现。
相关问题
mybatisplus驼峰失效
mybatisplus驼峰失效是因为mybatis-plus默认的驼峰命名规则是开启的,但在某些情况下会出现失效的情况。解决这个问题的方法有两种:
1. 使用对象包装工厂:
您可以在配置文件中指定使用MybatisMapWrapperFactory作为对象包装工厂。您可以在配置类中添加以下代码:
```java
@Bean
public ConfigurationCustomizer mybatisConfigurationCustomizer() {
return configuration ->
configuration.setObjectWrapperFactory(new MybatisMapWrapperFactory());
}
```
2. 配置全局驼峰命名策略:
您可以在配置文件中配置全局的驼峰命名策略。在Spring-Mybatis.xml中找到SqlSessionFactory配置,并添加以下属性:
```xml
<property name="globalConfig" ref="globalConfig" />
```
然后,在配置文件中配置GlobalConfig:
```xml
<bean id="globalConfig" class="com.baomidou.mybatisplus.core.config.GlobalConfig">
<property name="dbConfig" ref="dbConfig" />
<property name="sqlInjector" ref="sqlInjector" />
<property name="idType" value="AUTO" />
<property name="fieldStrategy" value="NOT_EMPTY" />
<property name="tablePrefix" value="" />
<property name="tablePrefix" value="" />
<property name="sqlParserCache" value="true" />
<property name="keyGenerator" ref="keyGenerator" />
<property name="metaObjectHandler" ref="metaObjectHandler" />
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>
```
以上是解决mybatisplus驼峰失效的两种方法。您可以根据您的实际情况选择其中一种方法进行配置。
mybatisplus 驼峰转下划线
<think>我们正在讨论MyBatisPlus中驼峰命名与下划线命名的转换配置及使用方法。根据引用内容,我们可以总结如下:1.在MyBatisPlus中,可以通过配置`map-underscore-to-camel-case`属性来开启或关闭驼峰命名与下划线命名的自动转换。2.当开启该配置时(设置为true),MyBatisPlus会自动将数据库中的下划线命名字段(如`user_name`)映射到Java实体类的驼峰命名属性(如`userName`)。3.如果数据库字段不符合下划线命名规则,或者实体类属性不符合驼峰命名规则,则可能导致映射失败,此时可以通过`@TableField`注解来指定映射关系。###配置方法在MyBatisPlus的配置文件中(通常是`application.yml`或`application.properties`),添加如下配置:YAML格式(application.yml):```yamlmybatis-plus:configuration:#开启驼峰和下划线互转,默认为true(可不配置)map-underscore-to-camel-case:true```Properties格式(application.properties):```propertiesmybatis-plus.configuration.map-underscore-to-camel-case=true```###使用注意事项1.**默认行为**:MyBatisPlus默认开启驼峰命名转换(即`map-underscore-to-camel-case`默认为true),所以如果你使用的是默认配置,则无需显式配置。2.**特殊情况处理**:-如果数据库字段名不是下划线格式,或者实体类属性名不是驼峰格式,则需要使用`@TableField`注解来明确指定映射关系。-例如,数据库字段名为`userPassword`(没有下划线),而实体类属性名为`userPassword`(驼峰格式,但数据库字段实际是驼峰,不符合下划线规则),此时自动转换可能无法匹配。这时可以在实体类属性上添加注解:```java@TableField("userPassword")privateStringuserPassword;```-或者,将数据库字段名改为下划线格式(如`user_password`),以符合自动转换的规则。###示例代码假设数据库表结构如下:```sqlCREATETABLEuser(idBIGINTPRIMARYKEYAUTO_INCREMENT,user_nameVARCHAR(50),--下划线命名user_passwordVARCHAR(50)--下划线命名);```对应的Java实体类:```javapublicclassUser{privateLongid;privateStringuserName;//驼峰命名,对应数据库的user_nameprivateStringuserPassword;//驼峰命名,对应数据库的user_password//省略getter和setter}```在这个例子中,由于开启了驼峰命名自动转换(默认开启),MyBatisPlus会自动将`user_name`映射到`userName`,将`user_password`映射到`userPassword`。###常见问题1.**字段映射失败**:如果实体类属性与数据库字段无法自动映射(比如数据库字段是`username`,而实体类属性是`userName`),则需要在属性上使用`@TableField`注解指定数据库字段名:```java@TableField("username")privateStringuserName;```2.**关闭自动转换**:如果不需要自动转换,可以将`map-underscore-to-camel-case`设置为false。此时,实体类属性名必须与数据库字段名完全一致(包括大小写和下划线),否则需要使用`@TableField`注解。###总结-默认情况下,MyBatisPlus会自动进行驼峰命名与下划线命名的转换,无需额外配置。-当数据库字段名不符合下划线命名或实体类属性名不符合驼峰命名时,需要使用`@TableField`注解来指定映射关系。-可以通过配置文件显式设置`map-underscore-to-camel-case`属性来开启或关闭自动转换。§§相关问题§§1.MyBatisPlus中`@TableField`注解还有哪些常用属性?2.如何全局配置MyBatisPlus的字段映射策略?3.MyBatisPlus在多数据源环境下如何配置驼峰命名转换?</think>### MyBatis Plus驼峰命名与下划线转换配置及使用
#### 1. **配置方法**
在MyBatis Plus中,只需在配置文件中添加以下设置即可开启自动转换:
```yaml
mybatis-plus:
configuration:
map-underscore-to-camel-case: true # 开启驼峰与下划线自动互转
```
**说明**:
- 此配置**默认开启**(若未显式配置则默认为`true`)
- 开启后,数据库字段如 `user_name` 会自动映射到实体类属性 `userName`
- 关闭时需显式设置为 `false`
#### 2. **使用场景与规则**
| **场景** | **实体类属性** | **数据库字段** | **是否需额外操作** |
|-------------------------|----------------|--------------------|-------------------|
| 标准转换 | `userName` | `user_name` | 自动完成 ✅ |
| 全小写字段 | `createdate` | `createdate` | 自动完成 ✅ |
| 不符合规则的字段 | `userPassword` | `user_password` ❌ | 需手动注解 ⚠️ |
#### 3. **特殊字段处理**
当数据库字段不符合下划线命名规范时(如`userPassword`),需使用`@TableField`注解:
```java
public class User {
@TableField("userPassword") // 显式指定数据库字段名
private String userPassword;
}
```
**原因**:MyBatis Plus的自动转换**仅支持标准下划线格式** → 驼峰的转换。
#### 4. **代码生成器注意事项**
使用MyBatisX等代码生成工具时:
1. 确保工具生成**驼峰命名的实体类属性**
2. 数据库字段必须为**下划线格式**(如 `user_password`)
3. 若工具生成字段名与数据库不一致,需通过`@TableField`修正
#### 5. **验证配置是否生效**
测试用例:
```java
@Autowired
private UserMapper userMapper;
public void testMapping() {
User user = userMapper.selectById(1);
// 若数据库有user_name字段,实体类有userName属性
System.out.println(user.getUserName());
}
```
若报错 `Unknown column 'user_name' in 'field list'`,检查:
1. 配置是否开启 `map-underscore-to-camel-case: true`
2. 是否存在非标准命名字段
> **最佳实践**:保持数据库字段为下划线格式(如`create_time`),实体类属性为驼峰格式(如`createTime`),可避免手动注解[^1][^2][^4]。
阅读全文
相关推荐













