@Options 注解是 MyBatis 中用于配置存储过程或函数映射的注解。在源码中,@Options 注解通常被应用于接口方法,用于指定与该方法关联的 SQL 语句或存储过程的配置信息。
mybatis-3.5.3-sources.jar源码:
package org.apache.ibatis.annotations;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.apache.ibatis.mapping.ResultSetType;
import org.apache.ibatis.mapping.StatementType;
/**
* 该注解用于配置MyBatis映射文件中SQL语句的执行选项。
* 可以应用于方法。
*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Options {
/**
* {@link Options#flushCache()} 的选项。
* 默认值为 {@link FlushCachePolicy#DEFAULT}
*/
enum FlushCachePolicy {
/**
* 对于非SELECT语句,刷新缓存。
*/
DEFAULT,
/**
* 无论语句类型如何,都刷新缓存。
*/
TRUE,
/**
* 无论语句类型如何,都不刷新缓存。
*/
FALSE
}
/**
* 指定是否使用缓存来执行该语句。
* 默认值为 true。
*/
boolean useCache() default true;
/**
* 指定缓存刷新策略。
* 默认值为 FlushCachePolicy.DEFAULT。
*/
FlushCachePolicy flushCache() default FlushCachePolicy.DEFAULT;
/**
* 指定语句的结果集类型。
* 默认值为 ResultSetType.DEFAULT。
*/
ResultSetType resultSetType() default ResultSetType.DEFAULT;
/**
* 指定语句的类型。
* 默认值为 StatementType.PREPARED。
*/
StatementType statementType() default StatementType.PREPARED;
/**
* 指定语句的获取记录数。
* 默认值为 -1,表示使用驱动程序的默认值。
*/
int fetchSize() default -1;
/**
* 指定语句的超时时间(以秒为单位)。
* 默认值为 -1,表示使用驱动程序的默认值。
*/
int timeout() default -1;
/**
* 指定是否使用自动生成的主键。
* 默认值为 false。
*/
boolean useGeneratedKeys() default false;
/**
* 如果使用自动生成的主键,指定要将主键值设置到哪个属性中。
* 默认值为空字符串。
*/
String keyProperty() default "";
/**
* 如果使用自动生成的主键,指定主键的列名。
* 默认值为空字符串。
*/
String keyColumn() default "";
/**
* 指定语句的结果集名称,用于存储过程调用。
* 默认值为空字符串。
*/
String resultSets() default "";
}
- boolean useCache() default true;
这是一个布尔类型的成员变量,表示是否使用缓存。
默认值为true,表示使用缓存。
当设置为true时,表示启用缓存
当设置为false时,表示禁用缓存。默认值为true。
- FlushCachePolicy flushCache() default FlushCachePolicy.DEFAULT;
这是一个枚举类型的成员变量,用于指定刷新缓存的策略。
- FlushCachePolicy.DEFAULT:使用默认的刷新缓存策略。
- FlushCachePolicy.TRUE:在执行语句之前刷新缓存。
- FlushCachePolicy.FALSE:在执行语句之后刷新缓存。
- 默认值为FlushCachePolicy.DEFAULT
- ResultSetType resultSetType() default ResultSetType.DEFAULT;
这是一个枚举类型的成员变量,用于指定结果集的类型。
- ResultSetType.DEFAULT:使用默认的结果集类型。
- ResultSetType.FORWARD_ONLY:只能向前遍历结果集。
- ResultSetType.SCROLL_INSENSITIVE:结果集对数据的修改不敏感。
- ResultSetType.SCROLL_SENSITIVE:结果集对数据的修改敏感。
默认值为ResultSetType.DEFAULT。 - StatementType statementType() default StatementType.PREPARED;
这是一个枚举类型的成员变量,用于指定语句的类型。
- StatementType.STATEMENT:普通的语句。
- StatementType.PREPARED:预编译的语句。
- StatementType.CALLABLE:可调用的语句。
- 默认值为StatementType.PREPARED。
- int fetchSize() default -1;
这是一个整数类型的成员变量,用于指定从数据库中获取的记录数。
默认值是-1,表示使用数据库的默认设置。
- int timeout() default -1;
这是一个整数类型的成员变量,用于指定语句的超时时间(以秒为单位)。
默认值是-1,表示使用数据库的默认超时时间。
- boolean useGeneratedKeys() default false;
这是一个布尔类型的成员变量,表示是否使用生成的主键。
默认值是false,表示不使用生成的主键。
- String keyProperty() default “”;
这是一个字符串类型的成员变量,用于指定主键属性的名称。
默认值是空字符串。
- String keyColumn() default “”;
这是一个字符串类型的成员变量,用于指定主键列的名称。
默认值是空字符串。
- String resultSets() default “”;
这是一个字符串类型的成员变量,用于指定结果集的名称。
默认值是空字符串。