SpringBoot 整合MyBatis

一、基于注解

  • 导入依赖
    ```xml org.mybatis.spring.boot mybatis-spring-boot-starter 2.1.0

mysql mysql-connector-java

  1. - 配置文件 application.yml / application.properties
  2. ```yaml
  3. # datasource
  4. spring:
  5. datasource:
  6. url: jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC
  7. username: root
  8. password: 123456
  9. 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 {

  1. @Select("select * from user")
  2. public List<User> findAll();

}

  1. <a name="88baa094"></a>
  2. ### 二、基于配置文件
  3. - 导入依赖(同注解方式)
  4. - 配置文件 application.yml / application.properties
  5. - springboot
  6. - <br />
  7. ```yaml
  8. # 数据库连接
  9. spring:
  10. datasource:
  11. url: jdbc:mysql://192.168.31.81:3306/mytanhua?useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true&useSSL=false
  12. #url: jdbc://192.168.31.81:3306/mytanhua?serverTimezone=UTC
  13. driver-class-name: com.mysql.jdbc.Driver
  14. username: root
  15. password: root
  16. # MyBatis 使用注解开发就不需要mybatis的配置了
  17. mybatis:
  18. mapper-locations: classpath:mapper/*Mapper.xml #mapper的映射文件路径
  19. type-aliases-package: com.test.pojo #实体类的别名映射
  20. # config-location: 用于指定核心配置文件
  • mapper映射
    1. <?xml version="1.0" encoding="UTF-8" ?>
    2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    3. <mapper namespace="com.test.mapper.UserXmlMapper">
    4. <select id="findAllList" resultType="User">
    5. SELECT * from tb_user
    6. </select>
    7. </mapper>
  • 编写mapper

    1. @Mapper
    2. @Repository
    3. public interface UserXmlMapper {
    4. public List<User> findAll();
    5. }

SpringBoot 整合Junit

  • 依赖

    1. <dependency>
    2. <groupId>org.springframework.boot</groupId>
    3. <artifactId>spring-boot-starter-test</artifactId>
    4. <scope>test</scope>
    5. </dependency>
  • 在Test目录下创建测试类

    • 如果测试类的包名与SpringBoot启动类的包名一致,则@SpringBootTest注解不用指定启动类的字节码文件

      1. @SpringBootTest
    • 如果测试类的包名和SpringBoot启动类的包名不一致,则@SpringBootTest注解需要指定启动类的字节码文件

      1. @SpringBootTest(classes = SpringbootTestApplication.class)
      1. // 这个位置要注意,如果当前测试类所在的包,与入口文件所在的包一致,那么@SpringBootTest不需要带参,如下
      2. @SpringBootTest
      3. // 如果包不一致,则需要带参,如下
      4. // @SpringBootTest(classes = SpringbootTestApplication.class)
      5. public class UserServiceTest {
      6. @Autowired
      7. private UserService userService;
      8. @Test
      9. public void testAdd() {
      10. userService.add();
      11. }
      12. }

SpringBoot 整合Redis

  • 依赖

    1. <dependency>
    2. <groupId>org.springframework.boot</groupId>
    3. <artifactId>spring-boot-starter-data-redis</artifactId>
    4. </dependency>
  • 配置文件 application.yml / application.properties

    1. spring:
    2. redis:
    3. host: 127.0.0.1 # redis的主机ip
    4. port: 6379
    5. # 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); }

  1. ---
  2. <a name="0aa57b46"></a>
  3. ## SpringBoot配置
  4. - 配置文件分类
  5. - application.**properties**
  6. - application.**yml** 大小写敏感
  7. - application.**yaml**
  8. - 优先级**properties** > **yml** > **yaml**
  9. - 作用<br />用于指定端口、数据库地址等
  10. - 内容
  11. - 程序自动识别内容 server.port: 8080
  12. - 自定义内容 name: 123
  13. - yml数据格式
  14. - 参数注入
  15. - <br />
  16. - 读取配置文件内容
  17. - [@Value ](/Value ) :获取单个的值比较方便
  18. ```java
  19. @Value(${person.name}) // person.name必须与配置文件中的key一致
  20. private String name;
  21. //数组的引入方式
  22. @Value(${address[0]})
  23. private String address;
  • Environment
    ```java @Autowired private Environment env;

env.getProperty(key);

  1. - @ConfigurationProperties
  2. ```java
  3. @ConfigurationProperties(prefix = "person") //prefix 用于指定配置文件中的配置的前缀
  4. @Component //注册Spring Bean
  5. public class Person {
  6. private String name;
  7. private int age;
  8. private String[] address;
  9. public String getName() {
  10. return name;
  11. }
  12. public void setName(String name) {
  13. this.name = name;
  14. }
  15. public int getAge() {
  16. return age;
  17. }
  18. public void setAge(int age) {
  19. this.age = age;
  20. }
  21. public String[] getAddress() {
  22. return address;
  23. }
  24. public void setAddress(String[] address) {
  25. this.address = address;
  26. }
  27. }
  • 多环境配置(prefix

    • 方法一:在配置文件中指定

      1. spring.profiles.active=div/pro/test
    • yml多文档方式
      ```yml


server: port: 8080 spring:

  1. profiles: dev

server: port: 8081 spring:

  1. 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
    • 命令行参数
      • java –jar xxx.jar --spring.profiles.active=dev (线上部署时常用)
  • 外部配置文件
    • java -jar xx.jar --server.port=8082 (上线时,临时修改端口用的,其他参数涉及不多)
    • 同级外部配置文件 application.yml(线上遇到问题,临时调整系统性能参数用的)