Spring Boot 和 My Batis 常用注解总结及解析

一、Spring Boot 核心注解

1.1 启动类注解

  • @SpringBootApplication

    • 作用:标记 Spring Boot 应用的启动类,是 @Configuration@EnableAutoConfiguration 和 @ComponentScan 的组合注解。

    • 使用场景:用于主启动类,启动 Spring Boot 应用。

示例:

@SpringBootApplication
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

1.2 配置类注解

  • @Configuration

    • 作用:标记类为配置类,替代 XML 配置文件。

    • 使用场景:定义 Bean 或加载其他配置。

  • 示例

    @Configuration
    public class AppConfig {
        @Bean
        public MyService myService() {
            return new MyService();
        }
    }

 

@EnableAutoConfiguration

  • 作用:启用 Spring Boot 的自动配置功能。

  • 使用场景:自动配置 Spring 应用,根据依赖自动配置 Bean。

  • 示例

    @EnableAutoConfiguration
    public class MyApplication {
        // 启动类
    }

@ComponentScan

  • 作用:自动扫描指定包下的组件(如 @Component@Service@Repository 等)。

  • 使用场景:扫描并注册 Bean。

  • 示例

    @ComponentScan(basePackages = "com.example")
    public class MyApplication {
        // 启动类
    }

1.3 Web 相关注解

  • @RestController

    • 作用:标记类为 RESTful 控制器,是 @Controller 和 @ResponseBody 的组合注解。

    • 使用场景:用于构建 RESTful API。

    • 示例

      @RestController
      public class UserController {
          @GetMapping("/users")
          public List<User> getUsers() {
              return userService.getAllUsers();
          }
      }

@RequestMapping

  • 作用:映射 HTTP 请求到控制器方法。

  • 使用场景:定义请求路径和请求方法。

  • 示例

    @RequestMapping(value = "/users", method = RequestMethod.GET)
    public List<User> getUsers() {
        return userService.getAllUsers();
    }

@PathVariable

  • 作用:绑定 URL 路径变量到方法参数。

  • 使用场景:获取 RESTful API 中的路径参数。

  • 示例

    @GetMapping("/users/{id}")
    public User getUserById(@PathVariable Long id) {
        return userService.getUserById(id);
    }

@RequestParam

  • 作用:绑定 HTTP 请求参数到方法参数。

  • 使用场景:获取查询参数。

  • 示例

    @GetMapping("/users")
    public User getUserByName(@RequestParam String name) {
        return userService.getUserByName(name);
    }

@GetMapping

作用

  • 用于处理 HTTP GET 请求。

  • GET 请求通常用于获取资源。

使用场景

  • 查询数据。

  • 获取资源的详细信息。

  • 不涉及数据修改的操作。

  • 示例

    @RestController
    @RequestMapping("/users")
    public class UserController {
    
        @Autowired
        private UserService userService;
    
        // 获取所有用户
        @GetMapping
        public List<User> getAllUsers() {
            return userService.getAllUsers();
        }
    
        // 根据ID获取用户
        @GetMapping("/{id}")
        public User getUserById(@PathVariable Long id) {
            return userService.getUserById(id);
        }
    }

@PostMapping

作用

  • 用于处理 HTTP POST 请求。

  • POST 请求通常用于创建新资源。

使用场景

  • 提交表单数据。

  • 创建新资源。

  • 涉及数据新增的操作。

  • 示例:

    @RestController
    @RequestMapping("/users")
    public class UserController {
    
        @Autowired
        private UserService userService;
    
        // 创建新用户
        @PostMapping
        public User createUser(@RequestBody User user) {
            return userService.createUser(user);
        }
    }

@PutMapping

作用

  • 用于处理 HTTP PUT 请求。

  • PUT 请求通常用于更新资源(全量更新)。

使用场景

  • 更新资源的全部字段。

  • 替换现有资源。

  • 示例:

    @RestController
    @RequestMapping("/users")
    public class UserController {
    
        @Autowired
        private UserService userService;
    
        // 更新用户信息
        @PutMapping("/{id}")
        public User updateUser(@PathVariable Long id, @RequestBody User user) {
            return userService.updateUser(id, user);
        }
    }

@DeleteMapping

作用

  • 用于处理 HTTP DELETE 请求。

  • DELETE 请求通常用于删除资源。

