注解的知识

 1.基本注解  (以@开头)

注解名

描述

@Override

标记重写方法

@Deprecated

标记已过时

@WebServlet

标记是一个Servlet

@WebFilter

标记是一个Filter 过滤器

@WebListener

标记是一个Listener监听器

2.注解 

  注解相当于标记,加上注解相当于程序打上了某种标记。

  在类加载时或编译时或运行时,通过反射获取注解,从而执行相应的操作

  注解可以加在:包、类、方法、字段、构造方法...等

3.元注解 (作用在注解上的注解)

   3.1 @Retention(RetentionPolicy.XXX) 指定注解保存时间

      值:来自于RetentionPolicy枚举类型的值

描述

SOURCE

源代码阶段

CLASS

字节码阶段 (默认值)

RUNTIME

运行时阶段

   3.2 @Target({ElementType.XXX,ElementType.XXX...}) 指定注解作用的位置

      值:来自于ElementType枚举类型的值

描述

TYPE

类、接口、枚举

FIELD

字段

METHOD

方法

PARAMETER

参数

CONSTRUCTOR

构造方法

LOCAL_VARIABLE

局部变量

ANNOTATION_TYPE

注解

PACKAGE

注意:如果不写,默认可以放在任何位置

4.自定义注解

   1. 写一个注解类  @interface

//设置注解的保存时间
@Retention(RetentionPolicy.RUNTIME)
//设置注解的作用位置
@Target({ElementType.TYPE,ElementType.METHOD})
public @interface MyAnnotation {
}

  2. 写一个使用注解的类

@MyAnnotation
public class UseMyAnnotation {
}

  3. 写一个类,通过反射获取注解,指定执行的操作

/**
 * 通过反射获取如果类上加了MyAnnotatoin注解,
 * 执行对应操作
 */
public class MyAnnotationTest {
    public static void main(String[] args) throws Exception {
        //获取Class对象
        Class c=Class.forName("demo02.UseMyAnnotation");
        //获取类上的MyAnnotatoin注解
        Annotation a=c.getDeclaredAnnotation(MyAnnotation.class);
        //如果有,指定需要执行操作
        if(a!=null){
            System.out.println("人机加了MyAnnotatoin注解....");
        }
    }
}

5.给注解添加属性

1. 基本属性语法

       数据类型  属性名()  default  默认值;

       注意:使用注解需要为属性赋值 

       语法:@MyAnnotation(name="天人肖勇")

2.特殊value() 属性

       数据类型  value();

       特点:如果只给value属性赋值,可以省略value =

3. 数组类型属性

      数据类型[]  属性名()  default  {值,值...};

      特点:如果数组只有1个值,可以省略{}

6.典型应用Hibernate底层实现

   根据实体类自动生成建表的sql语句,并执行。

 

 

 

MyBatis是一个持久层框架,它支持JDBC,提供了基于XML或注解的元数据绑定,使得开发者能够更方便地操作数据库。MyBatis的注解功能允许开发者在Java代码中直接配置映射,减少了XML配置文件的工作量。以下是一些重要的MyBatis注解及其用途: 1. **@Mapper**:这是最基础的注解,用于标记包含SQL映射语句的接口,告诉MyBatis这是一个Mapper接口。 ```java @Mapper public interface UserMapper { @Insert("INSERT INTO users ...") int insert(User user); } ``` 2. **@Insert, @Update, @Delete, @Select**: 这些注解分别对应SQL的插入、更新、删除和查询操作,它们可以直接在接口方法上写入数据库操作的SQL语句。 3. **@SelectProvider, @ResultMap, @Results**: 这些注解用于提供动态生成的SQL和结果映射。`@SelectProvider`允许使用lambda表达式或方法返回复杂的查询语句,`@ResultMap`用于定义查询结果的结构,而`@Results`则能同时处理多种查询结果。 4. **@Param**: 用于定义方法参数和SQL语句参数的映射关系,避免SQL注入。 5. **@Table**: 用于标注实体类,指定与数据库表的映射关系,比如主键、列名等。 6. **@OneToOne, @OneToMany, @ManyToMany**: 这些注解用于描述一对一、一对多和多对多的关系,有助于在查询时实现关联数据的获取。 7. **@Pre增删改查**: 可以添加自定义的前缀拦截器,如事务控制、日志记录等。 8. **@Cache**: 注解在方法上,可以启用缓存,提高数据读取速度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值