mysql mybatis分表查询_mybatis 自动分表

article/2025/10/27 19:57:03

参考:

相关源码已上传至我的 github

欢迎转载,转载请注明出处,尊重作者劳动成果:https://www.cnblogs.com/li-mzx/p/9963312.html

前言

小弟才疏学浅,可能很多问题也没有考虑到,权当抛砖引玉,希望各位大神指点

项目背景:

希望做一个功能,能在sql操作数据库时,根据某个字段的值,或者说某种策略, 自动操作对应的表

比如   user表

user_oa,其中userid 为   oa000001、oa000002、oa123456

user_bz,其中userid 为   bz000002

user_sr, 其中userid 为   sr654321

根据业务人员所使用的系统,将user表细分为3个

分表规则为业务人员所注册的系统,比如上面的,  sr  oa  bz

当dao层操作数据库时,系统自动根据userid  或指明分表名,自动去操作对应的表,即1个查询,对应多个数据库相同结构的表

实现思路

1、在需要分表的实体类中, 实现接口,提供分表所需要的分表策略,否则需要在dao的操作数据库方法中,加入表名参数

2、在需要分表的Dao接口中,添加注解,声明一个需要分表的操作,供拦截器拦截

3、定义拦截器,注册到mybatis中,在mybatis使用sql语句操作数据库之前,拦截添加了注解的dao方法,修改sql语句,将其中的表名,全部添加 从参数中或实体类中取得的表名后缀

代码环境

IntelliJ IDEA 2018.2.5 +jdk1.8.0 +Spring Boot 1.5.17 +MySql 5.7 + MyBatis 1.3.2 + Druid 1.1.3

代码

maven依赖:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

UTF-8

UTF-8

1.8

1.1.3

2.7.0

com.alibaba

fastjson

1.2.45

org.springframework.boot

spring-boot-starter-web

org.mybatis.spring.boot

mybatis-spring-boot-starter

1.3.2

org.springframework.boot

spring-boot-devtools

true

mysql

mysql-connector-java

org.projectlombok

lombok

true

org.springframework.boot

spring-boot-starter-test

test

com.alibaba

druid-spring-boot-starter

${druid.version}

io.springfox

springfox-swagger2

${swagger.version}

io.springfox

springfox-swagger-ui

${swagger.version}

com.github.jsqlparser

jsqlparser

1.1

maven 依赖

application.yml


http://chatgpt.dhexx.cn/article/TQ3wtrlU.shtml

相关文章

mysql 分区分表_mysql分库分区分表

一、分表 分表分为水平分表和垂直分表。 水平分表原理: 分表策略通常是用户ID取模,如果不是整数,可以首先将其进行hash获取到整。 水平分表遇到的问题: 1. 跨表直接连接查询无法进行 2. 我们需要统计数据的时候 3. 如果数据…

Mock平台介绍

Mock平台可以用来模拟接口,具备了get方法,post方法,header,cookie,重定向等功能。 Mock平台的搭建应用于mock框架,在github上可以下载到开源的代码。 下载地址:http://repo1.maven.org/maven2/…

Mock 框架 Moq 的使用

Intro# Moq 是 .NET 中一个很流vb.net教程行的 Mock 框架,使c#教程用 Mock 框架我python基础教程们可以只针对我java基础教程们关注的代码进行测试,对于sql教程依赖项使用 Mock 对象配置预期的依赖服务的行为。 Moq 是基于 Castle 的动态代理来实现的&…

mockjs入门

mockjs 1,mock.js是什么? mockjs是生成随机数据的一款前端工具,用来模拟 Ajax 请求,生成并返回模拟数据 2,为什么用mockjs? 当程序员做项目开发时,前端工程师要请求后端做好的数据时,有可能…

monkey简介

https://blog.csdn.net/lebang08/article/details/70858532 https://www.cnblogs.com/aland-1415/p/6949964.html https://blog.csdn.net/aisemi/article/details/55254348 一、Monkey 简介 monkey是Android SDK中自带的一个命令行工具,使用Java语言写成&#xf…

mokey的介绍和使用

一、monkey介绍 monkey是Android SDK提供的一个命令行工具,可以简单方便的发送伪随机的用户时间流,对Android APP做压力(稳定性、健壮性)测试。主要是为了测试APP是否存在无响应和崩溃的情况。 二、monkey的使用 1、前提条件&a…

APP测试— 测试工具mokey

