返回

详解MyBatis和MyBatis-Plus常用注解,提高开发效率

后端

简介

MyBatis 和 MyBatis-Plus 是 Java 中流行的持久层框架,可简化与数据库的交互。MyBatis 是一款出色的半自动化 ORM 框架,而 MyBatis-Plus 作为其增强版本,提供了更丰富的功能和更友好的开发体验。

注解概述

注解在 MyBatis 和 MyBatis-Plus 中扮演着至关重要的角色,通过注解可以方便地指定数据库操作,包括查询、插入、更新和删除。以下是常用注解的分类:

基本注解

  • @Select:执行 Select 查询
  • @Insert:执行 Insert 插入
  • @Update:执行 Update 更新
  • @Delete:执行 Delete 删除
  • @Results:指定查询结果映射
  • @Result:指定单个查询结果映射
  • @ConstructorArgs:指定构造器参数映射
  • @Arg:指定单个构造器参数映射

关联注解

  • @One:一对一关联
  • @Many:一对多关联
  • @OneToOne:一对一关联,与 @One 等效
  • @OneToMany:一对多关联,与 @Many 等效

查询注解

  • @SelectKey:生成主键
  • @Cacheable:开启二级缓存
  • @CacheEvict:清除二级缓存
  • @Flush:刷新二级缓存
  • @Param:指定参数名称

更新注解

  • @Options:指定更新选项,如是否返回更新的行数
  • @Where:指定更新条件
  • @Set:指定更新字段

使用示例

基本注解示例

@Select("SELECT * FROM user")
public List<User> findAll();

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

关联注解示例

@Select("SELECT * FROM user u LEFT JOIN address a ON u.id = a.user_id WHERE u.id = #{id}")
@Results({
    @Result(property = "id", column = "id"),
    @Result(property = "name", column = "name"),
    @Result(property = "age", column = "age"),
    @Result(property = "address", column = "address_id", javaType = Address.class)
})
public User findWithAddressById(@Param("id") Long id);

查询注解示例

@Insert("INSERT INTO user (name, age) VALUES (#{name}, #{age})")
@SelectKey(statement = "SELECT LAST_INSERT_ID()", keyProperty = "id", before = false, resultType = Long.class)
public int insertWithAutoIncrement(@Param("name") String name, @Param("age") Integer age);

更新注解示例

@Update("UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}")
@Options(flushCache = true, useCache = false)
public int update(@Param("name") String name, @Param("age") Integer age, @Param("id") Long id);

总结

MyBatis 和 MyBatis-Plus 中的注解是简化数据库交互、提高开发效率的强大工具。通过掌握这些注解,开发人员可以轻松实现各种数据库操作,从而为应用程序构建健壮可靠的数据持久化层。