Java常见注解(持续更新)

Java中常见注解的笔记(持续更新):

一、Java基础注解

1. @Override

用来标识方法重写,使得在调用父类方法时可以调用重写后的方法。

public class Animal {
    
    
    public void move() {
    
    
        System.out.println("动物在移动");
    }
}

public class Dog extends Animal {
    
    
    @Override
    public void move() {
    
    
        System.out.println("狗在奔跑");
    }
}

在上面的例子中,@Override注解标识了Dog类的move方法重写了父类Animal中的move方法。

2. @Deprecated

用来标识该方法或类已过时,不建议使用。

@Deprecated
public class OldClass {
    
    
    // ...
}

public class NewClass {
    
    
    /**
     * @deprecated 不推荐使用
     */
    @Deprecated
    public void oldMethod() {
    
    
        // ...
    }
}

在上面的例子中,@Deprecated注解标识了类OldClass已过时,方法oldMethod也已过时,不建议使用。

3. @SuppressWarnings

用来抑制编译器警告。

@SuppressWarnings("unchecked")
List<String> list = new ArrayList();

在上面的例子中,@SuppressWarnings注解抑制了编译器警告,List<String> list = new ArrayList()语句不再发出警告信息。

4. @SafeVarargs

用来标识泛型可变参数构造器或方法声明中的泛型类型是安全的。

@SafeVarargs
public final <T> void doSomething(T... args) {
    
    
    // ...
}

在上面的例子中,@SafeVarargs注解标识泛型可变参数类型是安全的,编译器就不会再发出警告信息。

5. @FunctionalInterface

用来标识接口是函数式接口,即只包含一个抽象方法的接口。

@FunctionalInterface
public interface GreetingService {
    
    
    void greet(String name);
}

在上面的例子中,@FunctionalInterface注解标识接口GreetingService是一个函数式接口,只包含一个抽象方法greet

二、MyBatis注解

1. @Select

用于映射一个查询SQL。

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

在上面的例子中,@Select注解表示将SQL字符串映射到getUserById方法上,其中#{id}表示占位符,由方法参数进行替换。

2. @Update

用于映射一个更新SQL。

@Update("UPDATE user SET name = #{name} WHERE id = #{id}")
int updateUserById(Long id, String name);

在上面的例子中,@Update注解表示将SQL字符串映射到updateUserById方法上,其中#{id}#{name}表示占位符,由方法参数进行替换。

3. @Insert

用于映射一个插入SQL。

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

在上面的例子中,@Insert注解表示将SQL字符串映射到addUser方法上,其中#{name}#{age}表示占位符,由User对象的属性进行替换。

4. @Delete

用于映射一个删除SQL。

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

在上面的例子中,@Delete注解表示将SQL字符串映射到deleteUserById方法上,其中#{id}表示占位符,由方法参数进行替换。

三、Spring注解

1. @Autowired

自动装配,用于自动注入依赖。

@Service
public class UserServiceImpl继续:

```java
@Autowired
private UserDao userDao;

public User getUserById(Long id) {
    
    
    return userDao.getUserById(id);
}

在上面的例子中,@Autowired注解表示自动注入UserDao组件,不需要通过new关键字手动创建对象。

2. @Service

用于标识服务层组件。

@Service
public class UserServiceImpl implements UserService {
    
    
    // ...
}

在上面的例子中,@Service注解表示该类是一个服务层组件,可以被其他组件进行自动注入。

3. @Controller

用于标识Controller层组件。

@Controller
@RequestMapping("/user")
public class UserController {
    
    
    // ...
}

在上面的例子中,@Controller注解表示该类是Controller层组件,可以处理/user请求的数据。

4. @RequestMapping

用于映射请求路径和请求方法。

@Controller
@RequestMapping("/user")
public class UserController {
    
    
    
    @RequestMapping(value = "/list", method = RequestMethod.GET)
    public String userList() {
    
    
        // ...
    }
}

在上面的例子中,@RequestMapping注解表示请求路径为/user/list,请求方法为GET,对应处理方法是userList

四、Spring Boot注解

1. @SpringBootApplication

用于标识启动类,包含了@Configuration@EnableAutoConfiguration@ComponentScan三个注解。

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

在上面的例子中,@SpringBootApplication注解表示该类是Spring Boot应用程序的启动类。

2. @EnableAutoConfiguration

自动配置,自动根据类路径下的依赖以及项目定义的Bean进行自动配置。

3. @RestController

类似于@Controller,但是其中的所有方法都返回JSON格式的数据。

@RestController
@RequestMapping("/user")
public class UserController {
    
    

    @Autowired
    private UserService userService;

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

在上面的例子中,@RestController注解表示该类可以处理/user请求,并返回JSON格式的数据。

4. @RequestMapping

用于映射请求路径和请求方法。

@RestController
@RequestMapping("/user")
public class UserController {
    
    

    @GetMapping("/{id}")
    public User getUserById(@PathVariable Long id) {
    
    
        // ...
    }
}

在上面的例子中,@RequestMapping注解表示请求路径为/user/{id},请求方法为GET,对应处理方法是getUserById

五、MySQL注解

1. @Table

用于标识表名。

@Table(name = "user")
public class User {
    
    
    // ...
}

在上面的例子中,@Table注解表示该实体类对应的表名为user

2. @Column

用于标识字段名。

@Table(name = "user")
public class User {
    
    

    @Column(name = "user_id")
    private Long id;
    // ...
}

在上面的例子中,@Column注解表示该字段对应的列名为user_id

3. @GeneratedValue

用于标识该字段自动生成。

@Table(name = "user")
public class User {
    
    

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

在上面的例子中,@GeneratedValue注解表示该字段自动生成,由数据库自动递增。

4. @Id

用于标识主键字段。

@Table(name = "user")
public class User {
    
    

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

在上面的例子中,@Id注解表示该字段是主键。

猜你喜欢

转载自blog.csdn.net/weixin_52357829/article/details/131351984