最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java實(shí)現(xiàn)通用分頁(后端)

 更新時(shí)間:2023年12月05日 16:40:42   作者:Ar.小白  
這篇文章主要介紹了java實(shí)現(xiàn)通用分頁(后端)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

1.通用分頁是什么?

Java通用分頁是指在Java編程語言中實(shí)現(xiàn)的一種通用分頁功能。它通常用于在Java Web應(yīng)用中展示大量數(shù)據(jù)或查詢結(jié)果,并將其分頁顯示給用戶。

在Java中,通常會(huì)使用以下幾個(gè)組件或類來實(shí)現(xiàn)通用分頁功能:

1. 分頁查詢:通常會(huì)通過數(shù)據(jù)庫查詢或其他方式獲取大量數(shù)據(jù),然后使用分頁查詢技術(shù)來獲取特定頁的數(shù)據(jù)。這通常包括設(shè)置每頁顯示的數(shù)據(jù)數(shù)量、當(dāng)前頁碼和排序規(guī)則等參數(shù),然后根據(jù)參數(shù)篩選和返回相應(yīng)頁的數(shù)據(jù)。

2. 頁面展示:通用分頁需要在前端頁面上展示分頁數(shù)據(jù),可以使用Java的模板引擎或前端框架來實(shí)現(xiàn)。在頁面上通常會(huì)顯示當(dāng)前頁的數(shù)據(jù)列表、頁碼導(dǎo)航、上一頁和下一頁按鈕等控件,以便用戶瀏覽和導(dǎo)航不同頁的數(shù)據(jù)。

3. 分頁邏輯:在Java中,通常會(huì)使用一些邏輯代碼或工具類來處理分頁邏輯,例如計(jì)算總頁數(shù)、當(dāng)前頁起始索引、數(shù)據(jù)轉(zhuǎn)換等。這些代碼可以根據(jù)每頁顯示的數(shù)據(jù)數(shù)量、總數(shù)據(jù)量和當(dāng)前頁碼等來計(jì)算所需的數(shù)據(jù)范圍,并在數(shù)據(jù)庫查詢中使用相應(yīng)的參數(shù)。

4. 控制器和路由:在Java Web應(yīng)用中,控制器和路由負(fù)責(zé)處理用戶的請(qǐng)求,并將相應(yīng)的數(shù)據(jù)傳遞給前端頁面。在通用分頁中,控制器會(huì)接收用戶請(qǐng)求的頁碼等參數(shù),并將相應(yīng)頁的數(shù)據(jù)查詢結(jié)果傳遞給頁面展示部分進(jìn)行渲染。

總體而言,Java通用分頁是通過數(shù)據(jù)庫查詢、分頁邏輯、頁面展示和控制器等組件配合工作,實(shí)現(xiàn)在Java Web應(yīng)用中對(duì)大量數(shù)據(jù)進(jìn)行分頁顯示的一種功能。它可以提升用戶體驗(yàn)、優(yōu)化數(shù)據(jù)加載性能,并方便用戶瀏覽和導(dǎo)航大數(shù)據(jù)集。

通用分頁通常會(huì)包括如下元素:

  • 1. 頁面切換按鈕或鏈接:用于在不同頁面之間切換。
  • 2. 當(dāng)前頁碼信息:顯示當(dāng)前所在的頁面。
  • 3. 總頁面數(shù)信息:顯示內(nèi)容總共被分成了多少頁。
  • 4. 上一頁和下一頁按鈕或鏈接:用于直接跳轉(zhuǎn)到上一頁或下一頁。
  • 5. 條目計(jì)數(shù)信息:顯示當(dāng)前頁面的內(nèi)容數(shù)量。

2.通用分頁的作用

