SpringBoot SSMP整合

整合JUnit

SpringBoot中已经默认整合了JUnit

手动整合JUnit:

1.导入测试对应的starter

2.测试类使用@SpringBootTest修饰

3.使用自动装配的形式添加要测试的对象

注意事项:

由于测试类中需要用到Spirng容器,因此它需要找到配置类

而引导类中的注解是有配置类的路径的,因此需要找到引导类

默认情况下,测试类会从当前包和父包中寻找,也就是说:

如果测试类存在于引导类所在包或子包中,则不需要指定引导类

如果不在,则需要在注解中通过classes属性来指定引导类

整合MyBatis

1.创建模块时需要勾选对应的功能

MyBatis需要两个:

MyBatis Framework

MySQL Driver

2.在yml配置文件中配置数据源的相关信息

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

3.创建对应的Mpper即可运行

注:如果要使用注解开发,则需要在Mapper类上使用@Mapper注解,否则无法自动装配

整合MyBatisPlus

由于SpringBoot并没有收录MyBatisPlus,因此无法以勾选的形式导入对应依赖

当引入MyBatisPlus依赖时,MyBatis Framework依赖就不需要导入了,也就是勾选时只需要勾选MySQL Driver

步骤一:

需要在pom.xml文件中导入以下依赖

且由于该依赖中包含SpringBoot的起步依赖,因此可以删除spring-boot-starter依赖

<!-- MyBatisPlus依赖,且该依赖中包含springboot的起步依赖spring-boot-starter-->
<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-boot-starter</artifactId>
  <version>3.4.3</version>
</dependency>


<!-- 下面的依赖可以删除 -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter</artifactId>
</dependency>

步骤二:

在yml配置文件中配置数据源的相关信息

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

步骤三:

创建对应Mapper:

将Mapper接口继承BaseMapper接口,并将泛型中填入对应的实体类,就可以直接使用一些单表的方法(需要Mapper注解)

注:MyBatisPlus配置中,表名和数据库的表名可能无法对应,在MyBatisPlus课程中有讲解

mybatis-plus:
  global-config:
    db-config:
      table-prefix: tbl_ #设置表名通用前缀
      id-type: auto #设置主键id字段的生成策略为参照数据库设定的策略,当前数据库设置id生成策略为自增

查看MyBatisPlus运行日志

可以通过配置的的方式开启MyBatisPlus的运行日志,其中有具体运行的sql语句

mybatis-plus:
  global-config:
    db-config:
      table-prefix: tbl_
      id-type: auto
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

分页功能

在MyBatisPlus中,要使用分页功能,需要以下步骤:
 

1.定义MyBatisPlus拦截器并将其设置为Spring管控的bean

@Configuration
public class MPConfig {

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        //定义Mp拦截器
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        //添加具体的拦截器
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        return interceptor;
    }
}

2.使用分页功能

IPage<Book> page = new Page<>(1, 5);//查询第几页,一页有几条数据
bookMapper.selectPage(page,null);
System.out.println(page.getCurrent());		//当前页码值
System.out.println(page.getSize());			//每页显示数
System.out.println(page.getTotal());		//数据总量
System.out.println(page.getPages());		//总页数
System.out.println(page.getRecords());		//查询出的数据

条件查询功能

模糊匹配,例:

@Test
void contextLoads() {
    QueryWrapper<Book> qw =new QueryWrapper<>();
    qw.like("name","Spring");
    System.out.println(bookMapper.selectList(qw));
}

上例中:

QueryWrapper对象用于封装查询的条件,该对象可以动态使用API调用的方法添加条件,最终转化成对应的SQL语句。

第二局句就是在添加条件,"name"是字段名,"Spring"是模糊匹配的内容

之后在调用selectList时,将QueryWrapper对象入参即可

上述情况中,查询的字段名如果手写可能会出错,可以将QueryWrapper对象改为LambdaQueryWrapper对象,并配合Lambda表达式:

@Test
void test(){
    String name = "1";
    LambdaQueryWrapper<Book> lqw = new LambdaQueryWrapper<>();
    lqw.like(Book::getName,name);
    System.out.println(bookMapper.selectList(lqw));
}

且传入的模糊匹配的内容有可能是null,这种情况下,除了手动if判断,也可以使用以下方法:

@Test
void test2(){
    String name = null;
    LambdaQueryWrapper<Book> lqw = new LambdaQueryWrapper<>();
    lqw.like(name != null,Book::getName,name);
    System.out.println(bookMapper.selectList(lqw));
}

在添加查询条件时,第一个参数为一个boolean类型的参数,可以使用条件判断

业务层(Service)快速开发

MyBatisPlus还提供了Service层,也就是业务层的快速开发

接口:

public interface BookService extends IService<Book> {
    //自己编写的方法
}

接口的实现类:

@Service
public class BookServiceImpl extends ServiceImpl<BookMapper, Book> implements BookService {
}

继承时需要两个泛型,一个是数据层的接口,一个是实体类

这两步能够提供很多基础的增删改查操作

增:save开头,返回值一般为boolean

删:remove开头,返回值一般为boolean

改:update开头,返回值一般为boolean

查:get开头

查询所有的方法名是list

提供的方法如果无法满足需求,可以直接定义自己的方法,但是方法名尽量不要和提供的方法名重合

可以在接口中的方法上使用@Override注解,如果报错就代表方法名没有重合

整合Druid

整合Druid也需要手动导入依赖

步骤一:

导入Druid对应的依赖,如果使用了MyBatisPlus,也需要导入它的依赖

<!-- MyBatisPlus依赖,且该依赖中包含springboot的起步依赖spring-boot-starter-->
<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-boot-starter</artifactId>
  <version>3.4.3</version>
</dependency>

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

步骤二:修改配置

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值