SpringBoot 整合MyBatis
一、基于注解
- 导入依赖
```xmlorg.mybatis.spring.boot mybatis-spring-boot-starter 2.1.0
- 配置文件 application.yml / application.properties
```yaml
# datasource
spring:
datasource:
url: jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
- 编写mapper
```java package com.itheima.springbootmybatis.mapper;
import com.itheima.springbootmybatis.domain.User; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; import org.springframework.stereotype.Repository;
@Mapper @Repository public interface UserMapper {
@Select("select * from user")
public List<User> findAll();
}
<a name="88baa094"></a>
### 二、基于配置文件
- 导入依赖(同注解方式)
- 配置文件 application.yml / application.properties
- springboot
- <br />
```yaml
# 数据库连接
spring:
datasource:
url: jdbc:mysql://192.168.31.81:3306/mytanhua?useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true&useSSL=false
#url: jdbc://192.168.31.81:3306/mytanhua?serverTimezone=UTC
driver-class-name: com.mysql.jdbc.Driver
username: root
password: root
# MyBatis 使用注解开发就不需要mybatis的配置了
mybatis:
mapper-locations: classpath:mapper/*Mapper.xml #mapper的映射文件路径
type-aliases-package: com.test.pojo #实体类的别名映射
# config-location: 用于指定核心配置文件
- mapper映射
<?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.test.mapper.UserXmlMapper">
<select id="findAllList" resultType="User">
SELECT * from tb_user
</select>
</mapper>
编写mapper
@Mapper
@Repository
public interface UserXmlMapper {
public List<User> findAll();
}
SpringBoot 整合Junit
依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
在Test目录下创建测试类
如果测试类的包名与SpringBoot启动类的包名一致,则@SpringBootTest注解不用指定启动类的字节码文件
@SpringBootTest
如果测试类的包名和SpringBoot启动类的包名不一致,则@SpringBootTest注解需要指定启动类的字节码文件
@SpringBootTest(classes = SpringbootTestApplication.class)
// 这个位置要注意,如果当前测试类所在的包,与入口文件所在的包一致,那么@SpringBootTest不需要带参,如下
@SpringBootTest
// 如果包不一致,则需要带参,如下
// @SpringBootTest(classes = SpringbootTestApplication.class)
public class UserServiceTest {
@Autowired
private UserService userService;
@Test
public void testAdd() {
userService.add();
}
}
SpringBoot 整合Redis
依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
配置文件 application.yml / application.properties
spring:
redis:
host: 127.0.0.1 # redis的主机ip
port: 6379
# password: 默认不需要配置,如果redis服务器设置了密码,这里要配置
使用RedisTemplate
```java @Autowired private RedisTemplate redisTemplate;
@Test public void testSet() { //存入数据 redisTemplate.boundValueOps(“name”).set(“zhangsan”); }
@Test public void testGet() { //获取数据 Object name = redisTemplate.boundValueOps(“name”).get(); System.out.println(name); }
---
<a name="0aa57b46"></a>
## SpringBoot配置
- 配置文件分类
- application.**properties**
- application.**yml** 大小写敏感
- application.**yaml**
- 优先级**properties** > **yml** > **yaml**
- 作用<br />用于指定端口、数据库地址等
- 内容
- 程序自动识别内容 server.port: 8080
- 自定义内容 name: 123
- yml数据格式
- 参数注入
- <br />
- 读取配置文件内容
- [@Value ](/Value ) :获取单个的值比较方便
```java
@Value(${person.name}) // person.name必须与配置文件中的key一致
private String name;
//数组的引入方式
@Value(${address[0]})
private String address;
- Environment
```java @Autowired private Environment env;
env.getProperty(key);
- @ConfigurationProperties
```java
@ConfigurationProperties(prefix = "person") //prefix 用于指定配置文件中的配置的前缀
@Component //注册Spring Bean
public class Person {
private String name;
private int age;
private String[] address;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String[] getAddress() {
return address;
}
public void setAddress(String[] address) {
this.address = address;
}
}
多环境配置(prefix)
方法一:在配置文件中指定
spring.profiles.active=div/pro/test
yml多文档方式
```yml
server: port: 8080 spring:
profiles: dev
server: port: 8081 spring:
profiles: pro
server: port: 8082 spring: profiles: test
指定当前使用 application-dev.yml 文件
spring: profiles: active: dev ```
- 多环境激活方式
- 配置文件方式(如上述)
- 虚拟机参数:(IDEA ——> Edit Configuration ——> Program Arguments)
- 在VM options 指定:
-Dspring.profiles.active=dev
- 在VM options 指定:
- 命令行参数
java –jar xxx.jar --spring.profiles.active=dev
(线上部署时常用)
- 外部配置文件
java -jar xx.jar --server.port=8082
(上线时,临时修改端口用的,其他参数涉及不多)- 同级外部配置文件
application.yml
(线上遇到问题,临时调整系统性能参数用的)