MyBatis接口的方法上使用,定义对应的 SQL 操作

发布时间:2024年01月03日


MyBatis 是一款基于 Java 的持久层框架,它通过简化数据库操作来帮助开发者构建更好的数据库访问应用。

一、@Mapper:

  • 含义:用于标记一个 Mapper 接口。

用例:在 Mapper 接口上使用,告诉 MyBatis 这是一个映射器接口。

@Mapper
public interface UserMapper {
    User getUserById(Long id);
    List<User> getAllUsers();
    void insertUser(User user);
}

二、@Select、@Insert、@Update、@Delete:

  • 含义:分别表示 SELECT、INSERT、UPDATE、DELETE 操作。

用例:在 Mapper 接口的方法上使用,定义对应的 SQL 操作。

@Mapper
public interface UserMapper {
    @Select("SELECT * FROM users WHERE id = #{id}")
    User getUserById(Long id);

    @Insert("INSERT INTO users(name, age) VALUES(#{name}, #{age})")
    void insertUser(User user);

    @Update("UPDATE users SET name = #{name}, age = #{age} WHERE id = #{id}")
    void updateUser(User user);

    @Delete("DELETE FROM users WHERE id = #{id}")
    void deleteUser(Long id);
}

三、@Results、@Result:

  • 含义:用于定义结果映射规则。

用例:在 @Select 注解中使用,将查询结果映射为实体类。

@Select("SELECT * FROM users")
@Results({
    @Result(property = "id", column = "id"),
    @Result(property = "name", column = "name"),
    @Result(property = "age", column = "age")
})
List<User> getAllUsers();

四、@Param:

  • 含义:用于给方法参数取别名,提高可读性。

用例:在方法参数前使用,指定参数名称。

@Select("SELECT * FROM users WHERE name = #{name} AND age = #{age}")
User getUserByNameAndAge(@Param("name") String name, @Param("age") int age);

五、# 和 $:

  • 含义:# 表示预编译,$ 表示字符串拼接。

用例:在 SQL 语句中使用,# 将参数以预编译的形式传递,$ 将参数直接拼接到 SQL 语句中。

@Select("SELECT * FROM users WHERE id = #{id}") // # 表示预编译
User getUserById(@Param("id") Long id);

@Select("SELECT * FROM users WHERE name = '${name}'") // $ 表示字符串拼接
User getUserByName(@Param("name") String name);

这些只是 MyBatis 中的一部分概念和功能,MyBatis 还提供了一些高级功能,如动态 SQL、缓存、拦截器等,以帮助开发者更灵活地操作数据库。

文章来源:https://blog.csdn.net/weixin_54546701/article/details/135353132
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。