使用场景

  • 删除资源。

  • 涉及数据删除的操作

  • 示例:

    @RestController
    @RequestMapping("/users")
    public class UserController {
    
        @Autowired
        private UserService userService;
    
        // 删除用户
        @DeleteMapping("/{id}")
        public void deleteUser(@PathVariable Long id) {
            userService.deleteUser(id);
        }
    }

 

1.4 依赖注入相关注解

  • @Autowired

    • 作用:自动注入依赖的 Bean,默认按类型(byType)注入。

    • 使用场景:注入 Service、Repository 等组件。

    • 示例

      @Service
      public class UserService {
          @Autowired
          private UserRepository userRepository;
      }

@Qualifier

  • 作用:当有多个相同类型的 Bean 时,指定具体的 Bean。

  • 使用场景:解决 Bean 冲突。

  • 示例

    @Autowired
    @Qualifier("userService")
    private UserService userService;

@Value

  • 作用:注入配置文件中的属性值。

  • 使用场景:读取 application.properties 或 application.yml 中的配置。

  • 示例

    @Value("${app.name}")
    private String appName;

 

二、MyBatis 常用注解 

2.1 Mapper 相关注解

  • @Mapper

    • 作用:标记接口为 MyBatis 的 Mapper 接口。

    • 使用场景:定义数据访问层接口。

    • 示例

      @Mapper
      public interface UserMapper {
          @Select("SELECT * FROM user WHERE id = #{id}")
          User getUserById(Long id);
      }

@MapperScan

  • 作用:指定 MyBatis Mapper 接口的扫描路径。

  • 使用场景:用于启动类,扫描 Mapper 接口。

  • 示例

    @SpringBootApplication
    @MapperScan("com.example.mapper")
    public class MyApplication {
        // 启动类
    }

 

2.2 SQL 相关注解

  • @Select

    • 作用:定义查询 SQL 语句。

    • 使用场景:查询数据。

    • 示例

      @Select("SELECT * FROM user WHERE id = #{id}")
      User getUserById(Long id);

@Insert

  • 作用:定义插入 SQL 语句。

  • 使用场景:插入数据。

  • 示例

    @Insert("INSERT INTO user(name, age) VALUES(#{name}, #{age})")
    void insertUser(User user);

@Update

  • 作用:定义更新 SQL 语句。

  • 使用场景:更新数据。

  • 示例

    @Update("UPDATE user SET name = #{name} WHERE id = #{id}")
    void updateUser(User user);

@Delete

  • 作用:定义删除 SQL 语句。

  • 使用场景:删除数据。

  • 示例

    @Delete("DELETE FROM user WHERE id = #{id}")
    void deleteUser(Long id);

 

2.3 结果映射注解

  • @Results 和 @Result

    • 作用:映射查询结果到 Java 对象。

    • 使用场景:处理复杂查询结果的映射。

    • 示例

      @Results({
          @Result(property = "id", column = "id"),
          @Result(property = "name", column = "name")
      })
      @Select("SELECT * FROM user")
      List<User> getAllUsers();

 


三、JPA 常用注解

 

3.1 实体类注解

  • @Entity

    • 作用:标记类为实体类,映射到数据库表。

    • 使用场景:定义数据库表对应的实体类。

    • 示例

      @Entity
      @Table(name = "user")
      public class User {
          @Id
          @GeneratedValue(strategy = GenerationType.IDENTITY)
          private Long id;
          private String name;
      }

@Id

  • 作用:标记属性为主键。

  • 使用场景:定义实体类的主键字段。

  • 示例

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

 


四、Lombok 常用注解

4.1 简化代码注解

  • @Data

    • 作用:自动生成 getter、setter、toStringequals 和 hashCode 方法。

    • 使用场景:简化实体类的代码。

    • 示例

      @Data
      public class User {
          private Long id;
          private String name;
      }

 


五、总结 

Spring Boot 注解

  • 用于启动应用、依赖注入、Web 请求处理、配置管理等。

  • 核心注解:@SpringBootApplication@RestController@Autowired@Value 等。

MyBatis 注解

  • 用于定义 SQL 语句、映射查询结果、事务管理等。

  • 核心注解:@Mapper@Select@Insert@Update@Delete 等。

JPA 注解

  • 用于定义实体类、映射数据库表、处理主键生成等。

  • 核心注解:@Entity@Id@GeneratedValue 等。

Lombok 注解

  • 用于简化代码,自动生成 getter、setter 等方法。

  • 核心注解:@Data@Getter@Setter 等。

通过合理使用这些注解,可以显著提高开发效率,减少冗余代码,并确保代码的可读性和可维护性。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值