-
使用SpringBoot不需要再进行框架的繁琐的配置,不是新技术,是对前面学的框架的整合,约定大于配置,选配好到底要创建什么项目,SpringBoot自己帮我们添加好配置
-
在前后端单独开发的业务中,为了规范化数据,约定了前后端交互的规则是json数据,后台拿取到前端传过来的参数时需要使用@RequestBody注解进行解析json数据,如果这个数据是个类对象,会直接通过反射机制转换为该类对象,后端返回给前端的数据也是json数据格式,前端也会进行解析,这个json数据有规范化的数据格式,每个项目可以对数据格式进行定制化,虽然在开发阶段前后端不进行数据的交互,但是也要通过相应的调试工具对代码的正确性进行调试,借助一些插件来实现
-
SpringBoot自己带有体量小,运行效率高的tomcat,直接点击运行就能在tomcat服务器上运行
IDEA中创建SpringBoot项目
- 在Idea中创建SpringBoot项目选择jar版本的时候,选择8,对应的就是java1.8版本,如果选择maven pom不会帮我们创建文件夹,需要自己手动创建,maven project就会自动帮我们创建
- 在pom.xml文件中添加mysql数据库的驱动
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.29</version>
</dependency>
- Mybatis相关配置属性
application.properties和application.yml是一样的,只保留一个就行,但是这俩配置文件也是可以并存的,最好是只留一个,两个配置文件的使用是差不多的,只是文件中的数据格式不一样,yml文件更推荐一些,更简单高效,父属性不用重复写
server:
port: 8888
spring:
datasource:
url: jdbc:mysql://localhost:3306/iss-hsu?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: lcf2773743863a
mybatis:
mapper-locations: classpath:/mapper/*Dao.xml
type-aliases-package: com.ysu.domain
- 容器启动之初,开启扫描器对dao件夹中的接口进行扫描,创建相应的实现类@MapperScan(“com.ysu.dao”)
- 只有控制层的代码需要重写,后面的model、service、dao直接沿用之前自己搭建的SSM的代码
重写之前的登录控制层代码:
package com.ysu.api.controller;
import com.ysu.api.constant.CResultType;
import com.ysu.api.domain.Result;
import com.ysu.api.domain.User;
import com.ysu.api.model.ILoginModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController //等同于Controller+ResponseBody
@RequestMapping("/api")
public class LoginController
{
@Autowired
private ILoginModel model;
@RequestMapping("/login")
public Result<Boolean> doLogin(@RequestBody User user)
{
boolean loginState =model.verifyLogin(user);
int resultType= CResultType.FAIL;
String msg="登录失败";
if(loginState)
{
resultType=CResultType.SUCCESS;
msg="登录成功";
}
return new Result<Boolean>(resultType,msg,loginState);
}
}
重写注册控制层的代码:
package com.ysu.api.controller;
import com.ysu.api.constant.CResultType;
import com.ysu.api.domain.Result;
import com.ysu.api.domain.User;
import com.ysu.api.model.IRegisterModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
@RestController //这个就可以返回页面或者数据
@RequestMapping("/api")
public class RegisterController
{
//注入model依赖
@Autowired
private IRegisterModel model;
@RequestMapping("/register")
public Result<Boolean> doRegister(@RequestBody User newUser)
{
boolean registerState = model.verifyRegister(newUser);
int resultType= CResultType.FAIL;
String msg="注册失败";
if(registerState)
{
resultType=CResultType.SUCCESS;
msg="注册成功";
}
return new Result<Boolean>(resultType,msg,registerState);
}
@RequestMapping("/doVerifySameName")
@ResponseBody //声明当前接口可以返回数据
//这块儿形参接收的只能是json数据,哪怕是想直接传一个字符串也需要以json数据的形式传过来,
//可以用Map来进行接收,就不需要单独写实体类了
private Result<Boolean> doSameName(@RequestBody Map<String, String> data)
{
Map<String,String> map =data;
boolean registerState = "admin".equals(data.get("username"));
int resultType= CResultType.SUCCESS;
String msg="用户不存在";
if(registerState)
{
resultType=CResultType.FAIL;
msg="用户已存在";
}
return new Result<Boolean>(resultType,msg,registerState);
}
}
注意:@RequestBody User newUser进行数据的反射时,是与实体User类中的setter方法进行反射,要保证setter方法正确且存在