亚洲第一天堂无码专区_一区二区欧美久久_精品剧情v国产在线观看在线_久久久精品综合

手機版 | 網(wǎng)站導航
觀察家網(wǎng) > 專題 >

每日聚焦:springboot~mybatis-plus的DynamicTableNameInnerInterceptor實現(xiàn)分表

博客園 | 2023-05-24 15:06:54


【資料圖】

超輕量級

DynamicTableNameInnerInterceptor是mybatis-plug的一個攔截器插件,可以自己定義需要攔截的表單,然后對它進行加工,這時mybatis-plus就會把SQL代碼的表名加上你的這個裝飾。

封裝的思想

我們通常把mybatis做成一個包,公司其它同事直接使用咱們的包,包里會統(tǒng)一定義數(shù)據(jù)基類數(shù)據(jù)分頁數(shù)據(jù)脫敏、審計字段填充等特性,開發(fā)人員不需要關(guān)注這些內(nèi)容,這些內(nèi)容會被自己注冊;或者人開發(fā)人員可以直接繼承它們,直接使用即可。

  • 插件注冊器
@Configurationpublic class MybatisPlusConfig implements ApplicationContextAware {ApplicationContext applicationContext;/** * 攔截器 */@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();// 分頁插件, 對于單一數(shù)據(jù)庫類型來說,都建議配置該值,避免每次分頁都去抓取數(shù)據(jù)庫類型interceptor.addInnerInterceptor(new LindPaginationInnerInterceptor());// 防止全表更新與刪除interceptor.addInnerInterceptor(new BlockAttackInnerInterceptor());// 加載個性化的分表配置,它可能是用戶在當前項目定義的,然后我們統(tǒng)一對它們進行裝配Optional.ofNullable(applicationContext.getBeanNamesForType(DynamicTableNameInnerInterceptor.class)).ifPresent(o -> {for (String beanName : o) {DynamicTableNameInnerInterceptor dynamicTableNameInnerInterceptor = applicationContext.getBean(beanName, DynamicTableNameInnerInterceptor.class);interceptor.addInnerInterceptor(dynamicTableNameInnerInterceptor);}});return interceptor;}.....}

通過上面的代碼我們知道,在外部定義的DynamicTableNameInnerInterceptor對象,會被自動的注冊到mybatis-plus的組件中,開發(fā)人員在具體項目里不需要再次注冊。

  • 開發(fā)人員在項目中定義一個t_log表,按時間進行分表
@Beanpublic DynamicTableNameInnerInterceptor tableNamePlusInterceptor() {DynamicTableNameInnerInterceptor dynamicTableNameInnerInterceptor = new DynamicTableNameInnerInterceptor();HashMap map = new HashMap();map.put("t_log", new DaysTableNameParser());dynamicTableNameInnerInterceptor.setTableNameHandlerMap(map);return dynamicTableNameInnerInterceptor;}

代碼的測試

@Test(expected = BadSqlGrammarException.class)public void insertLog() {TLog log = new TLog();log.setMessage("測試");logDao.insert(log);}

生成的sql代碼如下

[main] DEBUG com.lind.mybatis.dao.LogDao.insert - ==>  Preparing: INSERT INTO t_log_20230524 ( id, message, create_by, create_time, update_by, update_time, del_flag ) VALUES ( ?, ?, ?, ?, ?, ?, ? )

需要注意的是,無論是sharding-jdbc還是mybatis-plus-DynamicTableNameInnerInterceptor組成的分表,咱們都需要提前把數(shù)據(jù)表建立出來,他們這些組件是不會自動建表的。

標簽:

  • 標簽:中國觀察家網(wǎng),商業(yè)門戶網(wǎng)站,新聞,專題,財經(jīng),新媒體,焦點,排行,教育,熱點,行業(yè),消費,互聯(lián)網(wǎng),科技,國際,文化,時事,社會,國內(nèi),健康,產(chǎn)業(yè)資訊,房產(chǎn),體育。

相關(guān)推薦

主站蜘蛛池模板: 自拍日韩亚洲一区在线 | 久久99精品久久久久久久久久| 久久久久国色av免费观看性色| 久久亚洲精品国产亚洲老地址| 日韩一级在线免费观看| 国产精品欧美亚洲777777| 国产精品久久久久久久7电影| 日韩免费中文字幕| 伊人色综合久久天天五月婷| 久久久久亚洲精品| 国外色69视频在线观看| 亚洲精品国产系列| 久久精品一本久久99精品| 国产伦精品一区二区三区视频免费| 欧美一区二区三区精品电影| 久久精品.com| 日韩人妻无码精品久久久不卡| 国产精品嫩草视频| 久久99精品久久久久子伦| 欧美乱妇高清无乱码| 国产综合免费视频| 日韩欧美亚洲天堂| 综合久久国产| 欧美精品免费观看二区| 国产精品aaaa| 久久久久久九九| 91精品国产高清久久久久久| 久久久这里只有精品视频| 久久久久久久久久婷婷| 激情六月丁香婷婷| 国产精品99久久久久久久久久久久| 日韩成人手机在线| 日本三级中国三级99人妇网站| 久久精品国产v日韩v亚洲| 91国产视频在线播放| 亚洲综合一区二区不卡| 久久99热只有频精品91密拍| 久久青草精品视频免费观看| 在线天堂一区av电影| 日本午夜精品一区二区三区| 国产欧美亚洲精品|