swagger
sqagger常用注解
让接口文档可读性更好
使用
-
controller使用
-
方法使用
-
模型类以及属性上使用
最终效果
mybatis 驼峰配置
为什么要使用驼峰配置?
在 Spring Boot 中使用 MyBatis 时,配置驼峰命名转换是为了确保数据库字段与 Java 对象属性之间的映射一致性。这种配置通常涉及到将数据库中的下划线命名(如 user_name)转换为 Java 中的驼峰命名(如 userName)。
驼峰命名转换的原因
-
命名约定:
- 数据库字段通常使用下划线分隔(snake_case),而 Java 的命名约定倾向于使用驼峰命名法(camelCase)。通过配置驼峰命名转换,可以自动处理这种差异,简化代码。
-
减少手动映射:
- 如果不进行驼峰转换,你需要在每个 SQL 查询中手动指定列名,或者在 Java 对象中添加额外的映射注解。配置驼峰命名转换后,MyBatis 可以自动进行映射,减少了冗余的代码。
-
提高可读性:
- 在 Java 代码中使用驼峰命名更符合 Java 开发者的习惯,使代码更易于阅读和维护。
如何配置
在 Spring Boot 的 application.properties 或 application.yml 文件中,可以通过以下配置来启用驼峰命名转换:
application.properties
mybatis.configuration.map-underscore-to-camel-case=true
application.yml
mybatis:
configuration:
map-underscore-to-camel-case: true
如果没有启用驼峰命名转换配置,MyBatis 在查询数据库时将不会自动将数据库字段的下划线命名(如
user_id和user_name)映射到 Java 对象的驼峰命名属性(如userId和userName)。这意味着你需要手动进行字段映射。下面通过示例说明这种情况的效果
数据库表结构
依然使用前面提到的 user 数据库表:
| user_id | user_name | |
|---|---|---|
| 1 | Alice | alice@example.com |
| 2 | Bob | bob@example.com |
Java 实体类
Java 实体类 User 是这样的:
public class User {
private Long userId; // 对应 user_id
private String userName; // 对应 user_name
private String email; // 对应 email
// Getters 和 Setters
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
MyBatis Mapper 接口(未启用驼峰配置)
如果没有启用驼峰命名转换,你的 Mapper 接口可能如下:
import org.apache.ibatis.annotations.Select;
public interface UserMapper {
@Select("SELECT user_id, user_name, email FROM user WHERE user_id = #{id}")
User findById(Long id);
}
查询示例
@Autowired
private UserMapper userMapper;
public void getUserInfo(Long userId) {
User user = userMapper.findById(userId);
System.out.println("User ID: " + user.getUserId());
System.out.println("User Name: " + user.getUserName());
System.out.println("Email: " + user.getEmail());
}
在这种情况下,当调用 UserMapper 的 findById 方法时,MyBatis 会尝试将查询结果的字段直接映射到 User 对象的对应属性。
(即想要将数据表中查询的字段 user_id ,user_name转到User实体类上面,但是User实体类的字段为userId ,userName ,但是因为字段名不一致。所以如果没有驼峰转换,映射将不会成功,)
结果
在这种情况下,由于没有启用驼峰命名转换,MyBatis 在映射时会导致以下问题:
user_id将不会被自动映射到userId,因此getUserId()方法返回的将是null。user_name将不会被自动映射到userName,因此getUserName()方法返回的也将是null。