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

目录

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;
import org.springframework.stereotype.Service;

@Service
public class BookServiceImpl extends ServiceImpl<BookDao, Book> implements IBookService {
}
  • 测试类:

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 IBookService 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.list());
    }


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

    }

    @Test
    void testDelete()
    {

        bookService.removeById(16);
    }

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

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;
import org.springframework.stereotype.Service;

@Service
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.注意重载时不要覆盖原始操作,避免原始提供的功能丢失

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MergeBus封装模块

当模型有很多信号进行交互的时候&#xff0c;并且已经无法回避线条交叉的时候&#xff0c;我们会选择 From和Goto模块来提高模型的可读性&#xff0c;假如你拿到的模型如下图&#xff1a; 像不像芯片的电路&#xff0c;错综而复杂 该如何整理呢&#xff1f; 我相信有很多模型…

2024年移动手游趋势:休闲类手游收入逆势增长,欧美玩家成为主力

移动手游广告情报平台Sensor Tower近期发布的报告显示&#xff0c;从宏观数据来看&#xff0c;尽管2023年对于移动游戏市场来说是艰难的一年&#xff0c;无论是总下载量亦或是总收入都较去年有所下降&#xff0c;尤其是Google Play。但在总体下降的大趋势下&#xff0c;休闲游戏…

mac如何压缩视频大小不改变画质,mac怎么压缩视频软件

在数字时代&#xff0c;视频已成为信息传递和娱乐消遣的重要媒介。然而&#xff0c;视频带来的愉悦体验背后&#xff0c;是日益增长的存储和分享压力。大视频文件不仅占用大量存储空间&#xff0c;上传和下载也变得异常缓慢。那么&#xff0c;如何才能有效压缩视频&#xff0c;…

SAP中的 UPDATA TASK 和 BACKGROUND TASK

前言&#xff1a; 记录这篇文章起因是调查生产订单报工问题引申出来的一个问题&#xff0c;后来再次调查后了解了其中缘由&#xff0c;大概记录以下&#xff0c;如有不对&#xff0c;欢迎指正。问题原贴如下&#xff1a; SAP CO11N BAPI_PRODORDCONF_CREATE_TT连续报工异步更…

LoadRunner-Virtual User Generator组件学习(录制不上内容)

重点知识 LR工具是拿C写的&#xff0c;所以它的脚本默认也是C&#xff0c;但是最终生成的脚本不止是C&#xff0c;它是支持C和Java语言的&#xff0c;这个大家要清楚&#xff0c;对本身懂代码的就很友好&#xff0c;你了解java&#xff0c;那就可以把脚本改成java&#xff0c;…

不看后悔!国内AI大比拼的精彩看点全汇总

至2022年AI爆发后&#xff0c;在中国已催生了上千个AI产品。 这些产品涵盖了从头部大厂到高等院校&#xff0c;再到初创企业的广泛阵容。 如&#xff1a; 大厂&#xff1a;百度文心、阿里通义、腾讯元宝、字节豆包、讯飞星火等高校&#xff1a;清华大学、北京大学等初创&…

.NET 漏洞分析 | 某ERP系统存在SQL注入

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…

JAVA导出数据库字典到Excel

文章目录 1、查询某张表字段信息2、TableVo接收sql查询得到的数据3、excel导出4、导出案例 1、查询某张表字段信息 select column_name as columnName, -- 字段名 COLUMN_DEFAULT as colDefault, -- 默认值 column_key as columnKey, -- PRI-主键&#xff0c;UNI-唯一键&…

机器学习原理之 -- 朴素贝叶斯分类器:由来及原理详解

朴素贝叶斯&#xff08;Naive Bayes&#xff09;分类器是一类基于贝叶斯定理&#xff08;Bayes Theorem&#xff09;的简单而有效的概率分类算法。由于其假设特征之间的条件独立性&#xff0c;因此被称为“朴素”贝叶斯分类器。尽管这种独立性假设在现实中很少完全成立&#xf…

