使用Leopard Cache

[size=x-large]使用Leopard Cache[/size]
[size=large]学习如何使用Leopard Cache。[/size]
本指南将引导您使用Leopard Cache操作缓存。
[size=x-large]How to complete this guide[/size]
你可以从头开始并完成每一个步骤,或者您可以绕过你已经熟悉的基本设置步骤。无论哪种方式,你最终都可以得到可工作的代码。
[size=x-large]1、配置maven依赖[/size]
在dao模块的pom.xml加入
    <dependencies>
[...]
<dependency>
<groupId>io.leopard</groupId>
<artifactId>leopard-data</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
[...]
</dependencies>
<repositories>
<repository>
<id>leopard-snapshots</id>
<name>Leopard Snapshots</name>
<url>http://leopard.io/nexus/content/repositories/snapshots/</url>
</repository>
</repositories>

[size=x-large]2、配置spring[/size]
src/main/resources/applicationContext-dao.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <span style='font-weight:bold;color:#ff0000'>xmlns:leopard="http://www.leopard.io/schema/leopard"</span>
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
<span style='font-weight:bold;color:#ff0000'>http://www.leopard.io/schema/leopard http://www.leopard.io/schema/leopard.xsd</span>">

<leopard:component-scan base-package="io.leopard.guides" />

<leopard:jdbc id="jdbc" host="112.126.75.27" database="example" user="example" password="leopard" />
<leopard:redis id="redis" server="112.126.75.27:6311" />

</beans>
[size=x-large]3、创建UserDao接口,用到缓存必须实现IGet接口.[/size]
此处为了展现更多接口直接实现了IDelete接口
创建src/main/java/io/leopard/guides/dao/UserDao.java
package io.leopard.guides.dao;

import io.leopard.data4j.cache.api.uid.IDelete;
import io.leopard.guides.model.User;

import java.util.Date;

public interface UserDao extends IDelete<User, Long> {

@Override
public boolean add(User user);

@Override
User get(Long uid);

@Override
boolean delete(Long uid, long opuid, Date lmodify);

}
[size=x-large]4、创建UserDao接口Mysql实现[/size]
创建src/main/java/io/leopard/guides/dao/mysql/UserDaoMysqlImpl.java
package io.leopard.guides.dao.mysql;

import io.leopard.data4j.jdbc.Jdbc;
import io.leopard.data4j.jdbc.builder.InsertBuilder;
import io.leopard.guides.dao.UserDao;
import io.leopard.guides.model.User;

import java.util.Date;

import javax.annotation.Resource;

import org.springframework.stereotype.Repository;

@Repository
public class UserDaoMysqlImpl implements UserDao {

@Resource
private Jdbc jdbc;

@Override
public boolean add(User user) {
InsertBuilder builder = new InsertBuilder("user");
builder.setLong("uid", user.getUid());
builder.setString("nickname", user.getNickname());
builder.setDate("posttime", user.getPosttime());
return this.jdbc.insertForBoolean(builder);
}

@Override
public User get(Long uid) {
String sql = "select * from user where uid=?;";
return jdbc.query(sql, User.class, uid);
}

@Override
public boolean delete(Long uid, long opuid, Date lmodify) {
String sql = "delete from user where uid=?;";
return jdbc.updateForBoolean(sql, uid);
}

}
[size=x-large]5、创建UserDao接口Redis实现[/size]
创建src/main/java/io/leopard/guides/dao/redis/UserDaoRedisImpl.java
package io.leopard.guides.dao.redis;

import io.leopard.burrow.lang.Json;
import io.leopard.burrow.util.NumberUtil;
import io.leopard.data4j.redis.Redis;
import io.leopard.guides.dao.UserDao;
import io.leopard.guides.model.User;

import java.util.Date;

import javax.annotation.Resource;

import org.springframework.stereotype.Repository;

@Repository
public class UserDaoRedisImpl implements UserDao {

@Resource
private Redis redis;

@Override
public boolean add(User user) {
String key = this.getKey(user.getUid());
redis.set(key, Json.toJson(user));
return true;
}

@Override
public User get(Long uid) {
String key = this.getKey(uid);
String json = redis.get(key);
return Json.toObject(json, User.class);
}

@Override
public boolean delete(Long uid, long opuid, Date lmodify) {
String key = this.getKey(uid);
Long result = redis.del(key);
return NumberUtil.toBool(result);
}

protected String getKey(long uid) {
return "user:" + uid;
}

}
[size=x-large]6、创建UserDao接口Cache实现[/size]
创建src/main/java/io/leopard/guides/dao/cache/UserDaoCacheImpl.java
package io.leopard.guides.dao.cache;

import io.leopard.data4j.cache.CacheLoader;
import io.leopard.guides.dao.UserDao;
import io.leopard.guides.model.User;

import java.util.Date;

import javax.annotation.Resource;

import org.springframework.stereotype.Repository;

@Repository
public class UserDaoCacheImpl implements UserDao {

@Resource
private UserDao userDaoMysqlImpl;

@Resource
private UserDao userDaoRedisImpl;

@Override
public boolean add(User user) {
return userDaoMysqlImpl.add(user);
}

@Override
public User get(Long uid) {
// 先到userDaoRedisImpl.get方法查,有数据直接返回
// 如果redis实现没有数据,就到userDaoMysqlImpl.get方法查询数据。如果有数据将数据传给userDaoRedisImpl.add方法保存并返回。如果mysql实现也没有数据则返回null.
return CacheLoader.get(userDaoRedisImpl, userDaoMysqlImpl, uid);
}

@Override
public boolean delete(Long uid, long opuid, Date lmodify) {
userDaoRedisImpl.delete(uid, opuid, lmodify);
return this.userDaoMysqlImpl.delete(uid, opuid, lmodify);
}

}
[size=x-large]7、在UserService使用UserDao接口[/size]
创建src/main/java/io/leopard/guides/service/UserService.java
package io.leopard.guides.service;

import io.leopard.guides.dao.UserDao;
import io.leopard.guides.model.User;

import java.util.Date;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

@Service
public class UserService {

@Resource
// 当有xxxDaoCacheImpl存在时,Leopard自动为它增加了@Primary注解
// 这里会自动注入userDaoCacheImpl.
private UserDao userDao;

public boolean add(User user) {
return this.userDao.add(user);
}

public User get(long uid) {
return this.userDao.get(uid);
}

public boolean delete(long uid) {
return this.userDao.delete(uid, 0, new Date());
}
}
[size=x-large]8、编写UserService测试代码[/size]
创建src/test/java/io/leopard/guides/service/UserServiceTest.java
package io.leopard.guides.service;

import io.leopard.guides.model.User;
import io.leopard.test.IntegrationTests;

import java.util.Date;

import org.junit.Assert;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;

public class UserServiceTest extends IntegrationTests {

@Autowired
private UserService userService;

@Test
public void get() {
this.userService.delete(1);// 先删除记录
{
User user = new User();
user.setUid(1);
user.setNickname("Leopard");
user.setPosttime(new Date());
userService.add(user);
}
{
User user = userService.get(1);
Assert.assertNotNull(user);
Assert.assertEquals("Leopard", user.getNickname());
}

}

}
[size=xx-large]总结[/size]
恭喜你!您已经可以配置使用Leopard Cache,虽然功能比较简单,你可以在这个基础上扩展出你的业务系统,祝您好运。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值