SSMP整合案例第三步 业务层service开发及基于Mybatis的接口功能拓展

简介: SSMP整合案例第三步 业务层service开发及基于Mybatis的接口功能拓展

业务层开发

对于业务层的制作有个误区

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

解了,这句话的意思是要区分清楚服务层(Service Layer)接口定义和数据层(Data Layer)接口定义,不要将它们混合在一起。让我分别解释一下这两个层次的接口定义和它们的差异。

数据层接口定义

数据层接口定义通常用于访问和操作数据存储(如数据库、文件系统等)。它的主要职责是提供对数据的持久化操作,例如存储、检索、更新和删除数据。数据层接口通常定义了与数据存储相关的具体方法和操作。

服务层接口定义

服务层接口定义则更加关注业务逻辑的实现,它通常依赖于数据层接口来完成数据的持久化和检索,但是它不直接操作数据存储。服务层接口定义了业务逻辑的各种操作,可能会组合多个数据层方法以实现特定的业务需求。

业务层接口关注的是业务名称

数据层接口关注的是数据层名称

操作是不难

但是有些东西还是要掌握的

业务层接口如果是业务方法 就按照业务名称来代替

如果是数据操作 直接用操作名称来代替

写接口

package com.bigdata1421.ssmp.service;
 
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.bigdata1421.ssmp.domain.User;
 
import java.util.List;
 
public interface UserService {
    Boolean save(User user);
    Boolean update(User user);
    Boolean delete(Integer id);
    User getById(Integer id);
    List<User> geTAll();
    IPage<User> getPage(int currentPage , int pageSize);
    
}

接口写完了我们去写实现类

实现方法

@service 注解 定义成数据层对于的bean

@Autowired 注入

package com.bigdata1421.ssmp.service.impl;
 
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bigdata1421.ssmp.dao.UserDao;
import com.bigdata1421.ssmp.domain.User;
import com.bigdata1421.ssmp.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
import java.util.List;
 
// 定义成业务层对应的bean
@Service
public class UserServiceImpl implements UserService {
    //注入
    @Autowired
    private UserDao userDao;
 
    @Override
    public Boolean save(User user) {
        return userDao.insert(user)>0;
    }
 
    @Override
    public Boolean update(User user) {
        return userDao.updateById(user)>0;
    }
 
    @Override
    public Boolean delete(Integer id) {
        return userDao.deleteById(id)>0;
    }
 
    @Override
    public User getById(Integer id) {
        return userDao.selectById(id);
    }
 
    @Override
    public List<User> geTAll() {
        return userDao.selectList(null);
    }
 
    @Override
    public IPage<User> getPage(int currentPage, int pageSize) {
        IPage page = new Page(currentPage,pageSize);
        userDao.selectPage(page,null);
        return page;
    }
}

测试

业务层的逻辑必须书写测试方法

package com.bigdata1421.ssmp.service;
 
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bigdata1421.ssmp.dao.UserDao;
import com.bigdata1421.ssmp.domain.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
 
import javax.xml.ws.soap.Addressing;
 
@SpringBootTest
public class UserserviceTestCase {
 
    @Autowired
    private UserService userService;
 
    @Test
    void testGetById(){
        System.out.println(userService.getById(1));
    }
 
    @Test
    void testSave(){
        User user=new User();
        user.setId(11);
        user.setName("王连扬");
        user.setAge(21);
        user.setGender(1);
        userService.save(user);
    }
 
    @Test
    void testUpdate(){
        User user=new User();
        user.setId(11);
        user.setName("王连扬");
        user.setAge(21);
        user.setGender(1);
        userService.update(user);
    }
 
    @Test
    void testDelete(){
        userService.delete(11);
    }
 
    @Test
    void testGetAll(){
        userService.geTAll();
    }
 
    @Test
    void testGetPage(){
        IPage<User>page=userService.getPage(2,5);
        System.out.println(page.getCurrent());
        System.out.println(page.getSize());
        System.out.println(page.getTotal());
        System.out.println(page.getPages());
        System.out.println(page.getRecords());
    }
 
 
}

测试已经通过

小结

定义方法

实现类

测试类

业务层快速开发

业务层的开发快死死了

我们一个一个的写

其实不用

我们用Mybatis提供的业务层提供的公共接口即可实现功能的拓展

重写业务层接口

package com.bigdata1421.ssmp.service;
 
import com.baomidou.mybatisplus.extension.service.IService;
import com.bigdata1421.ssmp.domain.User;
 
public interface IUserService extends IService<User> {
}

直接写实现类

在通用类的基础上做功能重载和功能追加

impl 实现接口

package com.bigdata1421.ssmp.service.impl;
 
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bigdata1421.ssmp.dao.UserDao;
import com.bigdata1421.ssmp.service.IUserService;
import com.bigdata1421.ssmp.domain.User;
import org.springframework.stereotype.Service;
 
@Service//定义成业务层的bean
public class UserServiceImpl extends ServiceImpl<UserDao,User> implements IUserService {
}

开发测试

package com.bigdata1421.ssmp.service;
 
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bigdata1421.ssmp.dao.UserDao;
import com.bigdata1421.ssmp.domain.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
 
import javax.xml.ws.soap.Addressing;
 
@SpringBootTest
public class UserServiceTest {
 
    @Autowired
    private IUserService iUserService ;
 
    @Test
    void testGetById(){
        System.out.println(iUserService.getById(1));
    }
 
    @Test
    void testSave(){
        User user=new User();
        user.setId(11);
        user.setName("王连扬");
        user.setAge(21);
        user.setGender(1);
        iUserService.save(user);
    }
 
