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

目录
相关文章
|
15天前
|
SQL Java 数据库连接
深入 MyBatis-Plus 插件:解锁高级数据库功能
Mybatis-Plus 提供了丰富的插件机制,这些插件可以帮助开发者更方便地扩展 Mybatis 的功能,提升开发效率、优化性能和实现一些常用的功能。
96 26
深入 MyBatis-Plus 插件:解锁高级数据库功能
|
6天前
|
SQL Java 数据库连接
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
MyBatis-Plus是一个MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。本文讲解了最新版MP的使用教程,包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段等核心功能。
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
|
1月前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
303 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
1月前
|
缓存 Java 数据库连接
使用MyBatis缓存的简单案例
MyBatis 是一种流行的持久层框架,支持自定义 SQL 执行、映射及复杂查询。本文介绍了如何在 Spring Boot 项目中集成 MyBatis 并实现一级和二级缓存,以提高查询性能,减少数据库访问。通过具体的电商系统案例,详细讲解了项目搭建、缓存配置、实体类创建、Mapper 编写、Service 层实现及缓存测试等步骤。
|
1月前
|
SQL Java 数据库连接
mybatis使用四:dao接口参数与mapper 接口中SQL的对应和对应方式的总结,MyBatis的parameterType传入参数类型
这篇文章是关于MyBatis中DAO接口参数与Mapper接口中SQL的对应关系,以及如何使用parameterType传入参数类型的详细总结。
32 10
|
1月前
|
Java 数据库连接 容器
Mybatis-Plus核心功能
Mybatis-Plus核心功能
|
1月前
|
前端开发 Java 数据库连接
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
本文是一份全面的表白墙/留言墙项目教程,使用SpringBoot + MyBatis技术栈和MySQL数据库开发,涵盖了项目前后端开发、数据库配置、代码实现和运行的详细步骤。
45 0
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
|
2月前
|
SQL 存储 Java
原生JDBC简单实现Mybatis核心功能
本文介绍了在Vertx项目中使用Tdengine时,因缺乏异步JDBC驱动而采用同步驱动结合`vertx.executeBlocking`实现异步查询的方法。文中详细描述了自行开发的一个简易JDBC工具,该工具实现了SQL参数绑定与返回值映射至实体类的功能,简化了原生JDBC的繁琐操作。通过具体示例展示了其实现过程及代码细节,并与原生JDBC进行了对比,突显了其便捷性和实用性。
|
3月前
|
Java 数据库连接 Spring
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
文章是关于Spring、SpringMVC、Mybatis三个后端框架的超详细入门教程,包括基础知识讲解、代码案例及SSM框架整合的实战应用,旨在帮助读者全面理解并掌握这些框架的使用。
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
|
2月前
|
Java 数据库连接 数据格式
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
IOC/DI配置管理DruidDataSource和properties、核心容器的创建、获取bean的方式、spring注解开发、注解开发管理第三方bean、Spring整合Mybatis和Junit
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit