1. 基本功能 1. 基本功能
1.1. 基础数据缓存配置 1.1. 基础数据缓存配置
为了提高查询更新等效率,给一些方法(数据几乎变动的)加一级、二级缓存,配置后,方法会加上相应的缓存注解。
2. 配置方法 2.配置方法
2.1. 基础数据缓存配置 2.1. 基础数据缓存配置
配置
- 对象建模– 业务对象– 业务对象管理,编辑业务对象,进入基本信息tab页。
- 在缓存配置出进行相应的配置:缓存配置(不开启、一级缓存、二级缓存)、自定义key值策略、主键key值策略。
配置说明:
(1)不开启:不会生成缓存相关的注解 ;
(2)配置一级缓存并开启主键key值策略:会在serviceImpl文件对应get(pk)、update()、saveOrUpdate()、delete()的方法会加上相应的缓存注解(@CacheEnable, @CacheUpdater, @CacheUpdater, @CacheDestroyer) ;
(3)配置一级缓存并开启自定义key值策略:会在update()、saveOrUpdate()、delete()的方法会加上相应的缓存注解(@CacheUpdater, @CacheUpdater, @CacheDestroyer) ;
(4)配置二级缓存:在一级缓存的基础上,如果有开启了主键key值策略,则会在get(pk)方法上多加一个注解@L2CacheEnable; - 保存并提交业务对象,然后重新生成代码。
- 本地工程中,pom需要引入以下包:
<dependency>
<groupId>com.gillion</groupId>
<artifactId>cache-manager</artifactId>
<version>2.0.1.2.RELEASE</version>
<classifier>pg</classifier>
</dependency>
代码
配置一级缓存并开启主键key值策略,在serviceImpl文件对应get(pk)、update()、saveOrUpdate()、delete()的方法会加上相应的缓存注解(@CacheEnable, @CacheUpdater, @CacheUpdater, @CacheDestroyer) ;
@Override
@CacheUpdater(value = "TestExam3101ghx", key = "#testExam3101ghx.testExam3101Id")
public int update(TestExam3101ghx testExam3101ghx) {
int result = -1;
if (testExam3101ghx.getRowStatus() == BaseObject.ROWSTATUS_MODIFIED) {
result = super.update(testExam3101ghx);
}
return result;
}
/**
* GLPaaS生成
* 根据主键获取TestExam3101GHX
*
* @param testExam3101Id
* @return
*/
@Override
@CacheEnable(value = "TestExam3101ghx", key = "#testExam3101Id")
public TestExam3101ghx get(String testExam3101Id) {
TestExam3101ghx testExam3101ghx = super.get(testExam3101Id);
return testExam3101ghx;
}
配置一级缓存并开启自定义key值策略,在update()、saveOrUpdate()、delete()的方法会加上相应的缓存注解(@CacheUpdater, @CacheUpdater, @CacheDestroyer) ;
@Override
@CacheUpdater(value = "TestExam3101ghx", key = "#testExam3101ghx.itemCode")
public int update(TestExam3101ghx testExam3101ghx) {
int result = -1;
if (testExam3101ghx.getRowStatus() == BaseObject.ROWSTATUS_MODIFIED) {
result = super.update(testExam3101ghx);
}
return result;
}
@Override
@CacheUpdater(value = "TestExam3101ghx", key = "#testExam3101ghx.itemCode", condition = "#testExam3101ghx.rowStatus==16")
public int saveOrUpdate(TestExam3101ghx testExam3101ghx) {
int result = 0;
if (testExam3101ghx.getRowStatus() == BaseObject.ROWSTATUS_DELETED) {
this.delete(testExam3101ghx, true);
result = 1;
} else {
if (testExam3101ghx.getRowStatus() == BaseObject.ROWSTATUS_ADDED || testExam3101ghx.getRowStatus()
== BaseObject.ROWSTATUS_MODIFIED) {
result = super.saveOrUpdate(testExam3101ghx);
}
}
return result;
}
配置二级缓存,在一级缓存的基础上,如果有开启了主键key值策略,则会在get(pk)方法上多加一个注解@L2CacheEnable;
@Override
@L2CacheEnable
@CacheEnable(value = "TestExam3101ghx", key = "#testExam3101Id")
public TestExam3101ghx get(String testExam3101Id) {
TestExam3101ghx testExam3101ghx = super.get(testExam3101Id);
return testExam3101ghx;
}