前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot基础(三、整合Mybatis、Redis)

SpringBoot基础(三、整合Mybatis、Redis)

作者头像
营琪
发布2019-11-04 16:54:01
9530
发布2019-11-04 16:54:01
举报
文章被收录于专栏:营琪的小记录营琪的小记录

我们以前使用SSM的时候,使用Mybatis是需要各种配置文件、实体类、Dao层的各种映射关系,虽然可以使用注解减少这些配置信息,但还是有好多东西需要配置,自从SpringBoot流行起来(约定大于配置),Mybatis也开发了一套解决方案,简化配置。

SpringBoot整合Mybatis框架

Mybatis的一些命令,可以参照常用MySQL命令总结(数据库学习)

  • 一、添加Mybatis的起步依赖
代码语言:javascript
复制
<!--mybatis起步依赖-->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.0.1</version>
</dependency>

一般官方Mybatis给的坐标:<artifactId>mybatis-spring-boot-starter</artifactId>,

Spring提供的坐标:<artifactId>spring-boot-starter-data-redis</artifactId>

  • 二、添加数据库驱动坐标
代码语言:javascript
复制
<!-- MySQL连接驱动 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
  • 三、在application.properties文件中,添加数据库链接信息
代码语言:javascript
复制
#DB Configuration:
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root
#pojo别名扫描包
mybatis.type-aliases-package=com.yingqi.domain

我们知道,SpringBoot中整合了很多很多的配置,也就是说以前我们使用的很多配置文件是不适合的了,SpringBoot中有特定的配置名称,那么我们可以在上一章中提到的三种方法选择一种。

  • 四、在MySQL中创建数据库和表
代码语言:javascript
复制
CREATE DATABASE test;
CREATE TABLE `user` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
INSERT INTO `user` VALUES ('1', '张三');
INSERT INTO `user` VALUES ('2', '李四');
  • 五、创建实体Bean
代码语言:javascript
复制
package com.yingqi.doman;

public class User {
    private int id;
    private String name;
    //tostring、get和set方法
}
  • 六、编写Mapper
代码语言:javascript
复制
package com.yingqi.mapper;

import com.yingqi.doman.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;
@Mapper
public interface UserMapper {
    @Select("select * from user")
    public List<User> find();
}
  • 七、编写引导类
代码语言:javascript
复制
package com.yingqi;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.yingqi.mapper")
public class QuickStartOneApplication {
    public static void main(String[] args) {
        SpringApplication.run(QuickStartOneApplication.class);
    }
}
  • 八、编写测试类

由于环境中没有junit,需要添加测试的环境依赖

代码语言:javascript
复制
<!--测试的起步依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>

测试find方法是否正常

代码语言:javascript
复制
import com.yingqi.QuickStartOneApplication;
import com.yingqi.doman.User;
import com.yingqi.mapper.UserMapper;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.List;

@RunWith(SpringRunner.class)
@SpringBootTest(classes = QuickStartOneApplication.class)
public class mapperTest {
    @Autowired
    private UserMapper userMapper;
    @Test
    public void findTest(){
        List<User> users = userMapper.find();
        System.out.println(users);
    }

}

正常输出

刚刚我运行的时候出现了一个问题,一直报数据库错误,显示时区错误,后面找了一下,发现url中要加入&serverTimezone=UTC属性。

SpringBoot整合Redis

  • 一、添加Redis的起步依赖
代码语言:javascript
复制
<!-- 配置使用redis启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
  • 二、在application.properties文件中,添加Redis连接信息
代码语言:javascript
复制
#Redis
# Redis服务器地址
spring.redis.host=127.0.0.1
# Redis服务器连接端口
spring.redis.port=6379
# Redis服务器连接密码(默认为空)
spring.redis.password=
  • 三、编写测试类
代码语言:javascript
复制
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yingqi.QuickStartOneApplication;
import com.yingqi.doman.User;
import com.yingqi.mapper.UserMapper;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.List;

@RunWith(SpringRunner.class)
@SpringBootTest(classes = QuickStartOneApplication.class)
public class redisTest {
    @Autowired
    private UserMapper userMapper;
    @Autowired
    private RedisTemplate<String, String> redisTemplate;

    @Test
    public void test() throws JsonProcessingException {
//从redis缓存中获得指定的数据
        String userListData = redisTemplate.boundValueOps("user.find").get();
//如果redis中没有数据的话
        if (null == userListData) {
//查询数据库获得数据
            List<User> list = userMapper.find();
//转换成json格式字符串
            ObjectMapper objectMapper = new ObjectMapper();
            userListData = objectMapper.writeValueAsString(list);
//将数据存储到redis中
            redisTemplate.boundValueOps("user.find").set(userListData);
            System.out.println("从数据库");
        } else {
            System.out.println("从redis缓存");
        }
        System.out.println(userListData);
    }
}

正常输出

  1. 第一次,
  1. 第二次,

总结

我们整合了Mybatis和Redis,发现是有一些规律的,先导入起步依赖,再配置连接信息,与SpringBoot建立联系(例:@MapperScan("x'x'x"))再写业务代码。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-06-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SpringBoot整合Mybatis框架
  • SpringBoot整合Redis
  • 总结
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档