當(dāng)前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
SpringBoot中业务层标准开发和快速开发(大全)
生活随笔
收集整理的這篇文章主要介紹了
SpringBoot中业务层标准开发和快速开发(大全)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
? 可以對照數(shù)據(jù)層開發(fā)學(xué)習(xí):
http://t.csdn.cn/dE36W
一、業(yè)務(wù)層標(biāo)準(zhǔn)開發(fā)
首先要說明一下,Service層接口定義和數(shù)據(jù)層接口定義有較大的區(qū)別
selectByUserNameAndPassword(String username, String password);
上面這一條語句著重于數(shù)據(jù),一目了然,是數(shù)據(jù)的
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(); // 當(dāng)前頁碼值, 每頁顯示數(shù)IPage<Book> getPage(int currentPage, int pageSize); }? ? ?通過這個實現(xiàn)數(shù)據(jù)庫的操作 ?里面有數(shù)據(jù)庫中各種各樣的操作?
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.company.domain.Book; import org.apache.ibatis.annotations.Mapper;@Mapper //通過這個實現(xiàn)數(shù)據(jù)庫的操作 里面有數(shù)據(jù)庫中各種各樣的操作 public interface BookDao extends BaseMapper<Book> {//指定泛型才能知道操作誰}②實體類:
//@Getter所有的get方法 //@Setter所有的set方法 //@NoArgsConstructor 無參構(gòu)造 //@AllArgsConstructor//全部的構(gòu)造@Data //get+set+toString+hashcode+equals 但是沒有構(gòu)造方法 @TableName(value = "t_book") public class Book {// 這里的屬性名 要和數(shù)據(jù)庫表中的屬性名一致,要不然最終的查詢結(jié)果是null // 將數(shù)據(jù)庫中的結(jié)果對此變量名進行注入@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層:? 對接口中的方法進行調(diào)用
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 //業(yè)務(wù)層開發(fā)注解 定義成業(yè)務(wù)層對應(yīng)的bean public class BookServiceImpl implements BookService {@Autowiredprivate BookDao bookDao;@Overridepublic Boolean save(Book book) {//bookDao.insert(book)返回的是影響的行計數(shù) 我們讓他>0,就說明有影響的數(shù)據(jù),就返回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說明查詢的時候沒有條件,那這就是 查詢?nèi)繑?shù)據(jù)}@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 { // 業(yè)務(wù)層對象@Autowiredprivate BookService bookService;@Testvoid testGetById(){//單純這樣的話,會輸出一個日志(因為我們開啟了MP運行日志),也能看我們查找的數(shù)據(jù)bookService.getById(10086);//這樣的話,我們看數(shù)據(jù)會更加清晰(前提是實體類要實現(xiàn)toString方法,getById返回的是一個Book對象)System.out.println( bookService.getById(10086));}@Test //添加對象void testSave(){Book book = new Book(); // 這里采用的是主鍵自增,我們不用手動給主鍵賦值(數(shù)據(jù)庫默認(rèn)的是雪花算法) // book.setId(10092);book.setBookName("信息技術(shù)");book.setStatue("優(yōu)秀");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); //這樣也能輸出,是因為我們配置了運行日志}}二、業(yè)務(wù)層快速開發(fā)
①接口:在這里定義方法
import com.baomidou.mybatisplus.extension.service.IService; import com.company.domain.Book;//業(yè)務(wù)層快速開發(fā) public interface IBookService extends IService<Book> { //我們在數(shù)據(jù)層是extends BaseMapper<Book> 和這里不太一樣 不要混了 // 如果我們需要的方法他們沒有提供,我們可以自己在這里寫,之后再IBookServiceImpl中進行實現(xiàn) // @Override // Boolean save(Book book); 如果這個地方報錯了,就說明重名了,我們就換一個名字 // 這樣就避免了我們手寫方法和他們的方法重合了 } @Mapper //通過這個實現(xiàn)數(shù)據(jù)庫的操作 里面有數(shù)據(jù)庫中各種各樣的操作 public interface BookDao extends BaseMapper<Book> {//指定泛型才能知道操作誰}②實體類:
//@Getter所有的get方法 //@Setter所有的set方法 //@NoArgsConstructor 無參構(gòu)造 //@AllArgsConstructor//全部的構(gòu)造@Data //get+set+toString+hashcode+equals 但是沒有構(gòu)造方法 @TableName(value = "t_book") public class Book {// 這里的屬性名 要和數(shù)據(jù)庫表中的屬性名一致,要不然最終的查詢結(jié)果是null // 將數(shù)據(jù)庫中的結(jié)果對此變量名進行注入@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層:? 對接口中的方法進行調(diào)用
//業(yè)務(wù)層快速開發(fā) @Service //定義bean ; BookDao是通過這個實現(xiàn)數(shù)據(jù)庫的操作 里面有數(shù)據(jù)庫中各種各樣的操作;Book是實體類 //IBookService 是提供的業(yè)務(wù)層接口 public class IBookServiceImpl extends ServiceImpl<BookDao, Book> implements IBookService {// 先比較與標(biāo)準(zhǔn)開發(fā),這里不需要自己寫基本的增刪改查了(這就是一個優(yōu)勢,提高了效率) // 如果我們需要的方法他們沒有,我們?nèi)匀灰诮涌谥卸x,然后自己寫 // 具體怎么寫,就是回歸到我們上面的標(biāo)準(zhǔn)開發(fā)了 // 但是這些方法要在接口中進行實現(xiàn)!!!!!否則就會報錯!!!!! // @Autowired // private BookDao bookDao; // @Override // public Boolean save(Book book) { // //bookDao.insert(book)返回的是影響的行計數(shù) 我們讓他>0,就說明有影響的數(shù)據(jù),就返回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說明查詢的時候沒有條件,那這就是 查詢?nèi)繑?shù)據(jù) // } // // @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 {// 業(yè)務(wù)層對象@Autowiredprivate IBookService iBookService;@Testvoid testGetById(){//單純這樣的話,會輸出一個日志(因為我們開啟了MP運行日志),也能看我們查找的數(shù)據(jù)iBookService.getById(10086);//這樣的話,我們看數(shù)據(jù)會更加清晰(前提是實體類要實現(xiàn)toString方法,getById返回的是一個Book對象)System.out.println( iBookService.getById(10086));}@Test //添加對象void testSave(){Book book = new Book(); // 這里采用的是主鍵自增,我們不用手動給主鍵賦值(數(shù)據(jù)庫默認(rèn)的是雪花算法) // book.setId(10092);book.setBookName("信息技術(shù)");book.setStatue("優(yōu)秀");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);//這樣也能輸出,是因為我們配置了運行日志} }總結(jié)
以上是生活随笔為你收集整理的SpringBoot中业务层标准开发和快速开发(大全)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小破练习-嵌套循环及列表
- 下一篇: 思夜