SpringBoot基本使用

127 阅读1分钟

pom文件

dependencyManagement:依赖版本管理(依赖冲突)

starter:依赖配置管理

springboot配置属性查询:docs.spring.io/springboot/…

配置文件中重叠配置优先级(配置不重叠都生效):properties>yml>yaml

将配置文件内容读取为对象:

image.png

测试

当测试类不在主启动类包及子包下时找不到配置类需要指定启动类:

@SpringBootTest(classes = Application.class)

SpringBoot整合Mybatis

1.添加依赖

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.2.0</version>
</dependency>

2.配置数据库连接池

datasource:
  driver: com.mysql.cj.jdbc.Driver
  url: jdbc:mysql://localhost:3306/db1?serverTimezone=UTC
  username: root
  password: 1234

3.mapper层

mapper接口加上@mapper;或者主启动类加上 @MapperScan("com.example.mapper")

4.xml文件

注:当xml文件和mapper目录不同时:

4.1.yml文件配置:

mybatis:
  mapper-locations: classpath:mapper/StuMapper.xml

4.2.pom文件配置:

  <!--资源路径-->
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.xml</include>
            </includes>
        </resource>
    </resources>
</build>

4.3配置mapper对应xml文件:

<?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.example.mapper.StuMapper">
    <select id="selectById" resultType="com.example.entity.Stu">
        SELECT * FROM stu WHERE id = #{id}
    </select>

</mapper>

springboot整合druid

1.依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.6</version>
</dependency>

2.配置

spring:
  datasource:
    druid:
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://localhost:3306/db1?serverTimezone=UTC
      username: root
      password: 1234

springboot整合mybatis_plus

1.依赖

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.2</version>
</dependency>

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.6</version>
</dependency>

2.yml配置

spring:
  datasource:
    druid:
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC
      username: root
      password: root
      
mybatis-plus:
  global-config:
    db-config:
      table-prefix: tbl_            # 表名前缀
      id-type: auto                 # 主键自增

3.开启mybatis日志:

mybatis-plus:
  configuration:                   ## 开启mybatis日志
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

4.mapper层开发

@Mapper
public interface StuMapper extends BaseMapper<Stu> {
}

5.分页

配置分页拦截器:

@Configuration
public class MPConfig {

   @Bean
   public MybatisPlusInterceptor getMybatisPlusInterceptor() {
       MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
       mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
       return mybatisPlusInterceptor;
   }
}

分页查询:

@Test
void test05() {
    IPage page = new Page(1, 5);
    stuMapper.selectPage(page, null);
    List stuList = page.getRecords();
    System.out.println(stuList);
}

6.条件查询:

@Test
void test06() {
    String nameLike = "zzz";
    IPage page = new Page(1, 5);
    LambdaQueryWrapper<Stu> lqw = new LambdaQueryWrapper<>();
    lqw.like(Strings.isNotEmpty(nameLike), Stu::getStuName, nameLike);
    stuMapper.selectPage(page, lqw);
    System.out.println(page.getRecords());
}

7.service层

public interface StuService extends IService<Stu> {
    Stu getById(Integer id);
}
@Service
public class StuServiceImpl extends ServiceImpl<StuMapper, Stu> implements StuService {

    @Autowired
    private StuMapper stuMapper;

    @Override
    public Stu getById(Integer id) {
        return stuMapper.selectById(id);
    }
}

异常统一处理

@RestControllerAdvice
public class GlobalExceptionHandler {
    private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class);

    /**
     异常统一处理
     @Parm e
     @return 
    */
    @ExceptionHandler(Exception.class)
    public Rsp<?> handleException(Exception e) {
        log.error(e.getMessage(),e);
        return Rsp.fail(e.getMessage());
    }
}