目录
解压项目后导入IDEA中
开发SpringBoot程序要继承spring-boot-starter-parent,在spring-boot-starter-parent中定义了若干个依赖管理,继承spring-boot-starter-parent模块可以避免多个依赖使用相同技术时不同版本造成的冲突,但是使用继承后就不能再继承其他的模块(java单继承),继承parent的形式也可以采用引入依赖的形式实现效果。
定义了当前项目使用的所有依赖坐标,导入依赖时只需要导入spring-boot-starter-mybatis,与mybatis相关的坐标都会通过starter自动导入
- @EnableAutoConfiguration: 启用SpringBoot自动装配机制
-
- @ComponenScan:启用包扫描功能
-
- @Configuration:定义为配置类
-
@SpringBootApplication 相当于以上三个注解的组合
单引号括起来的数据代表一个字符串,而双引号括起来的内容,需要转义的内容会被自动转义。
在配置文件中配置好,在其他文件中能够获取就是这个原理
SpringBoot项目一般自带Test测试
- <dependency>
- <groupId>org.springframework.bootgroupId>
- <artifactId>spring-boot-starter-testartifactId>
- <scope>testscope>
- dependency>
- @SpringBootTest
- class Stag3BootApplicationTests {
-
- @Test
- void contextLoads() {
- }
-
- }
指定测试方法的配置类
@SpringBootTest(classes = 引导类.class)
也可以不添加Mapper注解在引导类中进行指定mapper包
@MapperScan("com.example")
手动添加Mybatis-plus依赖
- <dependency>
- <groupId>com.baomidougroupId>
- <artifactId>mybatis-plus-boot-starterartifactId>
- <version>3.5.1version>
- dependency>
可以发现报错显示没有这个表,需要注意在使用MP技术时,如果数据库表名带前缀,MP会默认将前缀删除然后以 库名.表名 来匹配对应的操作,提供两种方法解决:
1、在数据库表对应的实体类添加 @TableName("表名") 指定实体类对应的数据库表
2、在配置类中对数据库所有的表名添加一个前缀就能使MP找到对应的表名
- mybatis-plus:
- global-config:
- db-config:
- table-prefix: tb_
- <dependency>
- <groupId>com.alibabagroupId>
- <artifactId>druid-spring-boot-starterartifactId>
- <version>1.2.11version>
- dependency>
整合基础操作省略
- @Configuration
- public class MPConfig {
-
- @Bean
- public MybatisPlusInterceptor mybatisPlusInterceptor(){
- //MyBatis拦截器
- MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
- //加入分页的拦截器
- mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
- return mybatisPlusInterceptor;
- }
- }
- @Test
- void testGetBy(){
- String name = "两万";
- //要声明泛型
- LambdaQueryWrapper
qw = new LambdaQueryWrapper(); -
- //防止入参 name为空 直接进行条件查询会报错
- //qw.like(name != null, Book::getName, name);
-
- //可以使用Strings工具类自带的方法 判断是否为空
- qw.like( StringUtils.isNotBlank(name), Book::getName, name);
-
- bookDao.selectList(qw);
- }
对于数据层的方法和返回值都可以写成数据库中操作的数据
但对于业务层的方法,最好将返回结果都定义成Result结果类进行封装,避免将数据层的数据直接发送给前端