日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringBoot中业务层标准开发和快速开发(大全)

發布時間:2023/12/15 javascript 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringBoot中业务层标准开发和快速开发(大全) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? 可以對照數據層開發學習:

http://t.csdn.cn/dE36W

一、業務層標準開發

首先要說明一下,Service層接口定義和數據層接口定義有較大的區別

selectByUserNameAndPassword(String username, String password);

上面這一條語句著重于數據,一目了然,是數據的

login(String username,String password);

上面這條語句著重于功能,能讓人一眼看清功能是什么

①接口:在這里定義方法

import com.baomidou.mybatisplus.core.metadata.IPage; import com.company.domain.Book;import java.util.List;public interface BookService {Boolean save(Book book);Boolean update(Book book);Boolean delete(Integer id);Book getById(Integer id);List<Book> getAll(); // 當前頁碼值, 每頁顯示數IPage<Book> getPage(int currentPage, int pageSize); }

? ? ?通過這個實現數據庫的操作 ?里面有數據庫中各種各樣的操作?

import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.company.domain.Book; import org.apache.ibatis.annotations.Mapper;@Mapper //通過這個實現數據庫的操作 里面有數據庫中各種各樣的操作 public interface BookDao extends BaseMapper<Book> {//指定泛型才能知道操作誰}

②實體類:

//@Getter所有的get方法 //@Setter所有的set方法 //@NoArgsConstructor 無參構造 //@AllArgsConstructor//全部的構造@Data //get+set+toString+hashcode+equals 但是沒有構造方法 @TableName(value = "t_book") public class Book {// 這里的屬性名 要和數據庫表中的屬性名一致,要不然最終的查詢結果是null // 將數據庫中的結果對此變量名進行注入@TableId(value="id",type = IdType.AUTO) //代表自增算法@TableField(value = "id")private int id;@TableField(value = "bookName")private String bookName;@TableField(value = "statue")private String statue;}

③service層:? 對接口中的方法進行調用

import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.company.dao.BookDao; import com.company.domain.Book; import com.company.service.BookService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;import java.util.List;@Service //業務層開發注解 定義成業務層對應的bean public class BookServiceImpl implements BookService {@Autowiredprivate BookDao bookDao;@Overridepublic Boolean save(Book book) {//bookDao.insert(book)返回的是影響的行計數 我們讓他>0,就說明有影響的數據,就返回truereturn 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);// null說明查詢的時候沒有條件,那這就是 查詢全部數據}@Override //分頁操作public IPage<Book> getPage(int currentPage, int pageSize) {IPage iPage = new Page(currentPage,pageSize);return bookDao.selectPage(iPage,null); //null是查詢條件} }

④測試:

import com.company.domain.Book; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest;@SpringBootTest public class BookServiceTest { // 業務層對象@Autowiredprivate BookService bookService;@Testvoid testGetById(){//單純這樣的話,會輸出一個日志(因為我們開啟了MP運行日志),也能看我們查找的數據bookService.getById(10086);//這樣的話,我們看數據會更加清晰(前提是實體類要實現toString方法,getById返回的是一個Book對象)System.out.println( bookService.getById(10086));}@Test //添加對象void testSave(){Book book = new Book(); // 這里采用的是主鍵自增,我們不用手動給主鍵賦值(數據庫默認的是雪花算法) // book.setId(10092);book.setBookName("信息技術");book.setStatue("優秀");bookService.save(book);}@Test //修改對象void testUpdate(){Book book = new Book();book.setId(10086);book.setBookName("zhanghangzhang");bookService.update(book);}@Test //刪除對象void testDelete(){bookService.delete(10093);//通過id刪除}@Test //得到全部對象void testGetAll(){System.out.println( bookService.getAll()); //給null查全部}@Test //分頁 單純運行這個是不行的,需要寫一個配置類(攔截器)void testGetPage(){bookService.getPage(2,5); //這樣也能輸出,是因為我們配置了運行日志}}

二、業務層快速開發

①接口:在這里定義方法

import com.baomidou.mybatisplus.extension.service.IService; import com.company.domain.Book;//業務層快速開發 public interface IBookService extends IService<Book> { //我們在數據層是extends BaseMapper<Book> 和這里不太一樣 不要混了 // 如果我們需要的方法他們沒有提供,我們可以自己在這里寫,之后再IBookServiceImpl中進行實現 // @Override // Boolean save(Book book); 如果這個地方報錯了,就說明重名了,我們就換一個名字 // 這樣就避免了我們手寫方法和他們的方法重合了 } @Mapper //通過這個實現數據庫的操作 里面有數據庫中各種各樣的操作 public interface BookDao extends BaseMapper<Book> {//指定泛型才能知道操作誰}

②實體類:

//@Getter所有的get方法 //@Setter所有的set方法 //@NoArgsConstructor 無參構造 //@AllArgsConstructor//全部的構造@Data //get+set+toString+hashcode+equals 但是沒有構造方法 @TableName(value = "t_book") public class Book {// 這里的屬性名 要和數據庫表中的屬性名一致,要不然最終的查詢結果是null // 將數據庫中的結果對此變量名進行注入@TableId(value="id",type = IdType.AUTO) //代表自增算法@TableField(value = "id")private int id;@TableField(value = "bookName")private String bookName;@TableField(value = "statue")private String statue;}

③service層:? 對接口中的方法進行調用

//業務層快速開發 @Service //定義bean ; BookDao是通過這個實現數據庫的操作 里面有數據庫中各種各樣的操作;Book是實體類 //IBookService 是提供的業務層接口 public class IBookServiceImpl extends ServiceImpl<BookDao, Book> implements IBookService {// 先比較與標準開發,這里不需要自己寫基本的增刪改查了(這就是一個優勢,提高了效率) // 如果我們需要的方法他們沒有,我們仍然要在接口中定義,然后自己寫 // 具體怎么寫,就是回歸到我們上面的標準開發了 // 但是這些方法要在接口中進行實現!!!!!否則就會報錯!!!!! // @Autowired // private BookDao bookDao; // @Override // public Boolean save(Book book) { // //bookDao.insert(book)返回的是影響的行計數 我們讓他>0,就說明有影響的數據,就返回true // return bookDao.insert(book) >0; // } // // @Override // public Boolean update(Book book) { // return bookDao.updateById(book) >0; // } // // @Override // public Boolean delete(Integer id) { // return bookDao.deleteById(id) >0; // } // // @Override // public Book getById(Integer id) { // return bookDao.selectById(id); // } // // @Override // public List<Book> getAll() { // return bookDao.selectList(null);// null說明查詢的時候沒有條件,那這就是 查詢全部數據 // } // // @Override //分頁操作 // public IPage<Book> getPage(int currentPage, int pageSize) { // IPage iPage = new Page(currentPage,pageSize); // return bookDao.selectPage(iPage,null); //null是查詢條件 // }}

④測試:

import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.company.domain.Book; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest;@SpringBootTest public class IBookServiceTest {// 業務層對象@Autowiredprivate IBookService iBookService;@Testvoid testGetById(){//單純這樣的話,會輸出一個日志(因為我們開啟了MP運行日志),也能看我們查找的數據iBookService.getById(10086);//這樣的話,我們看數據會更加清晰(前提是實體類要實現toString方法,getById返回的是一個Book對象)System.out.println( iBookService.getById(10086));}@Test //添加對象void testSave(){Book book = new Book(); // 這里采用的是主鍵自增,我們不用手動給主鍵賦值(數據庫默認的是雪花算法) // book.setId(10092);book.setBookName("信息技術");book.setStatue("優秀");iBookService.save(book);}@Test //修改對象void testUpdate(){Book book = new Book();book.setId(10086);book.setBookName("zhanghangzhang");iBookService.updateById(book);}@Test //刪除對象void testDelete(){iBookService.removeById(10093);//通過id刪除}@Test //得到全部對象void testGetAll(){System.out.println( iBookService.list()); //給null查全部}@Test //分頁 單純運行這個是不行的,需要寫一個配置類(攔截器)void testGetPage(){IPage<Book> page = new Page<Book>(2,5);iBookService.page(page);//這樣也能輸出,是因為我們配置了運行日志} }

總結

以上是生活随笔為你收集整理的SpringBoot中业务层标准开发和快速开发(大全)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。