目录标题
- 一、@Mapper:
- 二、@Select、@Insert、@Update、@Delete:
- 三、@Results、@Result:
- 四、@Param:
- 五、# 和 $:
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、缓存、拦截器等,以帮助开发者更灵活地操作数据库。