VSCode使用ipynb文件高效地进行功能测试

一、ipynb是什么文件 .ipynb文件是Jupyter Notebook的专用格式&#xff0c;它允许用户在一个网页应用中混合编写Markdown文本、执行代码、查看输出结果及图表。Jupyter Notebook的本质是一个Web应用程序&#xff0c;支持运行40多种编程语言&#xff0c;包括Python。它的主要用…

Elasticsearch运维系列_ES之max_result_window 含义-对性能影响及参数调整

如果你觉得这篇文章能给你带来收获&#xff0c;请关注我公众号: 这篇文章主要给大家介绍max_result_window参数及其对性能影响。 Part1 背景描述 当前某个业务xxxdb单个索引值较大&#xff0c;每日单个索引大小在二三百G&#xff0c;当前索引保留15天&#xff0c;如果拉取一个…

初入Node.js必备知识

Node.js因什么而生&#xff0c;作用是干什么&#xff1f; Node.js是一个用c和c打造的一个引擎&#xff0c;他能够读懂JavaScript&#xff0c;并且让JavaScript能够和操作系统打交道的能力 JavaScript 原本只能在浏览器中运行,但随着Web应用程序越来越复杂,仅靠客户端JavaScri…

零基础入门怎么学习老挝语字母表?《老挝语翻译通》App真人发音教学,学习老挝语字母发音和词汇句子!

这段老挝文字翻译成中文是什么意思&#xff1f;有什么好用的老挝语翻译工具推荐吗&#xff1f; 快速翻译&#xff1a;中老语言无缝转换&#xff0c;实时翻译&#xff0c;让沟通更流畅。 学习工具&#xff1a;零基础入门到流利对话&#xff0c;老挝语真人发音&#xff0c;让你的…

MacOS 安装 mtr 网络检测工具

Install sudo brew install mtr sudo chown root $(which mtr) sudo chmod us $(which mtr) sudo chown root $(which mtr-packet) sudo chmod us $(which mtr-packet) Test mtr google.com

Build a Large Language Model (From Scratch)附录E(gpt-4o翻译版)

来源&#xff1a;https://github.com/rasbt/LLMs-from-scratch?tabreadme-ov-file https://www.manning.com/books/build-a-large-language-model-from-scratch

VTK学习日志:基于VTK9.3.0+Visual Studio c++实现DICOM影像MPR多平面重建+V R体绘制4个视图展示功能的实现(二)

前段时间对VTK9.3.0进行了编译&#xff0c;开发了MPRVR实现的demo,显示效果不是很理想&#xff0c;正好趁着周末有时间&#xff0c;再度对之前的程序进行优化和完善&#xff0c;先展示下效果&#xff1a; VTK实现MPRVR四视图 再次讲解下基于VTK的MPRVR实现的简单项目创建过程&a…

Kamailio-命令行指令kamctl与kamcmd

前文也有提到几种指令的用处&#xff0c;与web页面相比&#xff0c;它就是更原始、面向运维的&#xff0c;正常如果有管理页面也需要使用到&#xff1a; kamailio - SIP 服务器脚本kamdbctl - 创建和管理数据库的脚本&#xff0c;比如你使用MySQL作为其存储时就需要使用到这个…

每天五分钟计算机视觉:人体姿势识别

本文重点 人体姿势识别是计算机视觉领域的一个重要研究方向,旨在通过图像或视频数据自动检测并识别出人体的各种姿势和动作。随着深度学习技术的快速发展,基于神经网络的方法在这一领域取得了显著进展。神经网络,特别是卷积神经网络(CNN)和循环神经网络(RNN),因其强大…

安装opencv-python出错,怎么办?

安装opencv-python出错 解决方法&#xff1a; 具体版本号&#xff0c;python3.6对应的就是4.3.0.38 pip install opencv-python4.3.0.38 -i https://pypi.tuna.tsinghua.edu.cn/simple