Java通用分頁在Java Web應(yīng)用中具有以下幾個(gè)作用:

  • 1. 改善用戶體驗(yàn):通用分頁可以將大量數(shù)據(jù)分頁展示,避免一次性加載大量數(shù)據(jù)導(dǎo)致頁面加載過慢的問題。通過分頁顯示,用戶可以更快速地獲取所需信息,提升用戶體驗(yàn)。
  • 2. 優(yōu)化數(shù)據(jù)加載性能:通過分頁查詢,Java通用分頁可以減少每次數(shù)據(jù)查詢返回的數(shù)據(jù)量,減輕服務(wù)器的負(fù)載壓力,降低數(shù)據(jù)庫查詢的開銷,提高數(shù)據(jù)檢索的效率和性能。
  • 3. 方便數(shù)據(jù)導(dǎo)航和瀏覽:Java通用分頁提供了方便的導(dǎo)航和瀏覽功能,用戶可以通過頁碼導(dǎo)航、上一頁和下一頁按鈕等進(jìn)行頁面切換,快速瀏覽各個(gè)分頁的數(shù)據(jù)內(nèi)容。
  • 4. 防止數(shù)據(jù)溢出:當(dāng)需要展示的數(shù)據(jù)量非常大時(shí),如果不使用分頁,可能會(huì)導(dǎo)致內(nèi)存溢出或網(wǎng)絡(luò)傳輸超時(shí)等問題。通過使用Java通用分頁,將數(shù)據(jù)分批加載和展示,可以避免這種情況的發(fā)生。
  • 5. 支持可配置性:Java通用分頁通常提供了一些可配置的參數(shù),如每頁顯示的數(shù)據(jù)數(shù)量、排序規(guī)則等,允許用戶根據(jù)需求進(jìn)行個(gè)性化配置,滿足不同用戶對(duì)分頁展示的需求。

總之,Java通用分頁在Java Web應(yīng)用中起到提升用戶體驗(yàn)、優(yōu)化數(shù)據(jù)加載性能、支持?jǐn)?shù)據(jù)導(dǎo)航和瀏覽等作用。它使得展示大量數(shù)據(jù)更加高效、靈活,并能夠滿足用戶對(duì)數(shù)據(jù)展示的需求。

3. 通用分頁的優(yōu)缺點(diǎn)

Java通用分頁的優(yōu)點(diǎn):

  • 1. 提高用戶體驗(yàn):通用分頁可以將大量數(shù)據(jù)劃分為多個(gè)頁面,避免加載過長的頁面,提高頁面加載速度,讓用戶能夠快速瀏覽和查找所需內(nèi)容,提升用戶體驗(yàn)。
  • 2. 優(yōu)化性能:通過分頁查詢,可以減少一次性加載大量數(shù)據(jù)的開銷,節(jié)省內(nèi)存和網(wǎng)絡(luò)資源,提高數(shù)據(jù)查詢和展示性能,減輕服務(wù)器壓力。
  • 3. 方便導(dǎo)航和瀏覽:通用分頁提供了直觀的導(dǎo)航和瀏覽方式,用戶可以通過上一頁和下一頁按鈕或頁碼導(dǎo)航快速切換頁面,瀏覽不同頁的內(nèi)容,方便數(shù)據(jù)的導(dǎo)航和查找。
  • 4. 可配置性強(qiáng):通用分頁通常支持配置每頁顯示的數(shù)據(jù)量、排序規(guī)則等參數(shù),可以根據(jù)具體需求進(jìn)行個(gè)性化配置,滿足不同用戶的需求。
  • 5. 可復(fù)用性高:Java通用分頁的實(shí)現(xiàn)一般是基于模塊化和可擴(kuò)展的原則,通過封裝和抽象,可以將通用分頁的功能模塊復(fù)用于不同的應(yīng)用場(chǎng)景。

Java通用分頁的缺點(diǎn):

  • 1. 數(shù)據(jù)一致性:當(dāng)數(shù)據(jù)在分頁過程中發(fā)生變化時(shí),例如新增或刪除了一部分?jǐn)?shù)據(jù),會(huì)導(dǎo)致分頁結(jié)果的數(shù)據(jù)不一致性,需要注意及時(shí)更新分頁數(shù)據(jù)以保持一致性。
  • 2. 數(shù)據(jù)查詢效率:在某些場(chǎng)景下,特別是在數(shù)據(jù)量非常大的情況下,分頁查詢可能會(huì)對(duì)數(shù)據(jù)庫性能產(chǎn)生較大的影響,因?yàn)槊看尾樵冎环祷夭糠謹(jǐn)?shù)據(jù),可能需要多次查詢才能得到完整的結(jié)果。
  • 3. 分頁參數(shù)管理:在應(yīng)用中需要合理管理分頁的參數(shù),特別是上一頁、下一頁的狀態(tài)和頁碼等信息,這需要一定的編碼和邏輯控制,否則可能導(dǎo)致分頁顯示混亂或錯(cuò)誤。

