中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mybatis-plus動態表名的示例分析

發布時間:2022-02-23 13:53:00 來源:億速云 閱讀:424 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關mybatis-plus動態表名的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

實現

MP中是通過PaginationInterceptor(分頁插件)完成動態表名解析的,配置如下:

依賴

<dependency>
 <groupId>com.baomidou</groupId>
 <artifactId>mybatis-plus-boot-starter</artifactId>
 <version>3.3.1.tmp</version>
</dependency>

配置類

package com.huanchuang.common.config;
 
import com.baomidou.mybatisplus.extension.parsers.DynamicTableNameParser;
import com.baomidou.mybatisplus.extension.parsers.ITableNameHandler;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
 
import java.util.Collections;
import java.util.HashMap;
 
/**
 * @Package: com.huanchuang.common.config
 * @Description: <mybatis-plush配置類>
 * @Author: MILLA
 * @CreateDate: 2020/09/04 14:42
 * @UpdateUser: MILLA
 * @UpdateDate: 2020/09/04 14:42
 * @UpdateRemark: <>
 * @Version: 1.0
 */
@Configuration
@MapperScan("com.huanchuang.ext.mapper**")
@ConditionalOnProperty(prefix = "spring.config", name = "enableMybatisPlusDynamicTable", havingValue = "true")
public class MybatisPlusDynamicTableConfig {
 
 private static final String DYNAMIC_TABLE_PRE = "common_user";
 
 /**
  * mybatis-plus分頁插件
  */
 @Bean
 public PaginationInterceptor paginationInterceptor() {
  PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
  // 設置請求的頁面大于最大頁后操作, true調回到首頁,false 繼續請求 默認false
  paginationInterceptor.setOverflow(false);
  // 設置最大單頁限制數量,默認 500 條,-1 不受限制
  paginationInterceptor.setLimit(500);
//  // 開啟 count 的 join 優化,只針對部分 left join
  paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
  DynamicTableNameParser dynamicTableNameParser = new DynamicTableNameParser();
  dynamicTableNameParser.setTableNameHandlerMap(new HashMap<String, ITableNameHandler>(2) {{
   //動態表規則-生成自己需要的動態表名
   put(DYNAMIC_TABLE_PRE, (metaObject, sql, tableName) -> DynamicTableTreadLocal.INSTANCE.getTableName());
  }});
  paginationInterceptor.setSqlParserList(Collections.singletonList(dynamicTableNameParser));
  return paginationInterceptor;
 }
}

動態表名存儲類

package com.huanchuang.common.config;
 
/**
 * @Package: com.huanchuang.common.config
 * @Description: <動態表格存儲類>
 * @Author: MILLA
 * @CreateDate: 2020/09/04 14:42
 * @UpdateUser: MILLA
 * @UpdateDate: 2020/09/04 14:42
 * @UpdateRemark: <>
 * @Version: 1.0
 */
public enum DynamicTableTreadLocal {
 INSTANCE;
 private ThreadLocal<String> tableName = new ThreadLocal<>();
 
 public String getTableName() {
  return tableName.get();
 }
 
 public void setTableName(String tableName) {
  this.tableName.set(tableName);
 }
 
 public void remove() {
  tableName.remove();
 }
 
}

使用

 private void select(int year) {
 
   DynamicTableTreadLocal.INSTANCE.setTableName("user_" + year);
   LambdaQueryWrapper<SparkDownSample> wrapper = Wrappers.lambdaQuery(User.class);
   List<User> userList = userMapper.list(wrapper )
 
 }
@Data
public class User {
 
 private Long id;
 
 private String userName;
 
 private String address;
 
 private char sex;
 
 private Byte age;
 
}

關于“mybatis-plus動態表名的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乡宁县| 建瓯市| 科技| 阳曲县| 巴林左旗| 长治市| 遂宁市| 阳朔县| 绥阳县| 广州市| 莎车县| 海宁市| 富源县| 赞皇县| 扎兰屯市| 海阳市| 道孚县| 海安县| 监利县| 同仁县| 台东县| 崇文区| 永济市| 额济纳旗| 长子县| 温泉县| 河源市| 黄梅县| 汤原县| 察哈| 新邵县| 阿鲁科尔沁旗| 个旧市| 平原县| 绥中县| 班戈县| 宝清县| 嘉黎县| 房产| 晋中市| 舒城县|