基于Springboot的SSMP项目实战总结

1.新建一个空项目

2.在空项目中,新建Spring项目,勾选Spring web和MySQL Driver

        2.1 注意java版本要改为17,包名删除掉  .demo

基于Springboot的SSMP项目实战总结_第1张图片

        2.2 勾选Spring web和MySQL Driver

基于Springboot的SSMP项目实战总结_第2张图片

tips:将”压缩空的中间软件包“前的√去掉,这样视图好看一些

基于Springboot的SSMP项目实战总结_第3张图片

3.配置起步依赖

配置MybatisPlus、Druid、lombok依赖

        
            com.baomidou
            mybatis-plus-boot-starter
            3.5.1
        

        
            com.alibaba
            druid-spring-boot-starter
            1.2.8
        

        
            org.projectlombok
            lombok
        

如果没有符合的可以去Maven官网https://mvnrepository.com/寻找对应依赖

4.修改application.properties类型为yml

        4.1 直接重构文件名为yml,图标为绿叶子即成功

        4.2 配置端口 80,每一个冒号后面都要有空格,不然会报错

server:
  port: 80

        4.3 配置数据源

spring:
  dataSource:
    druid:
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://localhost:3306/表名?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&AutoReconnect=true&serverTimezone=Asia/Shanghai
      username: 自己数据库用户名
      password: 数据库密码

        4.4 配置框架技术相关配置

                table-prefix: 表名前缀

                id-type: 配合表中主键自增长使用

                log-impl: 开启MP运行日志

mybatis-plus:
  global-config:
    db-config:
      table-prefix: t_
      id-type: auto
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

tips: 在yml文件中写的时候,idea有时候会给提示,有时候不会给,估计是idea的问题,没有就只能自己打了,注意结构和冒号后的空格,以及大小写也要区分,不然一定会报错。

5.利用lombok开发实体类

        5.1新建domain.类名,类名自定义和对应数据库相关即可

        5.2 类上加注解@Data,自动配置所有的Getter&Setter等方法,快捷键Ctrl+F12查看

        5.3 加注解@TableName(value = "表名"),连接到对应表

        5.4 在类中定义表中所有的变量,均定义为private,变量名最好和表中字段相同,且表中字段名不要有下划线,不然测试时返回的永远是null

6.整合MybatisPlus,开发数据层接口,进行测试

        6.1 新建接口dao.实体类名Dao

        6.2 加入注解@Mapper

        6.3 整合MybatisPlus,类后继承BaseMapper,按Ctrl+F12,查看所有方法

public interface 类名Dao extends BaseMapper<类>
{

}

7.整合MybatisPlus开发业务层接口

        7.1 新建接口service.I实体类名Service

        7.2 整合MybatisPlus,继承IService<实体类名>,按Ctrl+F12,查看所有方法

        7.3 如果有其他需要的方法,在接口中定义即可,一般为Boolen型,因为业务层都是逻辑关系

public interface I实体类名Service extends IService<实体类名>
{


    Boolean 功能名(实体类名 对象名);
}

        7.4 业务层实现

                7.4.1 在service包下新建包impl,新建类:实体类名ServiceImpl

                7.4.2 加入注解@Service,扩展ServiceImpl和继承业务层接口

                7.4.3 注入数据层接口,加上注解@Autowired

                7.4.4 将业务层接口中定义的其他方法加入进来,return的是某值 > 0,表示操作成功

@Service
public class 实体类名ServiceImpl extends ServiceImpl<实体类名Dao, 实体类名> implements I实体类名Service
{
    @Autowired
    private 实体类名Dao stationDao;

    @Override
    public Boolean 方法(实体类名 对象名)
    {
        return stationDao.对应方法(对象名) > 0;
    }
}

最后,记得去测试,注入业务层,测试对应的功能即可

8.基于Restful开发表现层