需要根據(jù)具體應(yīng)用場(chǎng)景和需求綜合考慮這些優(yōu)缺點(diǎn),并選擇合適的實(shí)現(xiàn)方式以達(dá)到最佳的效果和用戶體驗(yàn)。

4.通用分頁的核心思想

Java通用分頁的核心思想是將大量數(shù)據(jù)進(jìn)行分割,每次只返回部分?jǐn)?shù)據(jù),以便更好地展示和處理數(shù)據(jù)。

其主要的核心思想包括:

  • 1. 數(shù)據(jù)切片:將大量數(shù)據(jù)劃分為多個(gè)較小的數(shù)據(jù)塊或頁,每頁包含固定數(shù)量的數(shù)據(jù)。這樣可以減少一次性加載所有數(shù)據(jù)的壓力,提高數(shù)據(jù)的檢索和加載性能。
  • 2. 分頁參數(shù):定義和管理分頁的參數(shù),例如當(dāng)前頁碼、每頁顯示的數(shù)據(jù)量等。通過這些參數(shù),可以精確控制要返回的數(shù)據(jù)范圍。
  • 3. 數(shù)據(jù)導(dǎo)航:提供導(dǎo)航和切換不同頁的功能,讓用戶能夠方便地瀏覽和導(dǎo)航數(shù)據(jù)。通常會(huì)包括上一頁和下一頁按鈕、頁碼導(dǎo)航等控件,用于切換不同頁的數(shù)據(jù)。
  • 4. 數(shù)據(jù)查詢和過濾:根據(jù)分頁參數(shù),對(duì)數(shù)據(jù)進(jìn)行查詢和篩選,只返回當(dāng)前頁的數(shù)據(jù)。這可以通過數(shù)據(jù)庫查詢語句的limit和offset等關(guān)鍵字來實(shí)現(xiàn),限制返回的數(shù)據(jù)量和數(shù)據(jù)起始位置。
  • 5. 數(shù)據(jù)展示和渲染:將查詢到的分頁數(shù)據(jù)進(jìn)行呈現(xiàn)和展示,可以使用Java的模板引擎或前端框架來實(shí)現(xiàn)數(shù)據(jù)的渲染和展示。

通過這些核心思想,Java通用分頁可以更好地控制數(shù)據(jù)的加載和展示,提高用戶體驗(yàn)和數(shù)據(jù)處理的效率。它允許大數(shù)據(jù)集的分頁展示,并提供了靈活的導(dǎo)航和配置選項(xiàng),滿足不同用戶對(duì)數(shù)據(jù)瀏覽需求的需求。

5.通用分頁實(shí)例

書籍實(shí)體類:

package com.liao.enity;
 
public class Book {
	private int bid;
	private String bname;
	private float price;
 
	@Override
	public String toString() {
		return "Book [bid=" + bid + ", bname=" + bname + ", price=" + price + "]";
	}
 
	public int getBid() {
		return bid;
	}
 
	public void setBid(int bid) {
		this.bid = bid;
	}
 
	public String getBname() {
		return bname;
	}
 
	public void setBname(String bname) {
		this.bname = bname;
	}
 
	public float getPrice() {
		return price;
	}
 
	public void setPrice(float price) {
		this.price = price;
	}
 
}

封裝pageBean類:

package com.liao.utils;
 
/**
 * 分頁工具類
 *
 */
public class PageBean {
 
	private int page = 1;// 頁碼
 
	private int rows = 10;// 頁大小
 
	private int total = 0;// 總記錄數(shù)
 
	private boolean pagination = true;// 是否分頁
 
	public PageBean() {
		super();
	}
 
	public int getPage() {
		return page;
	}
 
	public void setPage(int page) {
		this.page = page;
	}
 
	public int getRows() {
		return rows;
	}
 
	public void setRows(int rows) {
		this.rows = rows;
	}
 
	public int getTotal() {
		return total;
	}
 
	public void setTotal(int total) {
		this.total = total;
	}
 
