接上文多数据源配置:
一、功能演示
代码生成菜单页面, 展示数据源切换
查询主库
查询从库
二、前端传参切换数据源
页面路径: src/views/tool/gen/index.vue
搜索框如下:下面4发送请求时候,在header带上 要切换数据库
headers: { 'datasource': localStorage.getItem("dataName") },
前端输入框,到发送请求代码如下
1--页面输入框
<el-form-item label="数据源" prop="dataName">
<el-input
v-model="queryParams.dataName"
placeholder="请输入数据源名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
2--搜索操作
/** 搜索按钮操作 */
handleQuery() {
localStorage.setItem("dataName", this.queryParams.dataName);
this.queryParams.pageNum = 1;
this.getList();
},
3-- 查询表集合
getList() {
this.loading = true;
listTable(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
this.tableList = response.rows;
this.total = response.total;
this.loading = false;
}
);
},
4-查询生成表数据
export function listTable(query) {
return request({
headers: { 'datasource': localStorage.getItem("dataName") },
url: '/tool/gen/list',
method: 'get',
params: query
})
}
后台实现类标记 @DS("#header.datasource")注解,就完成通过head切换
@DS("#header.datasource")
@Slf4j
@RequiredArgsConstructor
@Service
public class GenTableServiceImpl implements IGenTableService {
。。。。。省略代码
三、字符串、实体类接受参数切换数据源
3.1 字符串
请求时候带上name入参:GET http://localhost:8080/testDynamic2?name=slave- @DS("#name") 实现类标注
//controller
@GetMapping("testDynamic2")
public void testDynamic2(String name) {
TestDemoVo testDemoVo = iTestDemoService.queryById(name,2L);
Console.log("打印数据:{}", testDemoVo);
}
//实现类
@Override
@DS("#name")
public TestDemoVo queryById(String name, Long id) {
return baseMapper.selectVoById(id);
}
结果:访问从库成功
打印数据:TestDemoVo(id=2, deptId=102, userId&