表现层调用业务层的接口

        8.1 新建controller.实体类名Controller

        8.2 类上加注解@RestController,@RequestMapping("/实体类名s")

                地址是rest风格

        8.2 将业务层注入

        8.3 对于增删改查的4个功能,对应的注解分别是@PostMapping,DeleteMapping("{id}"),@PutMapping,@GetMapping("{id}")

                8.3.1 增和改:在方法参数中需要添加注解@RequestBody,用于是处理HTTP请求参数的注解,将请求的json或xml转化为bean对象或Map对象

                8.3.2 删和查:在方法参数中需要添加注解@PathVariable,用于接收请求路径中占位符的值

        8.4 实现每个功能的方法类型设置为R,返回的也是R型的结果,这是为了前端人员好调用、看懂,需要写前后端数据协议,即写一个返回值结果模型类,用于后端与前端进行数据格式统一

每个方法返回的值均为new R()

 @GetMapping
    public R  getAll()
    {
        return new R(true,stationService.list());
    }

    /***
     * 新增
     * @param station
     * @return
     */
    @PostMapping
    public R save(@RequestBody Station station) throws IOException
    {

        if(true) throw new IOException();
        return new R(stationService.save(station));

    }

    /**
     * 修改
     */
    @PutMapping
    public R update(@RequestBody Station station)
    {
        return new R(stationService.modify(station));

    }

    @DeleteMapping("{id}")
    public R delete(@PathVariable Integer id)
    {

        return new R(stationService.removeById(id));
    }

    @GetMapping("{id}")
    public R getById(@PathVariable Integer id)
    {

        return new R(true,stationService.removeById(id));
    }
}

9. 返回值结果模型类(前后端数据协议)

        9.1 在controller下新建utils.R类,类上添加注解@Data

        9.2 定义三个变量用于:是否查询成功、获得的数据、返回异常信息

    private Boolean flag;
    private Object data;//返回的数据类型是不定的,所以这里需要定义为Object型
    private String msg;

        9.3 编写方法:查询成功:flag = true,数据为空:data = null,msg:异常信息

  public R(Boolean flag)//是否查询成功
    {
        this.flag = flag;
    }
    public R(Boolean flag,Object data)//是否查询成功、查询到的数据是否为空
    {
        this.flag = flag;
        this.data = data;
    }

    public R(String msg)//查询失败时,返回异常信息
    {
        this.flag = false;
        this.msg = msg;
    }

10.异常处理器

        10.1 新建utils.ProjectExceptionAdvice类

        10.2 新建R型的拦截所有异常信息的方法,增加注解@ExceptionHandler,加入形参exception

        10.3 使用e.printStackTrace,它是一个非常简单但非常有用的诊断异常的工具,有助于跟踪异常,告诉你发生了什么以及代码错误发生在哪里

        10.4 返回new R(msg),这里要调用到R里的第三个方法

//作为springmvc的异常处理器
@RestControllerAdvice
public class ProjectExceptionAdvice
{
    //拦截所有的异常信息
    @ExceptionHandler
    public R doException(Exception exception)
    {

        exception.printStackTrace();
        return new R("服务器故障");
    }
}

11.在postman中测试整个项目所有的功能

        在测试之前一定要先启动springboot项目,点击运行

        11.1 查找功能测试:

                11.1.1 查找所有

        

                 11.1.2 按照id查找

         11.2 删除功能测试:

        

        11.3 增加功能测试

                11.3.1 键入地址

                11.3.2 选择Body

                11.3.3 点击raw,选择json格式

                11.3.4 输入表中各个字段名和设置的对应的值,点击send即可测试

        11.4 修改功能测试

                大致都与增加功能测试相同,将POST改为PUT,指定你要修改的某条记录,所以要多设置一个id的值,点击send测试即可。

{
    "id": 4,
    "整型字段名": 1,
    "varchar型字段名": "字段值",
}

该篇是对于后端开发的一些工作流程的总结,仅涉及到一点点原理,没有系统学过SSM,可以找时间补充一下。

学习内容来自黑马李老师,感谢。

=========================================================================

2022.3.26

总结一下最近实现自定义功能的开发流程

1.首先确定自己需要的具体功能

2.看数据层有没有可以调用的方法,如果没有,就需要自己写一个方法,注意mysql语句要写对

3.看业务层有没有可以直接调用的方法,如果没有,就自己写,在实现类里,完成逻辑操作,调用到数据层接口

4.控制层中传入参数,调用业务层接口

5.如果每层都有直接可以调用的方法,比如按照条件删除,那就去控制层写逻辑操作。

         

你可能感兴趣的:(springboot,intellij-idea,mysql,java)