	public void setTotal(String total) {
		this.total = Integer.parseInt(total);
	}
 
	public boolean isPagination() {
		return pagination;
	}
 
	public void setPagination(boolean pagination) {
		this.pagination = pagination;
	}
 
	/**
	 * 獲得起始記錄的下標(biāo)
	 * 
	 * @return
	 */
	public int getStartIndex() {
		return (this.page - 1) * this.rows;
	}
 
	@Override
	public String toString() {
		return "PageBean [page=" + page + ", rows=" + rows + ", total=" + total + ", pagination=" + pagination + "]";
	}
 
}

書籍“分頁模糊查詢所有”方法

package com.liao.Dao;
 
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
 
import org.junit.Test;
 
import com.liao.enity.Book;
import com.liao.utils.DBAccess;
import com.liao.utils.PageBean;
import com.liao.utils.StringUtils;
/**
 * 傳統(tǒng)dao方法
 *	重復(fù)代碼:
 * Connection conn = DBAccess.getConnection();
 * CallableStatement ps = conn.prepareCall(sql);
   ResultSet rs = ps.executeQuery();
 * 
 * 流程重復(fù):
 * 1.需要?jiǎng)?chuàng)建數(shù)據(jù)庫表對(duì)應(yīng)的實(shí)體類對(duì)象
 * 2.將查詢出來的結(jié)果集添加到實(shí)例化對(duì)象屬性中
 * 3.已經(jīng)被填充的實(shí)體對(duì)象,加入集合中
 * while(rs.next()) {
			Book b = new Book();
			b.setBid(rs.getInt("bid"));
			b.setBname(rs.getString("bname"));
			b.setPrice(rs.getFloat("price"));
			list.add(b);
		}
 * 
 * 
 * 
 * @author Administrator
 *
 */
public class BookDao extends BaseDoa<Book>{
	/**
	 * 查詢Dao方法 優(yōu)化前
	 * @param book
	 * @param pagebean
	 * @return
	 * @throws Exception
	 */
	public List<Book> list1(Book book,PageBean pagebean) throws Exception{
		List<Book> list = new ArrayList<Book>();
		//獲取連接
		Connection conn = DBAccess.getConnection();
		//查詢sql語句
		String sql ="select * from t_mvc_book where 1=1 ";
		String bname = book.getBname();
		if(StringUtils.isNotBlank(bname)) {
			sql += "and bname like '%"+bname+"%'";
		}
		CallableStatement ps = conn.prepareCall(sql);
		ResultSet rs = ps.executeQuery();
		while(rs.next()) {
			Book b = new Book();
			b.setBid(rs.getInt("bid"));
			b.setBname(rs.getString("bname"));
			b.setPrice(rs.getFloat("price"));
			list.add(b);
		}
		return list;
	}
 
	
	
	/**
	 * 優(yōu)化后
	 * @param book
	 * @param pagebean
	 * @return
	 * @throws Exception
	 */
	public List<Book> list2(Book book,PageBean pagebean) throws Exception{
		//查詢sql語句
		String sql ="select * from t_mvc_book where 1=1 ";
		String bname = book.getBname();
		if(StringUtils.isNotBlank(bname)) {
			sql += "and bname like '%"+bname+"%'";
		}
		return super.executeQuery(sql, Book.class, pagebean);
		
	}
	
 
	
	public static void main(String[] args) throws Exception {
		BookDao bookDao = new BookDao();
		Book book = new Book();
		book.setBname("圣墟");
		PageBean pagebean = new PageBean();
		List<Book> list = bookDao.list2(book, pagebean);
		//查詢第二頁
		pagebean.setPage(2);
		for (Book b : list) {
			System.out.println(b);
		}
//		bookDao.list2(book, pagebean);
//		查詢總記錄數(shù)
		System.out.println(pagebean);
	}
	
 
	
	
	
}

 封裝baseDao通用分頁模糊查詢的方法

package com.liao.Dao;
 
import java.lang.reflect.Field;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
 
import com.liao.enity.Book;
import com.liao.utils.DBAccess;
import com.liao.utils.PageBean;
import com.liao.utils.StringUtils;
/**
 */
