业务层基础开发
接口类
public interface BookService {boolean save(Book book);boolean update(Book book);boolean delete(Integer id);Book getById(Integer id);List<Book> getAll();IPage<Book> getByPage(int currentPage,int pageSize);IPage<Book> getByPage(int pages, Integer pageSize, Book book);
}
接口类实现类
@Service
public class BookServiceImpl implements BookService {@AutowiredBookDao bookDao;@Overridepublic boolean save(Book book) {return bookDao.insert(book) > 0;}@Overridepublic boolean update(Book book) {return bookDao.updateById(book) > 0;}@Overridepublic boolean delete(Integer id) {return bookDao.deleteById(id) > 0;}@Overridepublic Book getById(Integer id) {return bookDao.selectById(id);}@Overridepublic List<Book> getAll() {return bookDao.selectList(null);}// 分页查询@Overridepublic IPage<Book> getByPage(int currentPage, int pageSize) {IPage page = new Page(currentPage,pageSize);bookDao.selectPage(page,null);return page;}// 条件查询@Overridepublic IPage<Book> getByPage(int currentPage, Integer pageSize, Book book) {LambdaQueryWrapper<Book> lqw = new LambdaQueryWrapper<>();
// 第一个参数:带不带它玩,第二个参数:具体是哪个属性,第三个参数:具体参数值lqw.like(Strings.isNotEmpty(book.getType()),Book::getType,book.getType());lqw.like(Strings.isNotEmpty(book.getName()),Book::getName,book.getName());lqw.like(Strings.isNotEmpty(book.getDescription()),Book::getDescription,book.getDescription());IPage page = new Page(currentPage,pageSize);bookDao.selectPage(page,lqw);return page;}
}
上面的其他业务方法很好理解,这里分析一下条件查询
分析点1
上图是条件查询的界面,当我们在框中输入查询条件,并点击查询后,输入框的数据会以追加的形式追加到网址的后面(像?a=b&b=c.....),在
springmvc中有一个知识点,我们可以设置一个bean对象,对象的参数要和发送的参数一致,这样前端传送的参数可以被对象直接收到,而不需
要我们一个一个接收。
这也是上面条件查询中第三个参数为什么传了一个book对象。
分析点2
LambdaQueryWrapper的like方法,该like方法有三个参数,第一个参数类型为Boolean,当值为true时,后面的类型参与模糊查询。
当值为false时,后面的类型则不参与模糊查询。
第二个参数为数据库中的字段(也是查询实体类的对应属性),就是select * ...... where a like b;中的a
第三个参数是具体的属性值。就是select * ...... where a like b;中的b
业务层快速开发
使用快速开发,就是使用MyBatisPlus提供的接口,来实现简单的增删查改,复杂的功能追加即可。
快速开发方案使用MyBatisPlus提供有业务层通用接口(ISerivce<T>)与业务层通用实现类(ServiceImpl<M,T>)在通用类基础上做功能重载或功能追加注意重载时不要覆盖原始操作,避免原始提供的功能丢失具体代码如下
public interface IBookService extends IService<Book> {
}
实现类
@Service
public class IBookServiceImpl extends ServiceImpl<BookDao, Book> implements IBookService {
}
上面代码没有自定义的方法,全部使用mp提供的。
可以看出我们什么都没有写,却可以实现基础的增删查改,与条件查询。
注意:我们在写我们自己的业务方法时,方法名不要和mp的一样,不然会覆盖,使得原功能丢失。
以下是mp提供的部分方法
业务层结束,仅为学习过程中,相关知识点总结,如有问题,欢迎指正~