    @Test
    void testUpdate(){
        User user=new User();
        user.setId(11);
        user.setName("王连扬");
        user.setAge(21);
        user.setGender(1);
        iUserService.updateById(user);
    }
 
    @Test
    void testDelete(){
        iUserService.removeById(1);
    }
 
    @Test
    void testGetAll(){
        iUserService.list();
    }
 
    @Test
    void testGetPage(){
        IPage<User>page=new Page<User>(2,5);
        iUserService.page(page);
        System.out.println(page.getCurrent());
        System.out.println(page.getSize());
        System.out.println(page.getTotal());
        System.out.println(page.getPages());
        System.out.println(page.getRecords());
    }
 
}

测试通过

对于我们现在业务层接口和实现类

我们都是用提供的统用功能来实现的

我们有时候不一定要这样

我们需要在接口里手工编辑

在接口的实现类中实现方法

各种各样

所以我们在以后开发中是混合着用

小结

个人号推广

博客主页

多多!-CSDN博客

Web后端开发

https://blog.csdn.net/qq_30500575/category_12624592.html?spm=1001.2014.3001.5482

Web前端开发

https://blog.csdn.net/qq_30500575/category_12642989.html?spm=1001.2014.3001.5482

数据库开发

https://blog.csdn.net/qq_30500575/category_12651993.html?spm=1001.2014.3001.5482

项目实战

https://blog.csdn.net/qq_30500575/category_12699801.html?spm=1001.2014.3001.5482

算法与数据结构

https://blog.csdn.net/qq_30500575/category_12630954.html?spm=1001.2014.3001.5482

计算机基础

https://blog.csdn.net/qq_30500575/category_12701605.html?spm=1001.2014.3001.5482

回忆录

https://blog.csdn.net/qq_30500575/category_12620276.html?spm=1001.2014.3001.5482

目录
相关文章
|
人工智能 Java 数据库连接
MyBatis Plus 使用 Service 接口进行增删改查
本文介绍了基于 MyBatis-Plus 的数据库操作流程,包括配置、实体类、Service 层及 Mapper 层的创建。通过在 `application.yml` 中配置 SQL 日志打印,确保调试便利。示例中新建了 `UserTableEntity` 实体类映射 `sys_user` 表,并构建了 `UserService` 和 `UserServiceImpl` 处理业务逻辑,同时定义了 `UserTableMapper` 进行数据交互。测试部分展示了查询、插入、删除和更新的操作方法及输出结果,帮助开发者快速上手 MyBatis-Plus 数据持久化框架。
1124 0
|
SQL Java 数据库连接
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
MyBatis-Plus是一个MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。本文讲解了最新版MP的使用教程,包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段等核心功能。
2661 6
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
|
缓存 Java 数据库连接
使用MyBatis缓存的简单案例
MyBatis 是一种流行的持久层框架,支持自定义 SQL 执行、映射及复杂查询。本文介绍了如何在 Spring Boot 项目中集成 MyBatis 并实现一级和二级缓存,以提高查询性能,减少数据库访问。通过具体的电商系统案例,详细讲解了项目搭建、缓存配置、实体类创建、Mapper 编写、Service 层实现及缓存测试等步骤。
288 2
|
SQL Java 数据库连接
mybatis使用四:dao接口参数与mapper 接口中SQL的对应和对应方式的总结,MyBatis的parameterType传入参数类型
这篇文章是关于MyBatis中DAO接口参数与Mapper接口中SQL的对应关系,以及如何使用parameterType传入参数类型的详细总结。
690 10
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
3582 2
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
Java 数据库连接 Spring
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
文章是关于Spring、SpringMVC、Mybatis三个后端框架的超详细入门教程,包括基础知识讲解、代码案例及SSM框架整合的实战应用,旨在帮助读者全面理解并掌握这些框架的使用。
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
|
SQL Java 数据库
4、Mybatis-Plus 通用service的操作
这篇文章介绍了如何在Mybatis-Plus框架中进行通用Service层的操作。内容包括目录结构、创建继承了IService接口的UserService接口、实现该接口的UserServiceImpl类,以及如何在Controller层注入Service接口来进行业务操作。文章通过具体的代码示例,展示了如何利用Mybatis-Plus提供的通用Service和ServiceImpl类来简化数据库的CRUD操作,并提高开发效率。
|
XML Java 数据库连接
MyBatis中的接口代理机制及其使用
【8月更文挑战第5天】MyBatis的接口代理机制是其核心功能之一,允许通过定义接口并在运行时生成代理对象来操作数据库。开发者声明一个带有`@Mapper`注解的接口,MyBatis则依据接口方法、映射配置(XML或注解)及数据库信息动态生成代理类。此机制分为四步:创建接口、配置映射文件或使用注解、最后在业务逻辑中注入并使用代理对象。这种方式简化了数据库操作,提高了代码的可读性和可维护性。例如,在电商系统中可通过`OrderMapper`处理订单数据,在社交应用中利用`MessageMapper`管理消息,实现高效且清晰的数据库交互。
397 5
MybatisPlus--IService接口基本用法,MP提供了Service接口,save(T) 这里的意思是新增了一个T, saveBatch 是批量新增的意思,saveOrUpdate是增或改
MybatisPlus--IService接口基本用法,MP提供了Service接口,save(T) 这里的意思是新增了一个T, saveBatch 是批量新增的意思,saveOrUpdate是增或改
|
XML Java 数据格式
支付系统----微信支付20---创建案例项目--集成Mybatis-plus的补充,target下只有接口的编译文件,xml文件了,添加日志的写法
支付系统----微信支付20---创建案例项目--集成Mybatis-plus的补充,target下只有接口的编译文件,xml文件了,添加日志的写法