public class BaseDoa<T> {
	/**
	 * 通用Dao 利用反射機(jī)制
	 * @param sql 
	 * @param cls
	 * @param pagebean
	 * @return
	 * @throws Exception
	 */
	public List<T> executeQuery(String sql,Class cls,PageBean pagebean) throws Exception{
		List<T> list = new ArrayList<T>();
		
		Connection conn = null;
	
		CallableStatement ps = null;
		ResultSet rs = null;
//		select * from t_mvc_book where bname LIKE '%圣墟%'
//		SELECT count(1) as n from (SELECT * FROM t_mvc_book WHERE bname LIKE '%圣墟%') t
//		select * from t_mvc_book where bname LIKE '%圣墟%' LIMIT 0,10
		if(pagebean !=null && pagebean.isPagination()) {
			String countSQL = getcount(sql);
			conn = DBAccess.getConnection();
			 ps = conn.prepareCall(countSQL);
			 rs = ps.executeQuery();
			 
			 if(rs.next()){
				 pagebean.setTotal(rs.getObject("n").toString());
				 
			 }
			 
			String pageSQL = getpage(sql,pagebean); 
			conn = DBAccess.getConnection();
			 ps = conn.prepareCall(pageSQL);
			 rs = ps.executeQuery();
			
			
		}else {
			conn = DBAccess.getConnection();
			 ps = conn.prepareCall(sql);
			 rs = ps.executeQuery();
		}
		
		
		
		
		
		
		
		while(rs.next()) {
			T t =(T) cls.newInstance();
			Field[] fields = cls.getDeclaredFields();
			for (Field f : fields) {
				f.setAccessible(true);
				f.set(t, rs.getObject(f.getName()));
			
			}
			list.add(t);
			
			
		}
		return list;
	}
 
	
	
	/**
	 *  拼接最終展示數(shù)據(jù)
	 * @param sql 原生態(tài)sql語句
	 * @param pagebean
	 * @return
	 */
	private String getpage(String sql, PageBean pagebean) {
		
		return sql+"LIMIT "+pagebean.getStartIndex()+","+pagebean.getRows();
	}
	/**
	 * 拼接出查詢符合條件的總記錄數(shù)sql
	 * @param sql
	 * @return
	 */
	private String getcount(String sql) {
		// TODO Auto-generated method stub
		return "SELECT count(1) as n from ("+sql+") t";
	}
}

運(yùn)行結(jié)果:

使用工具: MySQL數(shù)據(jù)庫,eclipse

6.單元測(cè)試框架JUnit4

JUnit是一個(gè)廣泛使用的Java單元測(cè)試框架,其最新版本為JUnit 5。

JUnit 4提供了一組基于注解的API來編寫和運(yùn)行單元測(cè)試。以下是JUnit 4的一些主要特點(diǎn)和用法:

  • 1. 定義測(cè)試方法:通過在測(cè)試方法上添加@Test注解,可以將普通的Java方法標(biāo)記為測(cè)試方法,JUnit會(huì)自動(dòng)執(zhí)行這些測(cè)試方法并驗(yàn)證預(yù)期的行為和結(jié)果。
  • 2. 設(shè)置測(cè)試前置條件:@Before和@BeforeClass注解用于在每個(gè)測(cè)試方法和測(cè)試類之前執(zhí)行指定的方法,可以用來初始化測(cè)試環(huán)境或加載測(cè)試數(shù)據(jù)。
  • 3. 設(shè)置測(cè)試后置條件:@After和@AfterClass注解用于在每個(gè)測(cè)試方法和測(cè)試類之后執(zhí)行指定的方法,可以用來清理臨時(shí)數(shù)據(jù)或資源。
  • 4. 斷言和驗(yàn)證:JUnit提供了一組斷言方法(如assertEquals、assertTrue、assertFalse等)來驗(yàn)證實(shí)際結(jié)果與預(yù)期結(jié)果是否一致。如果斷言失敗,測(cè)試將會(huì)被標(biāo)記為失敗。
  • 5. 異常測(cè)試:通過在測(cè)試方法上添加@Test注解,并指定期望拋出的異常類型,可以對(duì)拋出異常的情況進(jìn)行測(cè)試,確保代碼在異常條件下能夠正確處理。
  • 6. 參數(shù)化測(cè)試:通過使用@RunWith(Parameterized.class)注解和@Parameters注解,可以支持參數(shù)化測(cè)試,即對(duì)同一個(gè)測(cè)試方法進(jìn)行多組參數(shù)的測(cè)試。
  • 7. 忽略測(cè)試:通過在測(cè)試方法上添加@Ignore注解,可以標(biāo)記某個(gè)測(cè)試方法為忽略,JUnit將不會(huì)執(zhí)行該測(cè)試方法。

