目录
一、几种快速创建springboot工程的方法
1、通过idea创建(需要联网)
2、通过spring官网下载离线文件创建(spring.io)
3、阿里云创建(start.aliyun.com)
4、手动制作(需提前导入jar包)
5、隐藏无用的文件
二、springboot简介及快速开发解析
1、starter解析
2、引导类解析
3、内嵌tomcat解析
三、REST风格开发简介
1、书写方式
2、具体方法
3、RESTful快速开发
四、SpringBoot的相关配置(基础)
1、小技巧———复制模块
2、基础属性配置
五、整合第三方技术
1、整合Junit
2、整合MyBatis
3、整合MyBatis-Plus
4、整合Druid
六、ssmp小项目
1、lombok
2、mp的分页
3、mp的条件查询
4、使用mp写业务层代码
红框为要更改的地方
得到模块的压缩包,解压后再idea中导入即可
选择相应的服务
就是仿照前面的工程创建的,创建的模块比较清爽
创建一个maven工程pom导入
org.springframework.boot
spring-boot-starter-parent
2.6.3
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
主函数中
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class,args);
}
SpringBoot是由Pivotal团队提供的全新的框架,其目的是用来简化spring应用的初始搭建以及开发过程。优点如下
SpringBoot中常见的项目名称,定义里当前项目使用的所有依赖坐标,以达到减少依赖配置的目的
即application类,其中的SpringApplication.run(),其实就是加载SpringBoot自动生成的配置类。加载spring容器。
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-tomcat
通过
1、无请求参数
@RequstMapping(value = "/users" , method = RequestMethod.[GET,PUST,PUT,...])
@ResponseBody
public String a(){}
2、有请求参数
@RequstMapping(value = "/users/{id}" , method = RequestMethod.[GET,PUST,PUT,...])
@ResponseBody
public String a(@PathVariable Integer id){}
对上面的的代码进一步简化
//@GetMapping,@PostMapping,@PutMapping ..
@GetMapping("/{id}")
public String getById(@PathVariable Integer id){}
三种文件格式,.properties,.yaml,.yml(主流)。
调用的优先级为.properties>.yml>.yaml。
1、.properties文件修改
在resource目录下的application.properties文件中进行修改,如
server. port = 8081
修改服务器端口
logging .level.root=debug
设置日志的级别
采用键值对的格式,不能随意的进行配置,与你所使用的技术有关(如web等)
2、 .yeml和.yml文件修改
语法规则
示例
3、yml数据的读取
//读取单个数据
@Value("${属性名}")
private String a;
//读取数组数据
@Value("%{属性名[1]}")
private String a;
//读取有层级关系的数据
@Value("${一级属性名.二级属性名...}")
private String a;
baseDri: c:\win10
tempDri: ${baseDri}\temp如果用双引号括起来则转义字符有效
@Autowired
private Environment env;
System.out.println(env.getProperty("属性名"));
datasource:
class_name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql:''localhost:3306/ssm_db?serverTimezone=UTC
username: root
password: root
@Component //生成bean
//前缀(父属性名)
@ConfigurationProperties(prefix = "datasource")
public class MyDataSource{
private String class_name;//变量名需与上面一样
private String url;
private String username;
private String password;
}
注入就能使用
在创建一个boot模块时会自动导入Junit的相关starter
如果测试类不在引导类所在包或子包类,则spring就找不到Junit所对应的启动包得加上class
@SpringBootTest(classes = Springboot05JUnitApplication.class)
class JUnitApplication(){}
在创建boot工程时勾选mybatis和数据库驱动,自动导入相关的starter
在.yml中配置相关的属性就行,不用配置其他的东西
spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/xiangjiang?serverTimezone=UTC username: root password: 123456如果是自己写的xml映射,则要配置映射文件路径
mybatis: mapper-locations: classpath:dao/*.xml
MyBatis-Plus是国人基于自己的开发习惯开发的技术
可以像整合MyBatis一样创建工程(得是阿里云的网站)但版本较低。
也可以用坐标导入对应的starter(mvnrepository.com)
com.baomidou
mybati-plus-boot-starter
3.4.3
使用BaseMapper中定义了一些基本的sql操作如增删改查等
@Mapper public interface BookMapper extends BaseMapper{ } bookMapper.selectById(1);
yml的相关配置
mybatis-plus: global-config: db-config: id-type: auto #表示主键自动增长 configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #开启日志
用坐标导入对应的starter(mvnrepository.com)
com.alibaba druid-spring-boot-starter 1.2.8
在yml中配置如下
spring: datasource: druid: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/xiaojiang?serverTimezone=UTC username: root password: 123456
一个java类库,提供里一组注解,简化pojo实体类的开发
坐标
org.projectlombok lombok
一些注解
@Getter 生成get方法
@Setter 生成set方法
@Date 生成全部方法tostring等
需添加分页相关的拦截器,原理就是在sql的末尾拼接limit
@Configuration public class MPConfig { @Bean public MybatisPlusInterceptor mybatisPlusInterceptor(){ MybatisPlusInterceptor plusInterceptor = new MybatisPlusInterceptor(); //添加相应的拦截器 plusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor()); return plusInterceptor; } }
具体使用
void contextLoads() { IPage bookPage = new Page(1,1); bookMapper.selectPage(bookPage,null); }
几乎所有的查询都支持
String type = "计算机理论"; //使用lambda更方便 //或QueryWrapperqw = new QueryWrapper<>(); LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(type!=null,Book::getType,type); //相当于SELECT id,type,name,description FROM book WHERE type='计算机理论' bookMapper.selectList(lqw);
接口类
IService接口中定义了一些常用的业务层接口,需要一个实体类
public interface BookService extends IService{ }
实现类
ServiceImpl中定义了IService的实现类,需要dao的接口类和实体类
public class BookServiceImpl extends ServiceImplimplements BookService