用例:在 Mapper 接口上使用,告诉 MyBatis 这是一个映射器接口。
@Mapper
public interface UserMapper {
User getUserById(Long id);
List<User> getAllUsers();
void insertUser(User user);
}
用例:在 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);
}
用例:在 @Select 注解中使用,将查询结果映射为实体类。
@Select("SELECT * FROM users")
@Results({
@Result(property = "id", column = "id"),
@Result(property = "name", column = "name"),
@Result(property = "age", column = "age")
})
List<User> getAllUsers();
用例:在方法参数前使用,指定参数名称。
@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、缓存、拦截器等,以帮助开发者更灵活地操作数据库。