除了以上的功能,JUnit 4還支持測(cè)試套件(@RunWith(Suite.class))、超時(shí)設(shè)置(@Test(timeout = xxx))、測(cè)試規(guī)則(@Rule)等高級(jí)特性,可以進(jìn)行更靈活、高效的單元測(cè)試。

下面是一個(gè)簡(jiǎn)單的JUnit 4測(cè)試類的示例:

 
import org.junit.Test;
import static org.junit.Assert.*;
 
public class MyTest {
    @Test
    public void testAddition() {
        int result = 2 + 2;
        assertEquals(4, result);
    }
}
```

在這個(gè)示例中,我們使用@Test注解將方法testAddition標(biāo)記為測(cè)試方法,并使用assertEquals斷言來驗(yàn)證加法的結(jié)果。

以上是一些JUnit 4的主要特點(diǎn)和用法,JUnit 4是Java開發(fā)中非常常用的單元測(cè)試框架,它可以幫助開發(fā)者編寫可靠的、自動(dòng)化的測(cè)試代碼來驗(yàn)證程序的正確性,提高代碼質(zhì)量和可維護(hù)性。

 eclipse中使用JUnit4

第一步:選擇并且需要添加JUnit4的項(xiàng)目

操作步驟如下:

第二步: 

 

第三步:

保存并且關(guān)閉即可完成

為什么是JUnit4不是JUnit5?

以下是JUnit 4和JUnit 5的一些主要對(duì)比:

  • 編程模型:JUnit 4使用基于注解的編程模型,而JUnit 5引入了基于注解與基于擴(kuò)展模型的組合。JUnit 5引入了新的注解和接口,如@Test、@BeforeAll、@AfterAll 等注解,以及TestInstance.Lifecycle等接口,幫助開發(fā)者更靈活地編寫測(cè)試代碼。
  • 擴(kuò)展性:JUnit 5提供了更靈活的擴(kuò)展機(jī)制,支持自定義擴(kuò)展,編寫測(cè)試擴(kuò)展可以實(shí)現(xiàn)更強(qiáng)大的測(cè)試功能,如參數(shù)化測(cè)試、條件執(zhí)行等。
  • 參數(shù)化測(cè)試:JUnit 4中參數(shù)化測(cè)試是通過使用特定的庫來實(shí)現(xiàn),而JUnit 5內(nèi)置了參數(shù)化測(cè)試的支持,提供了更簡(jiǎn)潔、易讀的語法。JUnit 5的參數(shù)化測(cè)試使用@ParameterizedTest、@ValueSource等注解,更方便地進(jìn)行參數(shù)化測(cè)試。
  • 條件執(zhí)行:JUnit 5引入了@EnabledXxx與@DisabledXxx注解,可以根據(jù)條件更靈活地決定是否執(zhí)行某個(gè)測(cè)試方法或整個(gè)測(cè)試類。
  • 斷言庫:JUnit 5支持使用不同的斷言庫,不再限定于JUnit 4的斷言方法。JUnit 5內(nèi)置的斷言方法更加靈活、易于使用,并提供了額外的功能,如展示自定義失敗消息、懶加載、對(duì)比器等。
  • 兼容性 :JUnit 4和JUnit 5的測(cè)試代碼在語法上是不兼容的。JUnit 5是作為獨(dú)立的框架,并且允許與JUnit 4的測(cè)試代碼共存,但需要使用適配器或運(yùn)行器來運(yùn)行JUnit 4的測(cè)試。
  • 并行執(zhí)行:JUnit 5支持并行執(zhí)行測(cè)試??梢酝ㄟ^在測(cè)試類上添加@Execution注解來指定并行執(zhí)行的策略。

總的來說,JUnit 5在擴(kuò)展性、參數(shù)化測(cè)試和條件執(zhí)行等方面改進(jìn)了JUnit 4,提供了更多的靈活性和功能。它還提供了更簡(jiǎn)潔、易用的斷言方法和更好的兼容性。無論使用JUnit 4還是JUnit 5,都能夠有效地進(jìn)行Java單元測(cè)試,具體選擇取決于項(xiàng)目需求和個(gè)人喜好。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • commons fileupload實(shí)現(xiàn)文件上傳的實(shí)例代碼

    commons fileupload實(shí)現(xiàn)文件上傳的實(shí)例代碼

    這篇文章主要介紹了commons fileupload實(shí)現(xiàn)文件上傳的實(shí)例代碼,包括文件上傳的原理分析等相關(guān)知識(shí)點(diǎn),本文給大家介紹的非常詳細(xì),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧
    2016-10-10
  • LambdaQueryWrapper與QueryWrapper的使用方式

    LambdaQueryWrapper與QueryWrapper的使用方式

    這篇文章主要介紹了LambdaQueryWrapper與QueryWrapper的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • MyBatis獲取插入記錄的自增長字段值(ID)

    MyBatis獲取插入記錄的自增長字段值(ID)

    本文分步驟給大家介紹了MyBatis獲取插入記錄的自增長字段值的方法,在文中給大家提到了mybatis返回插入數(shù)據(jù)的自增長id,需要的朋友可以參考下
    2017-11-11
  • SpringBoot集成Swagger2實(shí)現(xiàn)Restful(類型轉(zhuǎn)換錯(cuò)誤解決辦法)

    SpringBoot集成Swagger2實(shí)現(xiàn)Restful(類型轉(zhuǎn)換錯(cuò)誤解決辦法)

    這篇文章主要介紹了SpringBoot集成Swagger2實(shí)現(xiàn)Restful(類型轉(zhuǎn)換錯(cuò)誤解決辦法),需要的朋友可以參考下
    2017-07-07
  • MyBatisX插件之domain文件生成不了問題

    MyBatisX插件之domain文件生成不了問題

    文章描述了在使用MyBatisX插件生成MyBatis的domain文件時(shí)遇到的問題,特別是在使用MyBatisX版本1.6.1和MySQL版本8.0.34的情況下,生成的domain文件不完整,作者通過勾選Model選項(xiàng)解決了這個(gè)問題,并分享了這一經(jīng)驗(yàn),希望能幫助其他遇到類似問題的用戶
    2025-01-01
  • 詳解Java的內(nèi)置異常以及創(chuàng)建自定義異常子類的方法

    詳解Java的內(nèi)置異常以及創(chuàng)建自定義異常子類的方法

    這篇文章主要介紹了詳解Java的內(nèi)置異常以及創(chuàng)建自定義異常子類的方法,是Java入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-09-09
  • Java圖形界面超實(shí)用使用教程

    Java圖形界面超實(shí)用使用教程

    在Java編程中圖形界面應(yīng)用程序是非常常見和重要的一部分,下面這篇文章主要給大家介紹了關(guān)于Java圖形界面的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • log4j配置失效日志中打印Debug信息問題

    log4j配置失效日志中打印Debug信息問題

    這篇文章主要介紹了log4j配置失效日志中打印Debug信息問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Springboot下使用Redis管道(pipeline)進(jìn)行批量操作

    Springboot下使用Redis管道(pipeline)進(jìn)行批量操作

    本文主要介紹了Spring?boot?下使用Redis管道(pipeline)進(jìn)行批量操作,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Java模擬微信來電提醒示例

    Java模擬微信來電提醒示例

    這篇文章主要為大家介紹了Java模擬微信來電提醒示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07

最新評(píng)論

固始县| 黄石市| 叶城县| 乐亭县| 盐津县| 集安市| 元阳县| 徐汇区| 清苑县| 镇平县| 丰县| 云龙县| 夏津县| 华安县| 沙坪坝区| 塔河县| 诸暨市| 江都市| 阳朔县| 安吉县| 永福县| 鹤壁市| 高唐县| 乌审旗| 龙江县| 镇赉县| 阳原县| 察隅县| 安义县| 梧州市| 黑河市| 石嘴山市| 理塘县| 林州市| 子长县| 双城市| 万源市| 通城县| 兰坪| 宜州市| 安仁县|