springBoot开发中mapper层常用注解

在Spring Boot开发中,Mapper层(通常指数据访问层,尤其是使用MyBatis或MyBatis-Plus框架时)负责与数据库交互。以下是Mapper层常用的注解及详细示例:

1. @Mapper

  • 用途:标记接口为MyBatis的Mapper接口,Spring Boot会自动将其纳入管理并生成实现类。
  • 特点
    • 替代传统的XML配置,直接通过注解编写SQL。
    • 需配合@MapperScan在启动类中扫描接口路径。
  • 示例
    @Mapper
    public interface UserMapper {
         
         
        // 方法定义(结合其他注解如@Select)
    }
    

2. @Select / @Insert / @Update / @Delete

  • 用途:直接在接口方法上编写SQL语句,实现CRUD操作。
  • 支持
    • @Select:查询操作。
    • @Insert:插入操作。
    • @Update:更新操作。
    • @Delete:删除操作。
  • 示例
    @Mapper
    public interface UserMapper {
         
         
        @Select("SELECT * FROM users WHERE id = #{id}")
        User getUserById(@Param("id") Long id);
    
        @Insert("INSERT INTO users(name, email) VALUES(#{name}, #{email})")
        int insertUser(@Param("name") String name, @Param("email") String email);
    
        @Update("UPDATE users SET name = #{name} WHERE id = #{id}")
        int updateUserName(@Param("id") Long id, @Param("name") String name);
    
        @Delete("DELETE FROM users WHERE id = #{id}")
        int deleteUserById(@Param("id") Long id);
    }
    

3. @Result / @Results

  • 用途:定义SQL查询结果与Java对象的映射关系(尤其当字段名与列名不一致时)。
  • 属性
    • id:是否为主键。
    • column:数据库列名。
    • property:Java对象属性名。
  • 示例
    @Mapper
    public interface UserMapper {
         
         
        @Select("SELECT id, user_name AS username, email FROM users WHERE id = #{id}")
        @Results(id = "userResultMap", value = {
         
         
            @Result(column = "id", property = "id", id = true),
            @Result
### Spring Boot 和 MyBatis 常用注解列表 以下是与 Spring Boot 和 MyBatis 开发常用注解及其功能说明: #### 一、Spring Boot 常用注解 1. **`@SpringBootApplication`** - 这是一个复合注解,内部包含了 `@SpringBootConfiguration`, `@EnableAutoConfiguration` 和 `@ComponentScan` 注解[^2]。 - 它用于标记应用程序的入口类,并启用自动配置和组件扫描。 2. **`@Controller` / `@RestController`** - `@Controller` 通常用于定义传统的 MVC 控制器,返回视图名称。 - `@RestController` 则是基于 RESTful 的控制器,默认返回 JSON 或 XML 数据[^1]。 3. **`@Service`** - 标记业务逻辑的类,表示这是一个服务组件,会被 Spring 自动扫描并注册为 Bean[^1]。 4. **`@Repository`** - 标记数据访问的类,通常是 DAO 的实现类,也会被 Spring 扫描并注册为 Bean。 5. **`@Autowired`** - 用于字段、构造函数或方法上的依赖注入,使 Spring 能够自动装配所需的 Bean 实例[^1]。 6. **`@Qualifier`** - 当存在多个相同类型的 Bean 时,可以通过此注解指定具体要注入哪个 Bean[^1]。 7. **`@Transactional`** - 表示该方法或类需要事务管理支持。常用于 Service 的方法中,确保操作的一致性和完整性[^1]。 8. **`@ConfigurationProperties`** - 绑定外部配置文件中的属性到 Java 对象中,方便统一管理和使用配置项[^1]。 9. **`@ConditionalOnClass` / `@ConditionalOnMissingBean`** - 条件注解,分别表示当某个类存在于类路径或者不存在某些 Bean 时才生效,主要用于自定义 Starter 中的场景判断。 --- #### 二、MyBatis 常用注解 1. **`@Mapper`** - 标识一个 Mapper 接口,告诉 Spring 将其实现类作为 Bean 加载到容器中[^3]。 2. **`@Select` / `@Insert` / `@Update` / `@Delete`** - 分别对应 SQL 查询、插入、更新和删除语句的操作。可以直接在接口方法上书写对应的 SQL 语句。 ```java @Select("SELECT * FROM user WHERE id = #{id}") User findById(int id); ``` 3. **`@ResultMap`** - 可以用来映射复杂的结果集结构,类似于 XML 文件中的 `<resultMap>` 配置。 4. **`@Param`** - 如果方法参数超过一个,则需要用此注解来区分不同参数的名字,在 SQL 中引用时更清晰。 ```java List<User> findUsersByNameAndAge(@Param("name") String name, @Param("age") int age); ``` 5. **`@Options`** - 提供一些额外选项设置,比如是否使用缓存、是否返回生成的主键等[^3]。 6. **`@CacheNamespace`** - 定义 MyBatis 缓存的作用域以及相关策略,提升查询性能。 7. **`@Flush`** - 清除当前会话的所有未提交更改,强制刷新持久化状态[^3]。 8. **`@.Lang`** - 改变默认解析器的行为,允许开发者扩展自己的动态 SQL 解析机制。 --- #### 三、数据源相关注解 1. **`@Primary`** - 在多数据源环境下,标明这是优先使用的主数据源[^4]。 2. **`@DataSource`** - 指定特定的数据源实例,配合 AOP 使用可以在运行时切换不同的数据源[^4]。 3. **`@Value("${property.key}")`** - 读取 application.properties 或其他配置文件中的值,并赋给变量[^1]。 --- ```java // 示例代码展示如何结合 Spring Boot 和 MyBatis 注解开发 @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } @Repository @Mapper public interface UserRepository { @Select("SELECT * FROM users WHERE username = #{username}") Optional<User> findByUsername(@Param("username") String username); @Insert("INSERT INTO users (username, password) VALUES(#{username}, #{password})") @Options(useGeneratedKeys = true, keyProperty = "id") void save(User user); } ``` --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值