侧边栏壁纸
博主头像
QM博主等级

行动起来,活在当下

  • 累计撰写 13 篇文章
  • 累计创建 11 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

MyBatis-Plus 注解

wangqm
2025-02-19 / 0 评论 / 0 点赞 / 8 阅读 / 9380 字

MyBatis-Plus 注解

在 Java 持久层框架中,MyBatis-Plus 以其强大的功能和便捷的操作,成为众多开发者的首选。MyBatis-Plus 不仅继承了 MyBatis 的灵活性,还通过丰富的注解和内置功能,极大地简化了开发流程。本文将全面解析 MyBatis-Plus 的注解,帮助开发者更好地利用这些注解提升开发效率。

一、MyBatis-Plus 简介

MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,旨在简化开发、提高效率。它在保留 MyBatis 原有功能的基础上,提供了以下增强功能:

  1. 无侵入:只做增强不做改变,引入它不会对现有工程产生影响。

  2. 强大的 CRUD 操作:内置通用 Mapper 和通用 Service,通过少量配置即可实现单表大部分 CRUD 操作。

  3. 条件构造器:提供 QueryWrapperUpdateWrapper 等条件构造器,方便构建查询条件。

  4. 分页插件:内置分页插件,支持多种数据库,开发者无需关心具体操作。

  5. 代码生成器:可以根据数据库表结构自动生成实体类、Mapper 接口、Service 层代码等。

  6. 全局配置:支持逻辑删除、自动填充、乐观锁等全局配置。

二、MyBatis-Plus 注解详解

1. 实体类注解

(1)@TableName

@TableName 注解用于指定实体类对应的数据库表名。例如:

@TableName("user")
public class User {
    // 属性和方法
}

如果不指定 value 属性,MyBatis-Plus 会默认使用实体类的类名作为表名。

(2)@TableId

@TableId 注解用于指定实体类的主键字段,并可以指定主键生成策略。例如:

@TableId(type = IdType.AUTO)
private Long id;

常见的主键生成策略包括:

  • IdType.NONE:默认策略,不指定主键生成方式。

  • IdType.INPUT:手动输入主键。

  • IdType.AUTO:主键自增。

  • IdType.ASSIGN_ID:使用雪花算法生成主键。

(3)@TableField

@TableField 注解用于指定实体类的字段与数据库表的字段映射关系。例如:

@TableField("user_name")
private String userName;

还可以使用 exist 属性指定字段是否存在,例如:

@TableField(exist = false)
private String extraField;

这表示 extraField 字段在数据库表中不存在。

(4)@TableLogic

@TableLogic 注解用于实现逻辑删除功能。例如:

@TableLogic
private Integer deleted;

这表示当 deleted 字段的值为 1 时,表示该记录已被逻辑删除。

(5)@Version

@Version 注解用于实现乐观锁功能。例如:

@Version
private Integer version;

这表示 version 字段用于乐观锁控制。

2. Mapper 注解

(1)@Mapper

@Mapper 注解用于标记 Mapper 接口,Spring 会自动扫描并注册这些接口。例如:

@Mapper
public interface UserMapper extends BaseMapper<User> {
}

(2)@Select

@Select 注解用于指定查询 SQL 语句。例如:

@Select("SELECT * FROM user WHERE id = #{id}")
User selectUserById(@Param("id") Long id);

(3)@Insert

@Insert 注解用于指定插入 SQL 语句。例如:

@Insert("INSERT INTO user(name, age) VALUES(#{name}, #{age})")
int insertUser(@Param("name") String name, @Param("age") Integer age);

(4)@Update

@Update 注解用于指定更新 SQL 语句。例如:

@Update("UPDATE user SET name = #{name} WHERE id = #{id}")
int updateUser(@Param("name") String name, @Param("id") Long id);

(5)@Delete

@Delete 注解用于指定删除 SQL 语句。例如:

@Delete("DELETE FROM user WHERE id = #{id}")
int deleteUser(@Param("id") Long id);

3. 参数映射注解

(1)@Param

@Param 注解用于为方法参数指定名称,以便在 SQL 语句中引用。例如:

@Select("SELECT * FROM user WHERE name = #{name}")
User selectUserByName(@Param("name") String name);

4. 全局配置注解

(1)@GlobalConfig

@GlobalConfig 注解用于全局配置 MyBatis-Plus 的一些功能,如逻辑删除、自动填充等。例如:

@GlobalConfig
public class MyBatisPlusConfig {
    @GlobalConfig.DbConfig
    private static final GlobalConfig.DbConfig dbConfig = new GlobalConfig.DbConfig()
            .setLogicDeleteField("deleted")
            .setLogicDeleteValue("1")
            .setLogicNotDeleteValue("0");
}

(2)@AutoFill

@AutoFill 注解用于自动填充字段值。例如:

@AutoFill(value = FieldFill.INSERT)
private Date createTime;

@AutoFill(value = FieldFill.UPDATE)
private Date updateTime;

5. 条件构造器注解

(1)@QueryWrapper

@QueryWrapper 注解用于构建查询条件。例如:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "Alice").ge("age", 20);
List<User> users = userMapper.selectList(queryWrapper);

(2)@UpdateWrapper

@UpdateWrapper 注解用于构建更新条件。例如:

UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("id", 1).set("name", "Bob");
userMapper.update(null, updateWrapper);

6. 其他注解

(1)@LambdaQueryWrapper

@LambdaQueryWrapper 注解用于构建 Lambda 形式的查询条件,避免字段名拼写错误。例如:

LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(User::getName, "Alice").ge(User::getAge, 20);
List<User> users = userMapper.selectList(lambdaQueryWrapper);

(2)@LambdaUpdateWrapper

@LambdaUpdateWrapper 注解用于构建 Lambda 形式的更新条件。例如:

LambdaUpdateWrapper<User> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
lambdaUpdateWrapper.eq(User::getId, 1).set(User::getName, "Bob");
userMapper.update(null, lambdaUpdateWrapper);

三、MyBatis-Plus 注解的优势

1. 简化开发

MyBatis-Plus 的注解可以大大简化开发过程,减少重复的 SQL 编写工作。通过注解,开发者可以更专注于业务逻辑的实现。

2. 提高效率

MyBatis-Plus 提供了许多开箱即用的功能,如自动 CRUD 操作、条件构造器等,这些功能可以显著提高开发效率。

3. 灵活性

尽管 MyBatis-Plus 提供了许多便捷的功能,但它仍然保留了 MyBatis 的灵活性。开发者可以根据需要选择使用 MyBatis 或 MyBatis-Plus 的功能。

4. 强大的功能

MyBatis-Plus 提供了丰富的注解和内置功能,如逻辑删除、自动填充、乐观锁等,这些功能可以满足各种复杂的业务需求。

四、总结

MyBatis-Plus 的注解为开发者提供了许多便捷的功能,可以显著简化开发过程,提高开发效率。通过合理使用这些注解,开发者可以更专注于业务逻辑的实现,从而提高项目的质量和开发速度。希望本文的介绍能够帮助开发者更好地利用 MyBatis-Plus 的注解,提升开发效率。

0

评论区