1 MyBatis-Plus
1.1 MyBatis-Plus 简介
MyBatis 是一款优秀的持久层框架,它能将接口和 Java POJO(Plain Old Java Objects,普通 Java 对象)映射为数据库中的数据。支持自定义 SQL、存储过程,功能强大。MyBatis 承担了几乎所有的 JDBC 代码,包括设置参数和获取结果等工作,可通过简单的 XML 或注解进行配置。
MyBatis-Plus 是 MyBatis 的最佳搭档,它只做增强不做改变,旨在简化开发流程、提高开发效率。可在 Github 上查看其相关内容。
1.2 搭建 Spring Boot 2.x
Spring Boot 凭借自动配置功能,降低了开发复杂性,同时支持基于 Maven 的多种依赖管理,有助于开发者轻松构建企业级应用。
1.2.1 构建项目
在构建项目时,相关设置如下:
- 项目名称:springboot-mybatisplus
- Java 项目路径:D:\maven-workspace
- 构建系统:IntelliJ Maven
- JDK:1.8.0_311
- GroupId:com.ffyc.springboot
- ArtifactId:springboot-mybatisplus
此外,还可选择创建 Git 仓库、添加示例代码等。同时,可配置 Maven 的相关参数,如仓库地址等,常用的阿里云仓库地址如下:
仓库名称 | 阿里云仓库地址 | 阿里云仓库地址 (老版) | 源地址 |
---|---|---|---|
central | https://maven.aliyun.com/repository/central | https://maven.aliyun.com/nexus/content/repositories/central | Central Repository: |
public | https://maven.aliyun.com/repository/public | https://maven.aliyun.com/nexus/content/groups/public | central 仓和 jcenter 仓的聚合仓 |
grade-plugin | https://maven.aliyun.com/repository/grade-plugin | https://maven.aliyun.com/nexus/content/repositories/grade-plugin | https://plugins.gradle.org/m2/ |
apache snapshots | https://maven.aliyun.com/repository/apache-snapshots | https://maven.aliyun.com/nexus/content/repositories/apache-snapshots | Index of /groups/snapshots |
1.2.2 引入依赖
引入依赖时,先引入 Spring Boot 父依赖:
xml
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.13</version>
</parent>
接着引入数据库相关依赖:
xml
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.18</version>
</dependency>
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.10.1</version>
</dependency>
1.2.3 Spring Boot 配置
在application-dev.yml
中进行配置:
yaml
# 配置服务器
server:port: 9099
# 数据源配置
spring:datasource:druid:url: jdbc:mysql://localhost:3306/book_db?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=trueusername: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Driver
# 日志配置
logging:level:com.ffyc.springboot: debug
在application.yml
中激活开发环境配置:
yaml
spring:profiles:active: dev
1.2.4 建包
在项目中创建com.ffyc.springboot
相关包结构。
1.2.5 main 方法
编写App
类作为 Spring Boot 应用的入口:
java
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class App {public static void main(String[] args) {SpringApplication.run(App.class, args);}
}
1.2.6 实体类
创建Book
实体类,并使用注解映射数据库表:
java
package com.ffyc.springboot.entity;import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@TableName("book_tab")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Book {@TableId(value = "book_id", type = IdType.AUTO)private Integer id; // 主键@TableField("book_title")private String title;@TableField("book_author")private String author;@TableField("book_price")private Double price;@TableField("book_desc")private String desc;
}
1.2.7 数据库操作
创建IBookMapper
接口,继承BaseMapper<Book>
,用于数据库操作:
java
package com.ffyc.springboot.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ffyc.springboot.entity.Book;
import org.apache.ibatis.annotations.Mapper;@Mapper
public interface IBookMapper extends BaseMapper<Book> {
}
1.3 构建测试环境
使用 JUnit4 构建测试环境,编写测试类IBookMapperTest
:
java
package com.ffyc.springboot.mapper;import com.ffyc.springboot.entity.Book;
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.SpringJUnit4ClassRunner;import static org.junit.Assert.*;@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class IBookMapperTest {@Autowiredprivate IBookMapper mapper;@Testpublic void testSave() {Book book = new Book();book.setTitle("西游记");book.setAuthor("吴承恩");book.setPrice(88.88);book.setDesc("一段奇幻之旅....");mapper.insert(book);}@Testpublic void testUpdate() {Book book = new Book();book.setId(1);book.setTitle("西游记");book.setAuthor("吴承恩");book.setPrice(777.88);book.setDesc("一段奇幻神佛之旅....");mapper.updateById(book);}
}
1.4 MyBatis-Plus 增删改查
1.4.1 添加数据
java
Book book = new Book();
book.setTitle("西游记");
book.setAuthor("吴承恩");
book.setPrice(87.88);
book.setDesc("两段奇幻之旅....");
mapper.insert(book);
1.4.2 修改数据
java
Book book = new Book();
book.setId(1);
book.setTitle("西游记");
book.setAuthor("吴承恩");
book.setPrice(777.88);
book.setDesc("一段奇幻神佛之旅....");
mapper.updateById(book);
1.4.3 删除数据
java
mapper.deleteById(1);
1.4.4 查询数据
使用LambdaQueryWrapper
进行查询:
java
LambdaQueryWrapper<Book> queryWrapper = new LambdaQueryWrapper<>();
// queryWrapper.like(Book::getAuthor, "吴");
queryWrapper.eq(Book::getAuthor, "吴承恩").eq(Book::getTitle, "西游记");
System.out.println(mapper.selectList(queryWrapper));
1.4.4.1 常用方法
eq
:相等eq().eq()
:相当于 SQL 中的AND
in
:范围查询like
:模糊查询likeRight
:右侧通配符查询likeLeft
:左侧通配符查询or()
:或and()
:并且
1.5 MyBatis 分页
1.5.1 分页原理
MyBatis-Plus 的PaginationInnerInterceptor
提供分页功能,通过LIMIT m, n
实现数据分页显示,例如SELECT * FROM book_tab limit 0,50
。从 v3.5.9 起,PaginationInnerInterceptor
已分离出来,使用时需单独引入mybatisplus - jsqlparser
依赖。
2 Redis
2.1 安装
在 Windows 上安装 Redis 时,可选择安装路径,可将 Redis 安装目录添加到系统 PATH 环境变量中。同时可设置 Redis 运行端口(默认为 6379),选择是否在 Windows 防火墙中添加例外,以及是否设置内存限制等。安装完成后,可通过redis-cli
进行测试,如输入ping
命令,若返回PONG
则表示安装成功。
2.2 Redis 是什么
Redis 是一个开源(BSD 许可)的内存存储数据结构服务器,可用作数据库、高速缓存和消息队列代理。它支持多种数据类型,如字符串、哈希表、列表、集合、有序集合、位图、hyperloglogs 等。Redis 内置复制、Lua 脚本、LRU 收回、事务以及不同级别磁盘持久化功能,通过 Redis Sentinel 提供高可用,通过 Redis Cluster 提供自动分区。
2.3 Redis hello
Redis 安装目录下包含多个文件,如dump.rdb
(RDB 文件)、redis.windows.conf
(CONF 文件)等。
2.4 Redis 的存储类型
Redis 支持字符串、哈希表、列表、集合、有序集合、位图、hyperloglogs 等数据类型。
2.4.1 内置命令
Redis Expire
命令用于设置key
的过期时间,格式为expire key value
。
2.4.2 字符串
SET
命令用于设置字符串类型的key - value
对,格式为SET KEY_NAME VALUE
。例如,创建天气key
(weather
),并设置 30 秒之后过期。
2.5 Spring Boot 整合 Redis
2.5.1 下载
在项目中添加 Spring Boot 与 Redis 整合的依赖:
xml
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2.5.2 配置
在配置文件中添加 Redis 相关配置:
yaml
spring:redis:port: 6379host: localhostdatabase: 0
2.5.3 编码
配置完成后,即可在项目中使用 Redis 进行数据存储和读取等操作。