精华帖 (0) :: 良好帖 (1) :: 新手帖 (1) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-11-22
最后修改:2011-11-22
aa87963014 写道 gtssgtss 写道 lz的缓存有何特别之处?
不是缓存特别,而是支持原生sql语法。 并且在支持原生sql语法的情况下能做缓存功能。 意思就是可以直接用sql对缓存进行查询,并且如果有数据的话,还可以是另一个sql语句? |
|
返回顶楼 | |
发表时间:2011-11-22
gtssgtss 写道
意思就是可以直接用sql对缓存进行查询,并且如果有数据的话,还可以是另一个sql语句?
select k.*,j.c from (select date(paytime) as p,sum(total), count(*),sum(buynum) from GameOrder group by date(paytime)) k left join (select x.u as b,count(*) as c from (select date(paytime) as u,count(regUserId),regUserId from GameOrder group by date(paytime),regUserId) x group by x.u) j on j.b = k.p order by k.p desc 这种sql,函数什么的都可以使用数据库函数。没有其他学习成本,只需要把sql里面的表和字段替换成annotation映射的字段。
当然,上面这条sql其实就是翻译成sql然后执行并且封装返回值。这类sql利用不到缓存。 |
|
返回顶楼 | |
发表时间:2011-11-22
A,最简单的缓存:以sql(和参数等)为key取得map里的value
B,实现一个内存数据库,查不到的时候查询真实数据库 这两种难度差了N个数量级,呵呵 |
|
返回顶楼 | |
发表时间:2011-11-22
gtssgtss 写道 A,最简单的缓存:以sql(和参数等)为key取得map里的value B,实现一个内存数据库,查不到的时候查询真实数据库 这两种难度差了N个数量级,呵呵 A update 怎么办? |
|
返回顶楼 | |
发表时间:2011-11-22
最后修改:2011-11-22
遍历keySet啊,可以把表名之类的也放入key里嘛
if(!key.getTableSet().retainAll(sql.getTableSet()).isEmpty()){ map.remove(key); } |
|
返回顶楼 | |