SpringBoot-数据访问之MyBatis与Redis

MyBatis导入

XML 复制代码
<dependency>
	<groupId>org.mybatis.spring.boot</groupId>
	<artifactId>mybatis-spring-boot-starter</artifactId>
	<version>2.1.4</version>
</dependency>

MyBatis的自动配置

  1. 绑定配置文件 prefix = "mybatis"
  1. SqlSessionFactory
  1. SqlSession
  • 自动配置了 SqlSessionTemplate 组合了SqlSession
  1. AutoConfiguredMapperScannerRegistrar
  • @Import(AutoConfiguredMapperScannerRegistrar.class)
  • Mapper: 只要操作MyBatis的接口使用了 @Mapper 就会被自动扫描进来

MyBatis配置文件

  • config-location的所有全局配置文件 和 configuration配置 只可选其一
bash 复制代码
# 配置mybatis规则
mybatis:

# 配置mybatis的config.xml路径
#  config-location: classpath:mybatis/mybatis-config.xml

# 配置mybatis的mapper.xml路径
  mapper-locations: classpath:mybatis/mapper/*.xml
 
# 使用配置文件代替config.xml
  configuration:
    map-underscore-to-camel-case: true    #开启驼峰命名法

注解模式

  1. 只需要写mapper接口,不要写mapper.xml,使用注解写SQL语句
  • 省略@Mapper注解,启动类上标注@MapperScan("mapper包路径")
java 复制代码
@Mapper
public interface CityMapper {

    @Select("select * from city where id=#{id}")
    public City getById(Long id);

    public void insert(City city);

}
  1. 自增主键例子
  • xml写法
XML 复制代码
<!-- 
	useGeneratedKeys: 是否使用自增主键, 
	keyProperty:插入后自增主键返回时绑定的实体类属性名
-->
<insert id="addUser" useGeneratedKeys="true" keyProperty="id">
	insert into `user`(...)values(...)
</insert>
  • 注解写法
java 复制代码
@Insert(" insert ...")
@Options(useGeneratedKeys = true, keyProperty = "id")
int addUser();

MyBatis-Plus自动配置

  1. 导入依赖
XML 复制代码
<dependency>
	<groupId>com.baomidou</groupId>
	<artifactId>mybatis-plus-boot-starter</artifactId>
	<version>3.4.1</version>
</dependency>
  1. MybatisPlusAutoConfiguration 自动配置类
  • 配置文件绑定:mybatis-plus: xxx
  1. SqlSessionFactory 自动配置好。底层是容器中默认的数据源
  1. mapperLocations 自动配置好的
  • 默认值:classpath*:/mapper/**/*.xml
  • 类路径的mapper文件夹下,任意路径的所有xml都是sql映射文件
  • 建议以后sql映射文件,放在此路径下
  1. SqlSessionTemplate 自动配置好了
  1. @Mapper 标注的接口也会被自动扫描
  • 建议直接 @MapperScan("mapper包路径") 批量扫描就行

Redis自动配置

  1. 导入依赖
XML 复制代码
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
  1. RedisAutoConfiguration 自动配置类
  • 配置文件配置 spring.redis.xxx
  • 默认连接工厂是LettuceConnectionConfiguration,也可以切换JedisConnectionConfiguration
  1. template操作redis
  • 自动注入了RedisTemplate<Object, Object>:k:v都是Object
  • 自动注入了StringRedisTemplate:k:v都是String
  1. 测试连接
  • 配置文件

    spring:
    redis:
    host: 主机名
    port: 6379
    password: user:password

  • 测试代码

java 复制代码
@Test
void testRedis(){
	ValueOperations<String, String> operations = redisTemplate.opsForValue();
	operations.set("hello","world");
	String hello = operations.get("hello");
	System.out.println(hello);
}
  1. 切换至jedis连接
  • 导入jedis
XML 复制代码
<dependency>
	<groupId>redis.clients</groupId>
	<artifactId>jedis</artifactId>
</dependency>
  • 配置文件 client-type

    spring:
    redis:
    host:
    port: 6379
    password:
    client-type: jedis

相关推荐
Mr_Xuhhh7 小时前
第一部分:类和对象(中)— 取地址运算符重载
java·开发语言
Selegant7 小时前
告别传统部署:用 GraalVM Native Image 构建秒级启动的 Java 微服务
java·开发语言·微服务·云原生·架构
__万波__7 小时前
二十三种设计模式(十三)--模板方法模式
java·设计模式·模板方法模式
动亦定7 小时前
微服务中如何保证数据一致性?
java·数据库·微服务·架构
王桑.8 小时前
Spring中IoC的底层原理
java·后端·spring
Liii4038 小时前
Java集合详细讲解
java·开发语言
Han.miracle8 小时前
Spring Boot 项目从入门到排障:核心结构、依赖管理与启动全解析
java·jar
麦麦鸡腿堡8 小时前
Java_通过反射获取类的结构信息
java·开发语言
还是鼠鼠8 小时前
SQL语句执行很慢,如何分析呢?
java·数据库·mysql·面试