spring boot泛型化编程(适用于spring)

本文介绍了在Spring Boot中进行泛型化编程的方法,特别是在没有使用和使用MP框架时的差异。在没有MP框架的情况下,详细阐述了BaseMapper、BaseService和BaseController的设计。而在使用MP框架时,文章提到了如何利用BaseMapper,并创建缓冲父Mapper类MyMapper来应对可能的自定义需求。同时,对于业务层和服务层的泛型设计也进行了讨论。
摘要由CSDN通过智能技术生成

关于泛型的解释

上一篇关于泛型化编程的文章

当时由于自己学到的技术有限,因此上一篇并不完整,此篇文章主要是对上一篇文章,添加一些说明补充

前置说明:
 1. 活学活用,开扩思维。
 2.  MyBatis plus(以下简称MP)

在没有使用MP框架时

持久层相关

负责与数据库交互

BaseMapper

所有Mapper接口的父接口

package ling.evidences.dao.root;

import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 泛型 T 由子接口去声明
 * @Author: 酷酷宅小明
 * @CreateTime: 2020-12-26 14:24
 */
public interface BaseMapper<T> {
   
    //region 查询

    /**
     * 查询所有
     */
    List<T> selectAll();

    /**
     * 根据Id查询
     */
    T selectById(T t);

    /**
     * 查询总共有多少条数据
     */
    int selectAllCount();

    /**
     * 分页查询
     */
    List<T> selectLimit(@Param("start") int start, @Param("pageSize") int pageSize);

    //endregion

    /**
     * 增加
     */
    int insert(T t);

    /**
     * 删除
     */
    int delete(T t);

    /**
     * 修改
     */
    int update(T oldS,T newS);
	
	//......
}

普通Mapper

BaseMapper中的 T 在此处 给他一个实际的类(实体类

package ling.evidences.dao;
import ling.evidences.dao.root.BaseDao;
import ling.evidences.entity.School;

public interface SchoolDao extends BaseDao<Student> {
   
	// 如果没有特殊情况,这里不用写任何一丁点的代码
	// 当然,特殊情况还是会有的
}

业务层相关

业务逻辑(稍微复杂,直接截上一篇文章的图)

Base

BaseService接口

在这里插入图片描述

PageService接口

在这里插入图片描述

Transition(抽象类)

单词中文意思:桥
该抽象类不能像上一篇一样使用setter赋值,而是把setService删除,改用构造函数赋值

package ling.evidences.service.ro
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值