整合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