一. mybatis为啥定义接口就可以直接使用?
MyBatis使用JDK动态代理,在运行时为Mapper接口生成实现类。
二. mybatis通过resultMap来保证数据的一致性。mybatis-plus如何进行保证?
- 驼峰映射(默认开启)
mybatis-plus:
configuration:
map-underscore-to-camel-case: true
DB:create_time
Java:createTime
- 实体注解显式声明(强一致)
注解 作用
@TableName 表名
@TableId 主键
@TableField 字段映射
@TableLogic 逻辑删除
@Version 乐观锁
@EnumValue 枚举映射
- 类型处理器(TypeHandler)
和 MyBatis 一样:
@TableField(typeHandler = JacksonTypeHandler.class)
private Map<String, Object> writeFormData;
👉 保证:
JSON ↔ Map
Enum ↔ int / String
LocalDateTime ↔ datetime
- MetaObjectHandler(填充一致性)
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
👉 插入 / 更新:
字段不丢
逻辑一致