Loading... `@Mapper` 和 `@Repository` 是 Java Spring 框架中的两个注解,用于不同的用途。 `@Mapper` 注解用于标识一个 Java 接口是 MyBatis Mapper 接口,MyBatis 是一种持久化框架,用于将 Java 对象映射到数据库中的关系表。`@Mapper` 注解通常与 `@Select`、`@Insert`、`@Update` 和 `@Delete` 等注解一起使用,用于定义查询语句,以及插入、更新和删除数据库中的数据。 例如: ```java @Mapper public interface UserMapper { @Select("SELECT * FROM user WHERE id = #{id}") User findById(@Param("id") Long id); @Insert("INSERT INTO user(name, email) VALUES(#{name}, #{email})") void insert(User user); @Update("UPDATE user SET name=#{name}, email=#{email} WHERE id=#{id}") void update(User user); @Delete("DELETE FROM user WHERE id=#{id}") void delete(Long id); } ``` `@Repository` 注解用于标识一个 Java 类是数据访问层(DAO)中的存储库组件。这个注解通常用于标记在使用 Spring 的数据访问技术,如 JdbcTemplate、Hibernate 或 JPA 等。`@Repository` 注解提供了一些在数据访问层中需要的功能,比如将 SQL 异常转换为 Spring 的 DataAccessException 异常。 例如: ```java @Repository public class UserRepository { private final JdbcTemplate jdbcTemplate; public UserRepository(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } public User findById(Long id) { return jdbcTemplate.queryForObject("SELECT * FROM user WHERE id = ?", new Object[]{id}, new BeanPropertyRowMapper<>(User.class)); } public void insert(User user) { jdbcTemplate.update("INSERT INTO user(name, email) VALUES(?, ?)", user.getName(), user.getEmail()); } public void update(User user) { jdbcTemplate.update("UPDATE user SET name=?, email=? WHERE id=?", user.getName(), user.getEmail(), user.getId()); } public void delete(Long id) { jdbcTemplate.update("DELETE FROM user WHERE id=?", id); } } ``` 总的来说,`@Mapper` 注解用于定义 MyBatis Mapper 接口,用于将 Java 对象映射到关系型数据库中的数据表,而 `@Repository` 注解用于定义 Spring 数据访问层中的存储库组件,用于处理数据访问和持久化。 最后修改:2023 年 03 月 06 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 1 如果觉得我的文章对你有用,请随意赞赏