简述Mybatis的常用注解及其作用
时间: 2025-04-08 10:29:09 浏览: 110
### MyBatis 常用注解及其功能说明
#### 1. `@Mapper` 注解
`@Mapper` 是 MyBatis 提供的一个核心注解,主要用于标记接口为 MyBatis 的 Mapper 接口。当使用注解方式定义 SQL 时,需要在接口上加上此注解以便被识别并完成映射关系[^1]。
```java
@Mapper
public interface UserMapper {
// 方法定义...
}
```
---
#### 2. `@Param` 注解
`@Param` 主要用于给方法参数命名,在多参数场景下尤为重要。它允许开发者为每个参数设置别名,从而可以在 SQL 中通过 `${}` 或 `#{}` 方式引用对应的参数值[^3]。
示例代码如下:
```java
@Select("SELECT * FROM users WHERE username = #{username} AND password = #{password}")
User findUser(@Param("username") String uname, @Param("password") String pwd);
```
上述例子中,`uname` 和 `pwd` 被分别绑定到 SQL 查询中的 `username` 和 `password` 参数位置。
---
#### 3. `@ResultType` 注解
`@ResultType` 用于指定查询结果返回的对象类型。它可以配合其他注解(如 `@Select`, `@Insert` 等)一起使用,简化了复杂对象的映射过程[^4]。
示例代码如下:
```java
@Select("SELECT name, age FROM users WHERE id = #{id}")
@ResultType(User.class)
User getUserById(Long id);
```
在此处,`@ResultType(User.class)` 表明查询的结果会被自动封装成 `User` 类型实例。
---
#### 4. `@Results` 和 `@Result` 注解组合
对于复杂的字段映射需求,可以通过 `@Results` 配合多个 `@Result` 来实现自定义映射逻辑。这种方式适用于表结构与实体类不完全一致的情况。
示例代码如下:
```java
@Select("SELECT user_id AS id, full_name AS name FROM users WHERE id = #{userId}")
@Results({
@Result(property = "id", column = "user_id"),
@Result(property = "name", column = "full_name")
})
User getUserById(int userId);
```
这里,`property` 定义的是 Java 对象属性名称,而 `column` 则对应数据库列名。
---
#### 5. 数据操作相关注解 (`@Insert`, `@Update`, `@Delete`)
MyBatis 还提供了针对增删改查的操作注解,分别是 `@Insert`, `@Update`, 和 `@Delete`。它们可以直接嵌入 SQL 语句来执行相应的 DML 操作。
##### 插入数据
```java
@Insert("INSERT INTO users (name, age) VALUES (#{name}, #{age})")
void insertUser(String name, int age);
```
##### 更新数据
```java
@Update("UPDATE users SET age = #{age} WHERE id = #{id}")
int updateUserAge(int id, int age);
```
##### 删除数据
```java
@Delete("DELETE FROM users WHERE id = #{id}")
int deleteUserById(int id);
```
---
#### 总结
以上列举了几种常用的 MyBatis 注解以及其具体用途。这些注解不仅减少了 XML 文件的冗余配置,还提高了开发效率和代码可读性[^2]。
---
阅读全文
相关推荐


















