业务层开发
对于业务层的制作有个误区
Service层接口定义与数据层接口定义具有较大差别 不要混用
业务层接口关注的是业务名称
数据层接口关注的是数据层名称

操作是不难
但是有些东西还是要掌握的
业务层接口如果是业务方法 就按照业务名称来代替
如果是数据操作 直接用操作名称来代替

写接口

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());
    }
} 
测试通过

对于我们现在业务层接口和实现类
我们都是用提供的统用功能来实现的
我们有时候不一定要这样
我们需要在接口里手工编辑

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

各种各样

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





小结



















