首页 > 创新 >

springboot~mybatis-plus的DynamicTableNameInnerInterceptor实现分表 天天新资讯

2023-05-24 14:51:10 来源:博客园


(资料图片仅供参考)

超轻量级

DynamicTableNameInnerInterceptor是mybatis-plug的一个拦截器插件,可以自己定义需要拦截的表单,然后对它进行加工,这时mybatis-plus就会把SQL代码的表名加上你的这个装饰。

封装的思想

我们通常把mybatis做成一个包,公司其它同事直接使用咱们的包,包里会统一定义数据基类数据分页数据脱敏、审计字段填充等特性,开发人员不需要关注这些内容,这些内容会被自己注册;或者人开发人员可以直接继承它们,直接使用即可。

@Configurationpublic class MybatisPlusConfig implements ApplicationContextAware {ApplicationContext applicationContext;/** * 拦截器 */@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();// 分页插件, 对于单一数据库类型来说,都建议配置该值,避免每次分页都去抓取数据库类型interceptor.addInnerInterceptor(new LindPaginationInnerInterceptor());// 防止全表更新与删除interceptor.addInnerInterceptor(new BlockAttackInnerInterceptor());// 加载个性化的分表配置,它可能是用户在当前项目定义的,然后我们统一对它们进行装配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的组件中,开发人员在具体项目里不需要再次注册。

@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组成的分表,咱们都需要提前把数据表建立出来,他们这些组件是不会自动建表的。

上一篇:

环球快看:山西10岁男童失踪死亡,警方:2嫌犯被抓

下一篇:

最后一页

x
推荐阅读

springboot~mybatis-plus的DynamicTableNameInnerInterceptor实现分表 天天新资讯

快播:延续有温度的专业服务 都市丽人是如何做到的

环球快看:山西10岁男童失踪死亡,警方:2嫌犯被抓

安徽出台30条措施力促个体工商户持续健康发展-全球热点评

心底刻着你的名字 心底_今日热闻

文艺评论丨电影《这么多年》的怕与爱:校园爱情故事如何花样翻新 世界实时

辽芭携“镇团之宝”登陆滨海艺术中心 《斯巴达克》+《铁人》 以芭蕾舞致敬传奇

全球资讯:冒险岛牧师加点教程_技能怎么加点

突发收购终止!期货交易软件龙头卖身“黄了”?

全球快消息!353批选506套!宝安云上润府今日公证摇号

当前简讯:南京市环保局投诉电话_南京市环保局

e5450cpu相当于i几 e5450相当于什么cpu|天天简讯

天天微动态丨中超联赛第9轮 长春亚泰一球小胜青岛海牛

【世界时快讯】捷报|2023北京诺维学院录取又更新,哥伦比亚大学巴纳德学院+1 -->

广西壮族自治区灵山县发布雷电黄色预警

匿名经理:里夫斯应该得到与普尔希罗巴雷特一样的合同 天天快播

乐福伤情确定,格林回应哈登,独行侠求强援|当前热讯

速读:国家超级计算机互联网平台已进入研发阶段

怎么度过更年期焦虑症_怎么度过更年期 播资讯

最新!一批轻喜剧待播

袖珍人吴康弟弟吴飞_2016年袖珍人吴康现状

每日时讯!高等学校十三五规划教材物理化学_物理化学实验 高等学校理工科规划教材相关内容简介介绍

世界播报:师大滨江学校举行首届智慧家长共读会

精选!手机流量超出怎么扣费_手机流量超出怎么算

顶级经济学家献策:美国不必偿还31万亿美元巨额债务 全球热点评

5月23日海富通中证港股通科技ETF净值下跌0.28% 观焦点

被冯巩一句话点醒了,离开我们后,相声演员大山,如今怎么样了|全球新动态

海清演过的电视剧亚萍_海清演过的电视剧|天天滚动

热门看点:秦皇岛市气象台发布大风蓝色预警【Ⅳ级/一般】【2023-05-23】

定志珍珠丸

环球快播:【健康宾川】倡导健康的饮食理念,鸡足山镇炼洞完小这样做

当前焦点!九芝堂(000989.SZ):未来干细胞的海外合作、适应症转让、科研级干细胞销售、临床级干细胞生产等方向也将布局和推进

一季度前海实际使用港资11.85亿美元,占深圳六成-独家

天天资讯:五月如画!浅夏时节,太行大峡谷美景最动人

海南:听雨林交响曲

落水女子惊到附近训练的龙舟队,这场救援很暖!_世界今日报

全球今日讯!地方财政4月份收入大增64% 为何收支矛盾仍突出

全球观天下!南宁调整停车收费标准 机动车可免费停放30分钟

上海:鼓励金融机构发放公共租赁住房中长期贷款

我的文档怎么下载到电脑_下载我的文档到桌面 即时看

5月23日两市主力减持前50只个股 当前速讯

即日起至6月30日,郑开城际列车增加周末班次|今日聚焦

TV动画《进击的巨人 The Final Season》完结篇(后篇)主视觉图公开-当前最新

6支河南校园足球代表队晋级这项全国总决赛

七丰精工:公司通过参加欧洲、美国及国内紧固件专业展会,积极开发新客户新市场

卖一辆亏42万 百年福特搞不定电动车

当前观点:东软熙康等3家企业递表港交所

大和:快手首季业绩胜预期,重申买入评级|世界热议

感受非遗魅力:汉川杨林乌壶非遗小课堂开课啦-世界速递

利柏特(605167)5月23日主力资金净卖出861.06万元