• springboot 整合/集成 mybatis+redis+junit


    1.快速创建springboot项目

    2.下载启动redis的windows版本

    3.整合mybatis+redis+junit

    一 快速创建springboot项目

    访问地址:https://start.spring.io

    或者idea,new 项目,选择 spring initializr 快速创建项目;

    二 下载启动redis的windows版本

    下载redis,地址:Redis 教程 | 菜鸟教程 (runoob.com)

    启动server

    三 整合mybatis+redis+junit

    创建各种项目文件,目录:

    1.pom文件

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.6.1</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.ligy</groupId>
        <artifactId>springbootstudy</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>springbootstudy</name>
        <description>Demo project for Spring Boot</description>
        <properties>
            <java.version>1.8</java.version>
        </properties>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>2.2.0</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <scope>runtime</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-redis</artifactId>
                <version>1.4.1.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.2.3</version>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>3.1.0</version>
                </plugin>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>

    2.properties

    #mysql配置
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    spring.datasource.url=jdbc:mysql://127.0.0.1:3306/school?useunicode=true&characterEncoding=utf8
    spring.datasource.username=root
    spring.datasource.password=root
    spring.data.source.type=com.alibaba.druid.pool.DruidDataSource
    #mybatis配置
    mybatis.type-aliases-package=com.ligy.springbootstudy.model
    mybatis.mapper-locations=classpath:mapper/*.xml
    #配置mybatis查看sql
    mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
    #reds配置
    spring.redis.host=127.0.0.1
    spring.redis.port=6379
    #配置jpa查看sql
    spring.jpa.show-sql=true
    spring.jpa.properties.hibernate.format_sql=true

    3.mapper对应xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    
    <mapper namespace="com.ligy.springbootstudy.mapper.StudentMapper">
        <select id="getList" resultType="com.ligy.springbootstudy.model.Student">
             select * from Student
         </select>
        <insert id="insert" parameterType="student" keyProperty="id" useGeneratedKeys="true">
            insert into Student(name)
            values('${name}')
        </insert>
    </mapper>

    4.mapper接口

    package com.ligy.springbootstudy.mapper;
    
    import com.ligy.springbootstudy.model.Student;
    import org.apache.ibatis.annotations.Mapper;
    
    import java.util.List;
    
    @Mapper
    public interface StudentMapper {
        List<Student> getList();
    
        boolean insert(Student student);
    }

    5.model文件

    package com.ligy.springbootstudy.model;
    
    public class Student {
        private int id;
        private String name;
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        @Override
        public String toString() {
            return "Student{" +
                    "id=" + id +
                    ", name='" + name + '\'' +
                    '}';
        }
    }

    6.service层接口+实现类

    package com.ligy.springbootstudy.service;
    
    import com.ligy.springbootstudy.model.Student;
    
    import java.util.List;
    
    public interface StudentService {
        List<Student> getList();
        boolean insert(Student student);
    }
    package com.ligy.springbootstudy.service.impl;
    
    import com.ligy.springbootstudy.mapper.StudentMapper;
    import com.ligy.springbootstudy.model.Student;
    import com.ligy.springbootstudy.service.StudentService;
    import org.springframework.stereotype.Service;
    
    import javax.annotation.Resource;
    import java.util.List;
    
    @Service
    public class StudentServiceImpl implements StudentService {
        @Resource
        StudentMapper studentMapper;
    
        @Override
        public List<Student> getList() {
            return studentMapper.getList();
        }
    
        @Override
        public boolean insert(Student student) {
            return studentMapper.insert(student);
        }
    }

    7.springboot启动入口

    package com.ligy.springbootstudy;
    
    import org.mybatis.spring.annotation.MapperScan;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    @MapperScan("com.ligy.springbootstudy.mapper")
    public class SpringbootstudyApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(SpringbootstudyApplication.class, args);
        }
    
    }

    8.单元测试(redis + mybatis 查询和插入)

    package com.ligy.springbootstudy;
    
    import com.ligy.springbootstudy.model.Student;
    import com.ligy.springbootstudy.service.StudentService;
    import org.junit.jupiter.api.Test;
    import org.springframework.boot.test.context.SpringBootTest;
    
    import javax.annotation.Resource;
    import java.util.List;
    
    @SpringBootTest
    class SpringbootstudyApplicationTests {
    
        @Resource
        StudentService studentService;
    
        @Test
        void test2() {
            Student student = new Student();
            student.setName("jack100");
            boolean t = studentService.insert(student);
            if (t) {
                System.out.println("插入成功"+student);
            } else {
                System.out.println("插入失败");
            }
        }
    
        @Test
        void test1() {
            List<Student> list = studentService.getList();
            System.out.println(list);
        }
    
    }
    package com.ligy.springbootstudy;
    
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONArray;
    import com.alibaba.fastjson.JSONObject;
    import com.ligy.springbootstudy.model.Student;
    import com.ligy.springbootstudy.service.StudentService;
    import org.junit.jupiter.api.Test;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.data.redis.core.RedisTemplate;
    
    import javax.annotation.Resource;
    import java.util.ArrayList;
    import java.util.List;
    
    @SpringBootTest
    public class RedisTest {
    
        @Resource
        RedisTemplate<String, Object> redisTemplate;
        @Resource
        StudentService studentService;
    
        @Test
        void test2() {
            if (redisTemplate.hasKey("student-list")) {
                String str = redisTemplate.boundValueOps("student-list").get().toString();
                JSONArray array = JSON.parseArray(str);
                List<Student> list = new ArrayList<>();
                for (int i = 0; i < array.size(); i++) {
                    String t = array.get(i).toString();
                    Student student = JSONObject.parseObject(t, Student.class);
                    System.out.println("从redis拿数据:" + student.getName());
                    list.add(student);
                }
                System.out.println("从redis拿数据:" + list);
            } else {
                List<Student> list = studentService.getList();
                redisTemplate.boundValueOps("student-list").set(JSON.toJSONString(list));
    
                System.out.println("从数据库拿数据:" + list);
            }
        }
    
        @Test
        void test1() {
            redisTemplate.boundValueOps("name").set("{id:1,name:'jack'}");
            Object name = redisTemplate.boundValueOps("name").get();
            Object parse = JSON.parse(name.toString());
            System.out.println("redis:name:" + parse);
        }
    }
  • 相关阅读:
    京东咚咚架构演讲读后感
    京东峰值系统设计读后感
    游戏服务器的架构演讲读后感
    菜鸟弹性调度系统的架构设计读后感
    阿里如何实现秒级百万TPS?搜索离线大数据平台架构解读读后感
    阿里游戏高可用架构设计实践读后感
    淘宝架构背后——零售业务中台架构设计探讨及实践读后感
    本地存储的时候需要类型转换
    禁止输入框显示用户历史输入历史记录
    项目必备!永无 bug 注释
  • 原文地址:https://www.cnblogs.com/ligenyun/p/15706656.html
Copyright © 2020-2023  润新知