博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mybatis的@Options注解
阅读量:6710 次
发布时间:2019-06-25

本文共 2097 字,大约阅读时间需要 6 分钟。

mybatis的@Options注解能够设置缓存时间,能够为对象生成自增的key

源代码如下:

@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.METHOD)public @interface Options {  boolean useCache() default true;  boolean flushCache() default false;  ResultSetType resultSetType() default ResultSetType.FORWARD_ONLY;  StatementType statementType() default StatementType.PREPARED;  int fetchSize() default -1;  int timeout() default -1;  boolean useGeneratedKeys() default false;  String keyProperty() default "id";  String keyColumn() default "";}
View Code

 

第一个使用场景:

有一个表

CREATE TABLE instance (   instance_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键id',   infos VARCHAR(2048) NOT NULL DEFAULT '' COMMENT '',   create_time TIMESTAMP  NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '创建时间',   update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',   PRIMARY KEY (instance_id) )ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT '实例表';

其中的instance_id是自增的主键。

我希望通过dao层的接口插入的数据能够返回主键的id:

接口代码如下:

@Insert("insert into instance (infos)"                    + " ("                    + " @{infos},"                    + " NOW()"                    + ")")    @Options(useGeneratedKeys = true, keyProperty = "instanceId", keyColumn = "instance_id")    int addInstance(Instance instance);
View Code

@Options注解中默认设置的主键对应的字段名为id、在我们的表中,主键名为instance_id,因此需要将keyProperty和keyColumn设置成我们想要的字段:

这个注解的意思就是,从instance_id这个字段里面把数据放到传入对象的instanceId成员变量里面。

useGenerateKey=true : 设置是否使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中

具体单测示例如下:

@Test    public void addInstanceTest() {        Instance instance = new Instance();        instance.setInfos("infos");         int res = instanceMapper.addInstance(instance);        instance.setInfos("infos2");        int res2 = instanceMapper.addInstance(instance);        Instance ins = instanceMapper.getInstanceById(instance.getInstanceId());        log.info("{}", ins.getInstanceId()); // 此处打印的日志信息就是2,即第二条记录的主键id,主键会自动返回到实例对象中    }

 

 

二  注解中的useCache还可以设置缓存相关的选项:

 useCache = true表示本次查询结果被缓存以提高下次查询速度,

 flushCache = false表示下次查询时不刷新缓存,

 timeout = 10000表示查询结果缓存10000秒。

 

转载地址:http://vaalo.baihongyu.com/

你可能感兴趣的文章
php使用composer报zlib_decode():data error……
查看>>
\A \Z ^ $ 在Ruby Regular Expression 中的区别
查看>>
初级Java程序员和Java架构师的区别:内功心法修炼图
查看>>
DNS解析实验
查看>>
[备忘]国内的在线API阅读网站
查看>>
用户及组的介绍
查看>>
Apache压力测试
查看>>
详细解说STL hash_map系列
查看>>
云吞铺子:性能抖动剖析 2
查看>>
《PBI系列 车图 色彩搭配 数据分析 01》花随花心著
查看>>
智能 |MES与设备集成时有哪几种握手方式
查看>>
shell脚本练习
查看>>
效率最快10个Excel实用技巧,Excel秒杀
查看>>
设计开发你必须了解的5个方面
查看>>
多张jpg图片怎么转换成png格式
查看>>
beautifulsoup的简单用法
查看>>
Kubernetes高级调度- Taint和Toleration、Node Affinity分析
查看>>
手机怎么恢复照片呢
查看>>
深度操作系统 15.8——极致体验,美观高效
查看>>
1211本书通通免费!这是个专为程序员准备的网站
查看>>