基于SpringBoot的SSMP整合案例

基于SpringBoot的SSMP整合案例

  1. SSMP案例效果演示
  2. SSMP案例制作流程解析
  3. 先开发基础CRUD功能,做一层测一层
  4. 调通页面,确认异步提交成功后,制作所有功能
  5. 添加分页功能与查询功能

模块创建

  1. 勾选SpringMVC与Mysql坐标
  2. 修改配置文件为yml格式
  3. 设置端口为80方便访问

实体类开发

Lombok

· Lombok,一个Java类库,提供一组注解,简化POJO实体类开发

<dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
    		<!--lombok版本由SpringBoot提供,无需指定版本-->
</dependency>

· 常用注解:@Data

· 为当前实体类在编译器设置对应的get/set方法,toString方法,hashCode方法equals方法等

@Data
public class Book {
   
    private Integer id;
    private String type;
    private String name;
    private String description;

数据层开发

  1. 导入MybatisPlus与Druid对应的starter
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.6</version>
</dependency>

<dependency>
      <groupId>com.baomidou</groupId>
      <artifactId>mybatis-plus-boot-starter</artifactId>
      <version>3.4.3</version>
</dependency>
  1. 配置数据源与MyBatisPlus对应的基础配置(id生成策略使用数据库自增策略)
spring:
  datasource:
    druid:
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC
      username: root
      password: root

mybatis-plus:
  global-config:
    db-config:
      table-prefix: tbl_
      id-type: auto

  1. 继承BaseMapper并指定泛型(开发Dao接口)
@Mapper
public interface BookDao extends BaseMapper<Book> {
   
}
  1. 制作测试类

开启MP运行日志

· 为方便调试可以开启MybatisPlus的日志(标准输出)

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

分页功能

  1. 使用Ipage封装分页数据
  2. 分页操作依赖MybaitisPlus分页拦截器实现功能
  3. 借助MyBatisPlus日志查阅执行SQL语句

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ldS2Bi7L-1646744588955)(C:\Users\maybe3032\AppData\Roaming\Typora\typora-user-images\image-20220308163742750.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JhgrItm0-1646744588956)(C:\Users\maybe3032\AppData\Roaming\Typora\typora-user-images\image-20220308163754519.png)]

条件查询

  1. 使用QueryWrapper对象封装查询
  2. 推荐使用LambdaQueryWrapper对象
  3. 所有查询操作封装成方法调用
  4. 查询条件支持动态条件拼装

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lUJyCFjI-1646744588956)(C:\Users\maybe3032\AppData\Roaming\Typora\typora-user-images\image-20220308164508039.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YFoP16un-1646744588957)(C:\Users\maybe3032\AppData\Roaming\Typora\typora-user-images\image-20220308164521582.png)]

业务层开发

· Service层接口定义与数据层接口定义具有较大区别,不要混用

​ · selectByUserAndPassword(String username, String password);

​ · login(String username, String password)

  1. 接口定义

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9e0kfFOX-1646744588958)(C:\Users\maybe3032\AppData\Roaming\Typora\typora-user-images\image-20220308165618711.png)]

  1. 实现类定义

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y3vxooKs-1646744588959)(C:\Users\maybe3032\AppData\Roaming\Typora\typora-user-images\image-20220308165711584.png)]

  1. 测试类定义

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lieq0pkS-1646744588959)(C:\Users\maybe3032\AppData\Roaming\Typora\typora-user-images\image-20220308165735331.png)]

· Service接口名称定义成业务名称,并于Dao接口名称进行区分

· 制作测试类测试Service功能是否有效

快速开发

· 使用MybatisPlus提供有业务层通用接口(ISerivce)与业务层通用实现类(ServiceImpl<M,T>)

· 在通用类基础上做功能重载或功能追加

· 注意重载时不要覆盖原始操作,避免原始提供的功能丢失

  1. 使用通用接口(ISerivce)快速开发Service
public interface IBookService extends IService<Book>{
   }
//追加的操作与原始操作通过名称区分,功能类似
Boolean delete(Integer id);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AEeWh1QV-1646744588960)(C:\Users\maybe3032\AppData\Roaming\Typora\typora-user-images\image-20220308171612132.png)]

  1. 使用通用实现类 (ServiceImpl<M,T>),快速开发ServiceImpl
@Service
public class BookServiceImpl extends ServiceImpl<BookDao,Book> implements IBookService{
   }

表现层开发

  1. 基于Restful制作表现层接口
    1. 新增:POST
    2. 删除:DELETE
    3. 修改:PUT
    4. 查询:GET
  2. 接受参数
    1. 实体数据:@RequestBodu
    2. 路径变量:@PathVariable
@RestControlller
@RequestMapping("/books")
public class BookController{
   
    @Autowired
    private IBookService bookService;
    @GetMapping("/{id}")
    public Book getById(@PathVariable Integer id){
   
        return bookdService.getById(id);
    }
}

表现层信息一致处理

  1. 设计统一的返回值结果类型便于前端开发读取数据
  2. 返回值结果类型可以根据需求自行设定,没有固定格式
  3. 返回值结果模型类用于后端与前端进行数据格式统一,也称为前后端数据协议

· 设计表现层返回结果的模型类,用于后端与前端进行数据格式统一,也称为前后端数据协议

@Data
public class R{
   
    private Boolean flag;
    private Object data;
    
    public R()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值