Mybatis動態表名SQL解析器

2021-10-14 04:51:24 字數 847 閱讀 6775

水平分表的方式對大資料量表的優化是有一定作用的。但是從分布式的角度來講感覺並沒有削減當前庫的壓力,所以水平分表適合對大資料量表做優化。

水平分表基於表結構一直,根據某些字段劃分不同資料存在不同的表中,提高資料查詢的效率。例如一張龐大的訂單資訊表,可以根據訂單型別或者日期劃分為多個表,mybatis中使用動態表名***的方式動態指定目標表名稱進行查詢。

下面的示例,對替換目標cap_document_catalog表明自定義邏輯動態決定最終查詢的表名進行替換後查詢目標表資料

@configuration

public class mybatisplusconfig {

@bean

public paginationinterceptor paginationinterceptor() {

paginationinterceptor paginationinterceptor = new paginationinterceptor();

listsqlparserlist =new arraylist<>();

dynamictablenameparser dynamictablenameparser = new dynamictablenameparser();

dynamictablenameparser.settablenamehandlermap(new hashmap(2) {

{ put("cap_document_catalog", (metaobject, sql, tablename) -> {

// metaobject 可以獲取傳入引數,這裡實現你自己的動態規則

system.out.p

MyBatis構建sql時動態傳入表名以及欄位名

o.statecode as statuscode,count as statusnum from where o.doctorcode and to date yyyy mm dd and to date yyyy mm dd 1 1group by o.statecode 這是個很簡單的查詢,其...

Mybatis 動態表名,插入資料

int insert param tablename string tablename param user user user mybatis xml id insert parametertype com.ihuaqiang.spring.bean.user insert into id,nam...

Mybatis之 和 區別及動態傳入表名

動態傳入表名 能防止sql注入,不能 方式一般用於傳入資料庫物件,例如傳入表名.mybatis排序時使用order by 動態引數時需要注意,用 而不是 id 1,select from tablename select 1 from tablename 引用 id 1,select from ta...