springboot+mybatis+redis

springboot+mybatis+redis

使用springboot技术,mybatis做orm映射,redis做缓存。

  1. pom.xml文件:
 <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
  <dependencies>
    	<dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.2.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.24</version>
            <scope>runtime</scope>
        </dependency> 
       <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <!--另外一个spring-boot-starter-redis已经不推荐使用了-->
        </dependency>
  1. application.properties文件
server.port=8888
server.context-path=/sbm
mybatis.config-location=classpath:mybatis/mybatis-config.xml
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
#\u540E\u9762\u6839
mybatis.type-aliases-package=com.bank.bean

#spring.datasource.driver-class-name =com.mysql.jdbc.Driver
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.datasource.url = jdbc:mysql://localhost:3306/jms?useUnicode=true&characterEncoding=utf-8
spring.datasource.username = root
spring.datasource.password = 1234

#Redis配置
##Redis数据库索引(默认为0)
spring.redis.database=0
##Redis服务器地址
spring.redis.host=192.168.47.20
##Redis服务器连接端口
spring.redis.port=6379
##Redis服务器连接密码(默认为空)
spring.redis.password=

主要是mysql和redis数据库的配置。
mysql和redis最好使用本地数据库。如果使用别的ip,需要设置其它ip可以连接,还需要关闭服务器防火墙。

3. 启动类

@SpringBootApplication
@MapperScan(“com.bank.dao”)//扫描dao包
public class Main {
public static void main(String[] args) {
SpringApplication.run(Main.class, args);
}
}

4. dao层代码

/**

  • 添加了@Mapper注解之后这个接口在编译时会生成相应的实现类

  • 需要注意的是:这个接口中不可以定义同名的方法,因为会生成相同的id

  • 也就是说这个接口是不支持重载的
    */
    @Mapper
    public interface UserDAO {

    @Select(“select * from user where name = #{name}”)
    public User find(String name);
    }
    也可以在配置文件里 mybatis.mapper-locations 这个位置写mapper文件。
    如果写到这里sql,上面的配置可以注释。其他service,controller照普通springboot写即可。

比如Service

@ComponentScan({“com.bank.dao”})
@Service
public class UserServiceImpl implements UserService{
@Resource
private UserMapper userDao;
@Override
//@Cacheable(value = “all”, keyGenerator = “wiselyKeyGenerator”)
public User getUserById(int id) {
System.out.println(“查询mysql数据库-------->”);
return userDao.getOne(id);
}
}

controller:
@RestController//相当于@Controller+@Response
@RequestMapping("/user")
public class UserController {
	@Resource
	private UserService userService;

	@RequestMapping(value="/getUserById", method = { RequestMethod.POST, RequestMethod.GET })
	public User getUser(@RequestParam(value = "id") String id){
		int idi=Integer.valueOf(id);
		User user=userService.getUserById(idi);
		System.out.println(user.getName()+" -----------");
		return user;
	}
}	

这样mybatis基本上就配好了。可以启动项目访问一下。

5. redis配置

我抄了这个人的一个类
@EnableCaching
@Configuration //springboot加载这个配置类
public class RedisConfig extends CachingConfigurerSupport {
/*定义缓存数据 key 生成策略的bean
包名+类名+方法名+所有参数
*/
@Bean
public KeyGenerator wiselyKeyGenerator() {
return new KeyGenerator() {
@Override
public Object generate(Object target, Method method, Object… params) {
StringBuilder sb = new StringBuilder();
sb.append(target.getClass().getName());
sb.append(method.getName());
for (Object obj : params) {
sb.append(obj.toString());
}
return sb.toString();
}
};
}

/*要启用spring缓存支持,需创建一个 CacheManager的 bean,CacheManager 接口有很多实现,这里Redis 的集成,用 RedisCacheManager这个实现类
Redis 不是应用的共享内存,它只是一个内存服务器,就像 MySql 似的,
我们需要将应用连接到它并使用某种“语言”进行交互,因此我们还需要一个连接工厂以及一个 Spring 和 Redis 对话要用的 RedisTemplate,
这些都是 Redis 缓存所必需的配置,把它们都放在自定义的 CachingConfigurerSupport 中
*/
@Bean
public CacheManager cacheManager(
@SuppressWarnings(“rawtypes”) RedisTemplate redisTemplate) {
RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate);
// cacheManager.setDefaultExpiration(60);//设置缓存保留时间(seconds)
return cacheManager;
}

//1.项目启动时此方法先被注册成bean被spring管理
@Bean
public RedisTemplate<String, String> redisTemplate(
RedisConnectionFactory factory) {
StringRedisTemplate template = new StringRedisTemplate(factory);
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
template.setValueSerializer(jackson2JsonRedisSerializer);
template.afterPropertiesSet();
return template;
}
/* ---------------------
作者:古柏树下
来源:CSDN
原文:https://blog.csdn.net/sinat_29774479/article/details/80108534
版权声明:本文为博主原创文章,转载请附上博文链接!*/
}

spring找到加载配置类,注入template,manager。然后@EnableCaching开启了二级缓存。

在service 里把 @Cacheable 注释打开

然后再访问几遍。
可以看到第一次访问会查询mysql数据库,后来不会。redis把数据放到了redis里面。用redis的可视化工具删除之后,再次查询又会查询mysql数据库了。
我把代码上传到git上面了。还有其他自己写的项目:
[项目源码]https://github.com/lichao201411/com.sbm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值