6.基于SpringBoot的SSMP整合案例-业务层开发

news2024/11/20 0:31:22

目录

1.业务层标准开发

 1.1接口定义

 1.2实现类定义

 1.3测试类定义

1.4小结:

2.业务层快速开发

2.1使用MyBatisP1us提供有业务层通用接口(ISerivce)与业务层通用实现类(ServiceImpl),t>

接口定义:

实现类定义:

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

接口定义

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

自定义方法:

2.4小结:


1.业务层标准开发

 1.1接口定义

创建BookService接口文件,如下图所示:

代码如下图所示:

package com.summer.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.summer.domain.Book;

import java.util.List;

public interface BookService {
    Boolean save(Book book);

    Boolean update(Book book);

    boolean delete(Integer id);

    Book getById(Integer id);

    List<Book> getAll();

    IPage<Book> getPage(Integer currentPage,Integer pageSize);
}

 1.2实现类定义

创建BookService实现类文件,如下图所示:

代码如下图所示:

package com.summer.service.impl;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.summer.dao.BookDao;
import com.summer.domain.Book;
import com.summer.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class BookServiceImpl implements BookService {
    @Autowired
    private BookDao bookDao;

    @Override
    public Boolean save(Book book) {
        return bookDao.insert(book)>0;
    }

    @Override
    public Boolean update(Book book) {
        return bookDao.updateById(book) >0 ;
    }

    @Override
    public boolean delete(Integer id) {
        return bookDao.deleteById(id)>0;
    }

    @Override
    public Book getById(Integer id) {
        return bookDao.selectById(id);
    }

    @Override
    public List<Book> getAll() {
        return bookDao.selectList(null);
    }

    @Override
    public IPage<Book> getPage(Integer currentPage, Integer pageSize) {
        IPage page = new Page(currentPage,pageSize);
        return bookDao.selectPage(page,null);
    }
}

 1.3测试类定义

创建BookServiceTestCase测试类文件,如下图所示:

代码如下图所示:

package com.summer.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.summer.domain.Book;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
public class BookServiceTestCase {
    @Autowired
    private BookService bookService;

    @Test
    void testGetById()
    {
        System.out.println(bookService.getById(1));
    }

    @Test
    void testSave() {
        Book book = new Book();
        book.setType("历史");
        book.setName("历史的温度");
        book.setDescription("通过讲述历史人物的故事,展现了历史的温情和人性的光辉");
        bookService.save(book);

    }

    @Test
    void testGetAll()
    {
        System.out.println(bookService.getAll());
    }


    @Test
    void testUpdate(){
        Book book = new Book();
        book.setId(7);
        book.setType("历史");
        book.setName("历史的温度1");
        book.setDescription("通过讲述历史人物的故事,展现了历史的温情和人性的光辉");
        System.out.println(bookService.update(book));

    }

    @Test
    void testDelete()
    {
        bookService.delete(15);
    }

    @Test
    void testGetPage() {
        IPage<Book>  result= bookService.getPage(1,5);
        System.out.println(result.getPages());
        System.out.println(result.getSize());
        System.out.println(result.getCurrent());
        System.out.println(result.getRecords());
        System.out.println(result.getTotal());
    }
}

1.4小结:

1.Service接口名称定义成业务名称,并与Dao接口名称进行区分
2.制作测试类测试Service功能是否有效

2.业务层快速开发

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

  • 接口定义:

新建接口类文件,位置如下图所示:

接口代码定义,如下所示:

package com.summer.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.summer.domain.Book;

public interface IBookService extends IService<Book> {


}
  • 实现类定义:

package com.summer.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.summer.dao.BookDao;
import com.summer.domain.Book;
import com.summer.service.IBookService;

public class BookServiceImpl extends ServiceImpl<BookDao, Book> implements IBookService {
}

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

  • 接口定义

追加的操作与原始操作通过名称区分,功能类似,代码如下所示:

package com.summer.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.summer.domain.Book;

public interface IBookService extends IService<Book> {
    Boolean delete(Integer id);
    Boolean insert(Book book);
    Boolean modify(Book book);
    Book get(Integer id);
}
  • 实现类定义:
package com.summer.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.summer.dao.BookDao;
import com.summer.domain.Book;
import com.summer.service.IBookService;
import org.springframework.beans.factory.annotation.Autowired;

