MyBatis-Plus實現條件查詢的三種格式例舉詳解

常規格式

常規格式即創建一個Wrapper的實現類QueryWrapper對象,將其傳給selectList方法內部

		QueryWrapper qw = new QueryWrapper();
		//lt是小於,id小於5
		qw.lt("id",5);
		List<User> users = userDao.selectList(qw);
		System.out.println(users);

qw中的兩個參數分別是數據庫中的字段名id,查詢的條件id<5。查詢結果:

鏈式編程格式

若是多個條件,即小於多少並且等於多少,那就要用到鏈式編程

		QueryWrapper qw = new QueryWrapper();
		//大於2小於5
		qw.lt("id",5).gt("id",2);
		List<User> users = userDao.selectList(qw);
		System.out.println(users);

查詢結果為:

lambda格式(推薦)

lambda格式又分為兩種形式。使用時必須帶上泛型

第一種仍然是使用QueryWrapper的對象

		QueryWrapper<User> qw = new QueryWrapper<User>();
		//lt是小於,id小於5
		qw.lambda().lt(User::getId,5);
		List<User> users = userDao.selectList(qw);
		System.out.println(users);

第二種就是直接使用LambdaQueryWrapper

		LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>();
		//2-5,即3,4
		lqw.lt(User::getId,5).gt(User::getId,2);
		//上面是並且,下面是或
		//lqw.lt(User::getId,2).or().gt(User::getId,5);
		List<User> users = userDao.selectList(lqw);
		System.out.println(users);

條件查詢null判定

你有沒有想過為什麼需要null判定?我們後端都是接收前端傳來的數據來進行條件查詢,並不是直接給個數據。

有這麼一個情景:我們都上網買過東西吧,右上角會有一個篩選的選項,裡面會有接受的最高價和最低價,我們並不是都會去填寫這些信息,那麼這些數據後端獲取的時候就為空瞭,這時候我們就需要判。

當然我們可以使用 if 來判斷,但是這樣就不太友好。lt和gt兩個方法都有兩種不同的重載方法,我們上面使用的是第一種。

  //模擬獲取前端的數據
		//UserQuery是User的繼承類,這樣既可以模仿id的上下限
        UserQuery uq = new UserQuery();
        uq.setId(7);
        uq.setId2(3);
        LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>();
        lqw.lt(null!=uq.getId(),User::getId, uq.getId())
				.gt(null!=uq.getId2(),User::getId, uq.getId2());
        List<User> users = userDao.selectList(lqw);
        System.out.println(users);

最終結果:

到此這篇關於MyBatis-Plus實現條件查詢的三種格式例舉詳解的文章就介紹到這瞭,更多相關MyBatis-Plus條件查詢內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: