MyBatis --- 常用注解

目录

前言

1. @Mapper

2. @Select

3. @Insert

4. @Update

5. @Delete

6. @Results

注意事项:


前言

MyBatis是一款强大的持久层框架,通过注解的方式,可以更便捷地进行数据库操作。本文将介绍MyBatis中常用的注解以及在使用这些注解时需要注意的事项。

1. @Mapper

在MyBatis中,使用 @Mapper注解可以将一个Java接口标识为MyBatis的映射器(Mapper),告诉MyBatis这个接口是用于执行SQL语句的。

@Mapper
public interface UserMapper {
    
}

2. @Select

@Select注解用于配置查询操作的SQL语句,可以在接口方法上使用,也可以在接口内部定义常量。

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

3. @Insert

@Insert注解用于配置插入操作的SQL语句。

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

4. @Update

@Update注解用于配置更新操作的SQL语句。

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

5. @Delete

@Delete注解用于配置删除操作的SQL语句。

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

6. @Results

@Results注解用于配置结果映射,将数据库查询的结果映射到Java对象中。

@Results({
    @Result(property = "id", column = "user_id"),
    @Result(property = "name", column = "user_name")
})
@Select("SELECT user_id, user_name FROM users WHERE id = #{id}")
User getUserById(@Param("id") Long id);

注意事项:

1. 命名参数与注解参数名一致: MyBatis通过参数名来匹配SQL语句中的占位符,确保注解中的参数名与SQL语句中的参数名一致。

2. 参数注解: 在方法参数上使用 @Param注解,用于指定SQL语句中的参数名。

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

3. 动态SQL: MyBatis支持使用<if>, <choose>, <when>, <otherwise>等标签进行动态SQL的构建,可以根据不同条件动态拼接SQL语句。

4. 使用#{}和${}的区别: #{}会将参数值以占位符的形式传递给SQL,会进行预编译,防止SQL注入。${}则直接将参数值嵌入到SQL语句中,慎用避免SQL注入。

相关推荐

  1. MyBatis --- 注解

    2024-01-28 21:30:01       30 阅读
  2. MyBatis-Plus 注解详解】

    2024-01-28 21:30:01       22 阅读
  3. MyBatis实战指南(三):注解及使用方法

    2024-01-28 21:30:01       37 阅读
  4. SpringBoot注解

    2024-01-28 21:30:01       37 阅读
  5. SpringMVC注解

    2024-01-28 21:30:01       25 阅读
  6. SpringMVC注解

    2024-01-28 21:30:01       36 阅读
  7. Spring注解!!!

    2024-01-28 21:30:01       45 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-28 21:30:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-28 21:30:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-28 21:30:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-28 21:30:01       18 阅读

热门阅读

  1. 前端-打卡每日面试题-数据类型(2024.1.26)

    2024-01-28 21:30:01       34 阅读
  2. 分巧克力(二分实现C++)

    2024-01-28 21:30:01       29 阅读
  3. 7-2 求二叉树的叶子结点个数

    2024-01-28 21:30:01       35 阅读
  4. 微服务面试题

    2024-01-28 21:30:01       33 阅读
  5. 言传身留:NLP技术引领机器翻译革新

    2024-01-28 21:30:01       24 阅读
  6. Python Appium组件使用详解

    2024-01-28 21:30:01       33 阅读
  7. 更新最近可以使用的 ip归属地免费api

    2024-01-28 21:30:01       35 阅读
  8. 软考 系统分析师系列知识点之范围管理(1)

    2024-01-28 21:30:01       36 阅读
  9. leetcode-移除链表元素

    2024-01-28 21:30:01       33 阅读
  10. leetcode-2846、560、239、76

    2024-01-28 21:30:01       34 阅读
  11. C 练习实例46-宏#define命令练习

    2024-01-28 21:30:01       36 阅读
  12. Python类变量和实例变量

    2024-01-28 21:30:01       28 阅读