返回
详解MyBatis和MyBatis-Plus常用注解,提高开发效率
后端
2024-01-12 07:50:19
简介
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 中的注解是简化数据库交互、提高开发效率的强大工具。通过掌握这些注解,开发人员可以轻松实现各种数据库操作,从而为应用程序构建健壮可靠的数据持久化层。