文章目录 1 Mokey概念2 运行Monkey(对手机进行300次无规律点击)3 Mokey常规参数4 Monkey 事件类参数5 Monkey 约束类参数 1 Mokey概念 1)Monkey是Android SDK提供的一个命令行工具,可以简单、方便的运行任何版本的Android模拟器和…

Kafka配置用户名密码访问

1 软件版本 kafka_2.12-2.4.0.tgz(带zookeeper) 2 kafka服务端部署 2.1 将安装包上传到服务器,并解压 tar zxvf kafka_2.12-2.4.0.tgz -C /datamv kafka_2.12-2.4.0 kafka2.2 修改kafka配置文件 server.properties vim /data/kafka/conf…

linux 用户名和密码的处理

1. 创建新用户和密码 # 创建用户 testuser useradd testuser# 给已创建的用户testuser设置密码 passwd testuser# 新创建的用户会在 /home 下创建一个用户目录testuser# 修改用户这个命令的相关参数 usermod --help# 删除用户testuser userdel testuser# 删除用户所在目录rm -…

用户名,密码登录

1.导入项目需要的依赖,分层 注意:如果你的数据库是5.5的版本,依赖要用低版本的,高版本不稳定,新增的内容不识别,会报各种各样奇葩的错误 2.创建实体类 它的属性要和数据库字段对应 package com.oa.entity…

实现用户输入用户名和密码登录

题目 实现用户输入用户名和密码登录,当用户名为admin或administrator且密码为666666时,显示“登录成功”,否则显示“登录失败”,登录失败时允许重复输入三次。 实例 参考程序 User1 "admin" User2 "administr…

计算机用户名和初始密码,电脑默认的用户名和密码是多少

优质回答 回答者:止树2018 电脑用户默认是没有密码的,除非你设置了,没有设置的前提下,直接按回车键就可以进系统了。 电脑默认的用户是administrator,如果你创建了自己的新用户名,那么,原始管理…

服务器密码以及用户名怎么修改

服务器密码以及用户名怎么修改 我是艾西,今天给大家说下服务器密码如何修改 windows2003系统: 1、右键我的电脑,点击“管理”: 2、在“本地用户和组”中打开“用户”,在右侧找到 Administrator 账户进行修改。 200…

电脑更改开机密码和用户名

一、电脑更改开机密码 1、快捷键CtrlAltDel出现以下界面。 2、点击“更改密码”,出现修改密码的界面,输入旧的密码,以及新的密码,确定即可。 二、电脑更改开机用户名 1、打开电脑的”控制面板“。 2、在控制面板中点击“用户帐户…

基于51单片机的呼吸灯程序编写

利用51单片机编写的呼吸灯小程序,实验程序内容截图分享~

六、Arduino呼吸灯的实现

实验所需材料 Arduino UNO面包板LED灯一个330Ω电阻一个 连接示意图 如图所示,实验中我们将LED连接到了带PWM功能的D9引脚。 可以在 Arduino IDE菜单>文件>示例>03.Analog>Fading 打开呼吸灯示例程序,程序如下: int ledPin 9…

C语言实现呼吸灯(HAL库)

1. 呼吸灯原理 呼吸灯的实现可以通过控制灯的亮度连续变化,当变化的频率大于24帧时,肉眼看上去就会逐渐变暗,逐渐变亮。 2. PWM控制亮度 PWM通过设置亮度在一段时间内的占空比,亮的百分比多,人眼看到的就亮&#xf…

二、15【FPGA】呼吸灯实现

前言 学习说明此文档为本人的学习笔记,注重实践,关于理论部分会给出相应的学习链接。 学习视频:是根据野火FPGA视频教程——第十八讲 https://www.bilibili.com/video/BV1nQ4y1Z7zN?p3 实战演练 一、设计规划 1.1 实验目标 在开发板上…

基于FPGA实践之呼吸灯(含程序)

呼吸灯是指灯光在微电脑的控制之下完成由亮到暗的逐渐变化,感觉好像是人在呼吸。 在单片机中我们调节PWM波的占空比可以实现一个周期内高电平占百分比,这个百分比固定就可以调节亮度,这个百分比是动态的,那么灯的亮度也是动态的&…

Verilog实现呼吸灯效果

呼吸灯的效果采用PWM调波的形式,即快速的改变每个周期的占空比(一个周期内高电平时间占一个周期时间的比值)来实现点亮到熄灭的效果。示意如下图 而关于整个波形图,用50MHz的晶振,从0开始计数到49则为1us。 而1ms是1u…