MyBatis導入

  • GitHub:https://github.com/mybatis
<dependency>
	<groupId>org.mybatis.spring.boot</groupId>
	<artifactId>mybatis-spring-boot-starter</artifactId>
	<version>2.1.4</version>
</dependency>

MyBatis的自動配置

1. 綁定配置文件 prefix = "mybatis"

【SpringBoot實戰】數據訪問整合Mybatis和Redis - hjk_#java

2. SqlSessionFactory

【SpringBoot實戰】數據訪問整合Mybatis和Redis - hjk_配置文件_02

3. SqlSession

  • 自動配置了 SqlSessionTemplate 組合了SqlSession

【SpringBoot實戰】數據訪問整合Mybatis和Redis - hjk_#spring_03

4. AutoConfiguredMapperScannerRegistrar

  • @Import(AutoConfiguredMapperScannerRegistrar.class)
  • Mapper: 只要操作MyBatis的接口使用了 @Mapper就會被自動掃描進來

【SpringBoot實戰】數據訪問整合Mybatis和Redis - hjk_xml_04

MyBatis配置文件

  • config-location的所有全局配置文件 和 configuration配置 只可選其一
# 配置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包路徑") 
@Mapper
public interface CityMapper {

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

    public void insert(City city);

}

2. 自增主鍵例子

  • xml寫法 
<!-- 
	useGeneratedKeys: 是否使用自增主鍵, 
	keyProperty:插入後自增主鍵返回時綁定的實體類屬性名
-->
<insert id="addUser" useGeneratedKeys="true" keyProperty="id">
	insert into `user`(...)values(...)
</insert>
  • 註解寫法
@Insert(" insert ...")
@Options(useGeneratedKeys = true, keyProperty = "id")
int addUser();

MyBatis-Plus自動配置

1. 導入依賴

  • 官網地址:https://baomidou.com
<dependency>
	<groupId>com.baomidou</groupId>
	<artifactId>mybatis-plus-boot-starter</artifactId>
	<version>3.4.1</version>
</dependency>

2. MybatisPlusAutoConfiguration 自動配置類

  • 配置文件綁定:mybatis-plus: xxx

【SpringBoot實戰】數據訪問整合Mybatis和Redis - hjk_#spring boot_05

3. SqlSessionFactory 自動配置好。底層是容器中默認的數據源

【SpringBoot實戰】數據訪問整合Mybatis和Redis - hjk_xml_06

4. mapperLocations 自動配置好的

  • 默認值:classpath*:/mapper/**/*.xml
  • 類路徑的mapper文件夾下,任意路徑的所有xml都是sql映射文件
  • 建議以後sql映射文件,放在此路徑下

【SpringBoot實戰】數據訪問整合Mybatis和Redis - hjk_#spring boot_07

5. SqlSessionTemplate 自動配置好了

【SpringBoot實戰】數據訪問整合Mybatis和Redis - hjk_配置文件_08

6. @Mapper 標註的接口也會被自動掃描

  • 建議直接 @MapperScan("mapper包路徑") 批量掃描就行

【SpringBoot實戰】數據訪問整合Mybatis和Redis - hjk_配置文件_09

Redis自動配置

1. 導入依賴

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

2. RedisAutoConfiguration 自動配置類

  • 配置文件配置 spring.redis.xxx
  • 默認連接工廠是LettuceConnectionConfiguration,也可以切換JedisConnectionConfiguration

3. template操作redis

  • 自動注入了RedisTemplate<Object, Object>:k:v都是Object
  • 自動注入了StringRedisTemplate:k:v都是String

【SpringBoot實戰】數據訪問整合Mybatis和Redis - hjk_#java_10

4. 測試連接

  • 配置文件
spring:
	redis:
		host: 主機名
		port: 6379
		password: user:password
  • 測試代碼
@Test
void testRedis(){
	ValueOperations<String, String> operations = redisTemplate.opsForValue();
	operations.set("hello","world");
	String hello = operations.get("hello");
	System.out.println(hello);
}

5. 切換至jedis連接

  • 導入jedis
<dependency>
	<groupId>redis.clients</groupId>
	<artifactId>jedis</artifactId>
</dependency>
  • 配置文件 client-type
spring:
  redis:
      host: 
      port: 6379
      password: 
      client-type: jedis