文章目录
前言
Springboot2学习应用:
记录Springboot的学习过程
正文
一、Springboot是什么?
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
二、学习内容
1. IDEA创建Springboot项目
1.1 配置maven仓库地址为本地仓库
1.2 开发环境热部署
代码修改后自动重启服务
1.2.1 pom.xml中添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
1.2.2 application.properties中配置devtools
#热部署生效
spring.devtools.restart.enabled=true
#设置重启目录
spring.devtools.restart.additional-paths=src/main/java
#设置classpath目录下的WEB-INF文件夹内容修改不重启
spring.devtools.restart.exclude=static/**
1.2.3 修改IDEA settings
IDEA 2021之后版本第二步
2. 重要注解的使用
2.1 Controller(控制器)
前后端分离项目使用 @RestController
2.1.1 @RestController的用法
2.2 路由映射
3.文件上传 && 拦截器
3.1 Springboot实现文件上传
3.2 拦截器
3.2.1 介绍
3.2.2 定义
3.2.3 注册
4. RESTful
4.1 介绍
4.2 特点
4.3 API
4.4 Spring实现RESTful API
4.5 Swagger的使用
4.5.1 介绍
4.5.2 使用&配置
4.5.3 接口测试
4.5.4 常用注解
5. MybatisPlus
5.1 ORM介绍
5.2 MybatisPlus 介绍
5.3 使用配置
5.3.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>
<version>8.0.31</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.20</version>
</dependency>
5.3.2 配置数据库相关信息
//配置数据库相关信息
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis?useSSL=false
spring.datasource.username=root
spring.datasource.password=1591103935
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
5.3.3 启动类中添加@MapperScan注解
5.4 MyBatis的常用注解
5.5 增删改查小案例
项目目录
简单的user表的增删改查的操作
(1)编写实体类User.java
记得写setter,getter,tostring
public class User {
private int id;
private String username;
private String password;
private String birthday;
}
(2)编写UserMapper接口,加入以下增删改查方法
@Mapper
public interface UserMapper {
@Insert("insert into user values(#{id},#{username},#{password},#
{birthday})")
int add(User user);
@Update("update user set username=#{username},password=#
{password},birthday=#{birthday} where id=#{id}")
int update(User user);
@Delete("delete from user where id=#{id}")
int delete(int id);
@Select("select * from user where id=#{id}")
User findById(int id);
@Select("select * from user")
List<User> getAll();
}
(3)控制器实现
创建UserController控制器,在控制器中注入UserMapper实例,注意!一定要添加 @MapperScan注解,否则无法注入mapper实例。
public class UserController {
@Autowired //自动注入,Spring会自动实例化UserMapper,并注入此属性中(依赖注入)
private UserMapper userMapper;
}
(4)添加控制器方法,测试增删改查操作。
// 添加用户:localhost:8080/add?id=100&username=zhangsan&password=123&birthday=2020-11-12
@GetMapping("add")
public String add(User user){
int i = userMapper.add(user);
System.out.println(user);
if(i > 0){
return "添加成功";
}else{
return "添加失败";
}
}
// 更新用户:localhost:8080/update?id=100&username=lisi&password=123&birthday=2020-11-12
@GetMapping("update")
public String update(User user){
int i = userMapper.update(user);
if(i > 0){
return "更新成功";
}else{
return "更新失败";
}
}
// 删除用户:localhost:8080/del?id=100
@GetMapping("del")
public String del(int id){
int i = userMapper.delete(id);
if(i > 0){
return "删除成功";
}else{
return "删除失败";
}
}
// 查询单个用户:localhost:8080/find?id=1
@GetMapping("find")
public User findById(int id){
User user = userMapper.findById(id);
return user;
}
// 查询所有用户:localhost:8080/findAll
@GetMapping("findAll")
public List findAll(){
return userMapper.getAll();
}
5.6 MyBatis的注解实现复杂映射开发
5.6.1 一对一查询模型
(1)创建Order和User实体
切记要添加setter,getter,tostring()
public class Order {
private int id;
private Date ordertime;
private double total;
//代表当前订单从属于哪一个客户
private User user;
}
public class User {
private int id;
private String username;
private String password;
private String birthday;
}
(2) 使用注解配置OrderMapper,UserMapper
@Mapper
public interface OrderMapper {
@Select("select * from orders")
@Results({
@Result(column = "id",property = "id"),
@Result(column = "ordertime",property = "ordertime"),
@Result(column = "total",property = "total"),
@Result(column = "uid",property = "user",javaType = User.class,
one = @One(select = "com.xx.mapper.UserMapper.findById")
),
})
List<Order> findAll();
}
public interface UserMapper {
@Select("select * from user where id=#{id}")
User findById(int id);
}
(3)创建OrderController测试
@RestController
public class OrderController {
@Autowired
private OrderMapper orderMapper;
@GetMapping("order")
public List<Order> find(){
return orderMapper.findAll();
}
}
5.6.2 一对多查询模型
(1)修改User,order实体
记得添加新增属性的setter,gettter,tostring
public class Order {
private int id;
private String ordertime;
private double total;
//代表当前订单从属于哪一个客户
private User user;
}
public class User {
private int id;
private String username;
private String password;
private String birthday;
//代表当前用户具备哪些订单
private List<Order> orders;
}
(2)使用注解配置Mapper
public interface UserMapper {
@Select("select * from user")
@Results({
@Result(column = "id",property = "id"),
@Result(column = "username",property = "username"),
@Result(column = "password",property = "password"),
@Result(column = "id",property = "orders",javaType = List.class,
many=@Many(select = "com.xx.mapper.OrderMapper.findByUid")
)
})
List<User> findAllUserAndOrder();
}
public interface OrderMapper {
@Select("select * from orders where uid=#{uid}")
List<Order> findByUid(int uid);
}
(3)在UserController中测试
// 查询所有用户:localhost:8080/findAll
@GetMapping("findAll")
public List findAll(){
return userMapper.findAllUserAndOrder();
}
6.Vue
6.1 Vue组件化开发
6.1.1 NPM
6.1.2 Vue CLI使用
(1)安装
在要创建项目的文件夹下打开CMD输入 npm install -g @vue/cli
(2)创建项目
vue create xxx(项目名称)
7.Axios
7.1 简介
7.2 跨域问题
以上为创建一个配置类实现全局配置,也可以在控制器中单独加入注解@Configration可解决该控制器下的跨域问题
7.3 与Vue整合
在main.js中配置
8. VueRouter
9. Vuex
9.1 State
总结
持续学习中…