-
lambda條件構造器(類似mp條件構造器,防誤寫)
lambda條件構造器使用場景:
不需要我們手動在構造條件時去書寫字段名稱。
lambda條件構造器使用方法:
lambda條件構造器的創(chuàng)建有3種方式
1、通過查詢構造器QueryWrapper創(chuàng)建
2、通過new直接創(chuàng)建lambda條件構造器
3、通過構造器工具類Wrappers創(chuàng)建(此時需要泛型)
例2:
4、3.0.7新增的創(chuàng)建lambda條件構造器,通過LambdaQueryChainWrapper,并且需要一個Mapper接口作為參數(shù)(通過源碼可以,它是對普通查詢構造器的再次封裝,源碼中仍然是通過Mapper接口去調用)。
查看全部 -
簡單的內容還是以mp支持的默認方法比較合算,如果需要特定支持在考慮去自定義sql
查看全部 -
Java8時間類
查看全部 -
查詢帶夸號
查看全部 -
其他以條件構造器的方法
1、selectMap:List集合的泛型不再是實體,而是map集合。其中key表示字段名,value表示字段值。
使用場景1:當實體類屬性非常多時,不易查看。如果返回的是一個實體類,那么即使我們設定了返回字段,那么它的值為null,但是屬性仍然存在。如果返回的是Map類型,當指定了返回字段時,那么沒返回的就不會存在。
使用場景2:當返回的不是一條一條記錄時,也就是返回的字段不在實體類屬性中,比如一些統(tǒng)計,像平均值,最大值,最小值這樣的。
2、selectObject:List集合的泛型不再是實體,而是Object,只返回第一個字段的值。其他的會被舍棄。
使用場景:只返回一列時可以使用它。
3、selectCount:查詢符合條件的總記錄數(shù)的。
注意:使用它時,就不能指定返回的列了,因為它會在后面拼接COUNT(1)。
4、selectOne:查詢符合條件的數(shù)據(jù),只會返回一條數(shù)據(jù)。
注意:查詢的結果必須是一條或者查不到(多于1條就會報錯)。
查看全部 -
Alleq(Map<R,V> params)
使用方法:傳入一個map集合對象,就會按照等值進行操作。key為字段名稱,value為字段值。如果字段的值為null,那么sql就會拼接為is?null這種形式。
如果傳入的null,想要忽略掉,也就是不進行拼接,那么就傳入第二個參數(shù)為false。
allEq的第二種方法,參數(shù)1為過濾函數(shù),它是一個函數(shù)式接口。
上圖就是判斷name是不等于name,如果不等于就返回true,就會過濾掉,所以沒有拼接name。也可以判斷值。注意需要考慮類型的問題
查看全部 -
創(chuàng)建條件構造器時傳入實體對象
QueryWrapper一個參數(shù)的構造方法,如果傳入一個部不為null的對象,默認會進行進行等值比較,也就是where后拼接條件。
注意:通過entity參數(shù)生成的等值和QueryWrapper的條件構造方法生成的沒有任何關系。
舉例驗證:
注意:使用時要慎重,因為他們都會在sql中進行拼接。
使用場景:如果允許使用實體類去接受參數(shù),那么就可以不用調用條件構造器,而是直接使用構造方法傳入?yún)?shù)即可。
特殊操作:可以通過在實體類上添加注解,指定該屬性使用那種操作,默認使用等值。
SqlCondition類:定義了一些常量,包括等值、不等于、like、左邊like、右邊like。
如果提供的常量無法滿足需求,就可以自己在注解中編寫常量表達式,例如小于。
查看全部 -
條件構造器(abstractWrapper)中?condition(構造的方法的boolean類型參數(shù)) 作用。
如下:like方法調用重載的方法,重載方法中第一個參數(shù)。
作用:該條件是否加入最后生成的sql中。
使用方法:如果為true就加入,如果false就不加入。
使用場景:類似于動態(tài)的sql拼接。
傳統(tǒng)使用:
mp方式:
查看全部 -
basemapper 常用注解 看文檔查看全部
-
select不列出全部字段
select(String ...columns)
如果返回的字段數(shù)量很多,此時采用如下的select,也可以放置在后面。
select(Class<T> entityClass,Predicate<TableFieldInfo> predicate)
第一個參數(shù)為實體類對象。第二個參數(shù)相當于排除返回的字段。
查看全部 -
非and開頭的條件構造器:nested()
In條件構造器:In(column,Collection)
last條件構造器:last(sql)。注意:有sql注入風險。確保參數(shù)沒有風險再使用。
查看全部 -
and括號條件構造器:and()
ort括號條件構造器:or()
查看全部 -
Mysql函數(shù)
date_format(日期,'格式'):將日期按照格式進行插入或者返回。例如:date_format(now(),'%Y-%m-%d')。
動態(tài)條件構造器:apply。范圍條件構造器:insql。
注意:如果{0}替換為實際值,可能會造成sql注入。
查看全部 -
BaseMapper以條件構造器(Wrapper)為參數(shù)的查詢方法
AbstractWrapper抽象類:提供了很多條件構造器。
List<T> selectList(@Param(Constans.WRAPPER) Wrapper<T> queryWrapper):使用場景:對于一些有特殊條件的查詢,比如模糊查詢、條件查詢等。使用方法:QueryWrapper為查詢條件構造器,它是AbstractWrapper的一個子類。生成條件構造器方式一,QueryWrapper<T> queryWrapper=new QueryWrapper<T>();方式二QueryWrapper<T> query=Wrappers.<T>query();
注意:條件構造器AbstractWrapper的條件構造器方法key都為數(shù)據(jù)表字段,value為實際值。例如:like(Column,value)、gt(Column,value)等。
模糊條件構造器:like。小于條件構造器:lt。
范圍條件構造器:between。非空條件構造器:isNotNull。
模糊右通配符條件構造器:likeRight。或條件構造器:or。
大于等于條件構造器:ge。升序條件構造器:orderAsc。
降序條件構造器:orderDesc。
查看全部 -
普通查詢:使用方式為實現(xiàn)BaseMapper<T>接口對象調用該方法。
T?selectById(Serializable id):使用場景為通過主鍵查詢,只要該主鍵類型實現(xiàn)了Serialzable接口即可。
2、List<T> selectBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList):使用場景為通過主鍵的集合去批量查詢,前提主鍵的類型實現(xiàn)了Serializable接口。
3、List<T> selectByMap(@Param(Constants.COLUMN_MAP) Map<String,Object> columnMap):使用場景為傳入一個Map集合,key為表字段,value為表字段值。
注意:Map的key為數(shù)據(jù)表的字段名,不是實體類屬性名。
查看全部
舉報