public class BookServiceImpl extends ServiceImpl<BookDao, Book> implements IBookService {
    @Autowired
    private BookDao bookDao;

    public Boolean insert(Book book) {
        return bookDao.insert(book) > 0;
    }

    public Boolean modify(Book book) {
        return bookDao.updateById(book) > 0;
    }

    public Boolean delete(Integer id) {
        return bookDao.deleteById(id) > 0;
    }

    public Book get(Integer id) {
        return bookDao.selectById(id);
    }
}

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

自己定义的方法名尽量不要覆盖原始操作,避免原始提供的功能丢失,如果特殊情况,必须一样,必须在方法名上面添加注释 @Override

  • 自定义方法:

  • 原始操作:

2.4小结:

1.使用通用接口(ISerivce<T>)快速开发Service
2.使用通用实现类(ServiceImpl<M,T>)快速开发ServiceImp1
3.可以在通用接口基础上做功能重载或功能追加
4.注意重载时不要覆盖原始操作,避免原始提供的功能丢失

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1881913.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springboot实验报告管理系统-计算机毕业设计源码10596

目录 1 绪论 1.1 选题背景与意义 1.2国内外研究现状 1.3论文结构与章节安排 2系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1系统开发流程 2.2.2 用户登录流程 2.2.3 系统操作流程 2.2.4 添加信息流程 2.2.5 修改信息流程 2.2.6 删除信息流程 2.3 系统功能分析 …

思维模型:看透本质的思维框架,和它组合个个是王炸(非常详细)零基础入门到精通, 收藏这一篇就够了

为什么要从「为什么」开始&#xff1f; 如何想到又做到&#xff0c;提高行动力&#xff1f; 知行合一的途径&#xff1f;有用的工具&#xff1f; 剧透一下&#xff0c;读完本篇&#xff0c;你会收获一些王炸组合。 01 黄金思维圈 Why→How→What 黄金思维圈是西蒙斯涅克…

EF code first约定 Fluent API、数据特性

EF code First 约定 ● 关于ID的约定(主键约定)&#xff1a;类型中以ID命名的或者命名以ID结尾的&#xff0c;如ID或PostID。如果类型为数字或者GUID那么将会被认为是Identity列。   ● 关于类关系的约定(表之间的外键约定)&#xff1a;使用导航属性(既该属性是另一个实体类…

Linux 安装 Redis 教程

优质博文&#xff1a;IT-BLOG-CN 一、准备工作 配置gcc&#xff1a;安装Redis前需要配置gcc&#xff1a; yum install gcc如果配置gcc出现依赖包问题&#xff0c;在安装时提示需要的依赖包版本和本地版本不一致&#xff0c;本地版本过高&#xff0c;出现如下问题&#xff1a…

【Linux】线程周边002之线程安全

&#x1f440;樊梓慕&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》《算法》 &#x1f31d;每一个不曾起舞的日子&#xff0c;都是对生命的辜负 目录 前言 1.Linux线程互斥 1…

明星中药企业系列洞察(八)解题!仲景宛西制药如何奋力打造百亿级大健康产业?

近日&#xff0c;仲景宛西制药携六味地黄丸、逍遥丸等经典产品亮相第 88 届全国药品交易会。从最初的百泉药交会、樟树药交会&#xff0c;到郑州全国药品交易会&#xff0c;再到今年&#xff08;2024 年&#xff09;上海药交会&#xff0c;仲景宛西制药在品牌塑造&#xff0c;产…

Nature:使用语义熵检测大语言模型中的幻觉

使用语义熵检测大语言模型中的幻觉 Detecting hallucinations in large language models using semantic entropy 论文阅读摘要研究目标论文图表概述总结关键解决方案语义熵计算:虚构内容检测: 双向蕴涵在大语言模型中的应用上下文的重要性蕴涵估计器 实验设计语义熵计算步骤结…

【CT】LeetCode手撕—1143. 最长公共子序列

目录 题目1- 思路2- 实现⭐1143. 最长公共子序列——题解思路 3- ACM 实现 题目 原题连接&#xff1a;1143. 最长公共子序列 1- 思路 模式识别&#xff1a;最长公共子序列——> 动规五部曲 2- 实现 ⭐1143. 最长公共子序列——题解思路 class Solution {public int longe…

Android14之RRO资源文件替换策略(二百二十一)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 优质视频课程:AAOS车载系统+AOSP…

Python 获取字典中的值(八种方法)

Python 字典(dictionary)是一种可变容器模型&#xff0c;可以存储任意数量的任意类型的数据。字典通常用于存储键值对&#xff0c;每个元素由一个键&#xff08;key&#xff09;和一个值(value&#xff09;组成&#xff0c;键和值之间用冒号分隔。 以下是 Python 字典取值的几…

vite项目如何在本地启动https协议

vite项目如何在本地启动https协议 本地启动正常配置在vite.config.js文件中默认启动http协议的请求&#xff0c;如何改成https呢&#xff1f;今天的开发中遇到了这个问题项目需求&#xff1a; 本地启动https协议的前端页面并且正常访问后台https协议的接口 解决方法&#xff1a…

微尺度气象数值模拟—WRF-LES大涡模拟;NDOWN工具使用;PALM编译、运行;PALM静态数据预备

针对微尺度气象的复杂性&#xff0c;大涡模拟&#xff08;LES&#xff09;提供了一种无可比拟的解决方案。微尺度气象学涉及对小范围内的大气过程进行精确模拟&#xff0c;这些过程往往与天气模式、地形影响和人为因素如城市布局紧密相关。在这种规模上&#xff0c;传统的气象模…

名企面试必问30题(十二)——简单介绍一下你的家庭情况

1.思路 对于面试官来说&#xff0c;他提出这个问题&#xff0c;只是为了深挖您的性格、稳定性、行事风格&#xff0c;包括未来定居规划、生育规划等基础信息&#xff0c;这是正常情况。您不要过多围绕其他家庭成员来讲&#xff0c;否则面试官无法获取他想要的&#xff0c;您也难…

新手第一个漏洞复现:MS17-010(永恒之蓝)

文章目录 漏洞原理漏洞影响范围复现环境复现步骤 漏洞原理 漏洞出现在Windows SMB v1中的内核态函数srv!SrvOs2FeaListToNt在处理FEA&#xff08;File Extended Attributes&#xff09;转换时。该函数在将FEA list转换成NTFEA&#xff08;Windows NT FEA&#xff09;list前&am…

2024新版大屏互动微信上墙源码大屏互动神器年会婚庆微现场3D签到

2024年大屏幕互动源码动态背景图和配乐素材搭建教程 php宝塔搭建部署活动现场大屏幕互动系统php源码&#xff0c;可以用来构建具有互动功能的大屏幕系统&#xff0c;为活动现场提供各种互动体验。 修复版的系统源码在原有功能的基础上&#xff0c;增加了更加完善的用户体验和稳…

【SGX系列教程】(二)第一个 SGX 程序: HelloWorld,linux下运行

文章目录 0. SGX基础原理分析一.准备工作1.1 前提条件1.2 SGX IDE1.3 基本原理 二.程序设计2.1 目录结构2.2 源码设计2.2.1 Encalve/Enclave.edl:Enclave Description Language2.2.2 Enclave/Enclave.lds: Enclave linker script2.2.3 Enclave/Enclave.config.xml: Enclave 配置…

深入理解Java核心技术模块化局部变量类型推断

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文峰…

Python计算n的阶乘的多种方法

1 问题 在课上&#xff0c;我们学习了用递归函数去计算一个自然数n的阶乘。但计算一个自然数n的阶乘是否就这一种方法呢&#xff1f; 2 方法 关于计算一个自然数n的阶乘&#xff0c;通过搜索&#xff0c;我们寻找到了除运用递归函数外的其他三种方法&#xff1a; 方法一 通过导…

【PyQt5】一文向您详细介绍 QLineEdit() 的作用

【PyQt5】一文向您详细介绍 QLineEdit() 的作用 下滑即可查看博客内容 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地&#xff01;&#x1f387; &#x1f393; 博主简介&#xff1a;985高校的普通本硕&…

树洞陪聊陪玩交友程序系统源码,解锁交友新体验

在繁忙的都市生活中&#xff0c;你是否渴望找到一片属于自己的秘密花园&#xff0c;倾诉心声、分享快乐&#xff1f;今天&#xff0c;就让我带你走进这片名为“树洞”的神秘之地&#xff0c;感受陪聊陪玩交友的全新魅力&#xff01; &#x1f333;树洞陪聊陪玩交友程序系统 你…