业务层开发
对于业务层的制作有个误区
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()); } }
测试通过
对于我们现在业务层接口和实现类
我们都是用提供的统用功能来实现的
我们有时候不一定要这样
我们需要在接口里手工编辑
在接口的实现类中实现方法
各种各样
所以我们在以后开发中是混合着用
小结
个人号推广
博客主页
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