mybatisplus 注解
时间: 2025-04-20 14:36:20 浏览: 41
### MyBatis Plus 注解使用方法及说明
#### @TableName
用于实体类上,指明该实体对应的数据库表名。如果实体类名称与数据库中的表名一致,则无需显式声明此注解。
```java
@TableName("user_info")
public class UserInfo { ... }
```
当两者不匹配时,通过`value`参数指定实际存在的表名[^1]。
#### @TableId
标注在一个成员变量之上,表示这是主键字段;通常会配合自增策略一起设置:
```java
@TableId(type = IdType.AUTO)
private Long id;
```
其中 `type` 属性定义了 ID 生成的方式,比如自动增长 (`AUTO`) 或者雪花算法(`ID_WORKER`) 等等。
#### @TableField
用来描述非主键列的信息,可选属性较多,如是否忽略插入/更新操作、默认值设定以及字段映射关系等:
```java
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
@TableField(exist=false)// 对应的数据库表中不存在这个字段
private Integer age;
```
对于一些特殊场景下的需求,例如只读字段或逻辑删除标记位也可以利用这些选项来处理。
#### 关系型注解——一对多关联 (@Many)
针对复杂业务模型的一对多关系建模,在MyBatis-Plus中有两种主要的方式来完成这种映射:一种是基于XML配置文件的传统做法;另一种则是采用全注解的形式来进行表达。后者更为简洁直观,具体来说就是借助于`@Many`标签及其内部的相关特性实现子查询或是联合查询的结果组装[^3]。
```java
// 子查询形式
@Many(select="com.example.mapper.OrderMapper.selectByUserId")
private List<Order> orders;
// ResultMap 形式
@Results({
@Result(column="id", property="orders",
many=@Many(
select="com.example.mapper.OrderMapper.selectOrdersById"
))
})
```
上述代码片段展示了如何运用不同的模式达成相同的目标—即加载某个用户的订单列表。前者直接给出了获取子项的方法路径,而后者则更倾向于先建立好完整的映射规则再执行具体的检索动作。
阅读全文
相关推荐


















