当前位置: 首页 > news >正文

国家建设管理信息网站天津优化公司哪家好

国家建设管理信息网站,天津优化公司哪家好,网站单个页面301跳转,新上线网站如何做搜索引擎有些人因为看见所以相信,有些人因为相信所以看见 有目录,不迷路 前期准备实现演示代码地址参考 最近研究了一下多数据源,这篇博客讲的是简单模式,下篇博客预计写自动切换模式 前期准备 本篇博客基于SpringBoot整合MyBatis-plus&a…
有些人因为看见所以相信,有些人因为相信所以看见

有目录,不迷路

  • 前期准备
  • 实现
  • 演示
  • 代码地址
  • 参考

最近研究了一下多数据源,这篇博客讲的是简单模式,下篇博客预计写自动切换模式

前期准备

本篇博客基于SpringBoot整合MyBatis-plus,如果有不懂这个的,
可以查看我的这篇博客:快速CRUD的秘诀之SpringBoot整合MyBatis-Plus

为了实现效果,先在本地的mysql库里面创建两个数据库:
在这里插入图片描述
然后在两个数据库里面,分别创建同样的users表,但是插入不同的数据,
mydb的数据:
在这里插入图片描述
mydb2的数据:
在这里插入图片描述

实现

1.在pom.xml中引入多数据源的依赖dynamic-datasource-spring-boot-starter

<!-- 多数据切换所需依赖 -->
<dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.0.0</version>
</dependency>

2.在application.yml配置文件中配置多数据源:

sever:# 端口port: 8080# 配置数据源
spring:datasource:dynamic:primary: master #设置默认的数据源或者数据源组,默认值即为masterstrict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源datasource:master:# 数据库路径jdbc:mysql://localhost:3306/mydb 的缩写,并配置时区url: jdbc:mysql:///mydb?serverTimezone=GMT%2B8username: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Driver # 3.2.0开始支持SPI可省略此配置slave:url: jdbc:mysql:///mydb2?serverTimezone=GMT%2B8username: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Driver# 打印MyBatis SQL 日志
logging:level:com.guqueyue.test.dao: debug # 写接口的包名

注意:

  1. 这里数据源的名字可以自定义,什么masterslave都可以随意命名。
  2. 这里可以根据格式自行添加数据源的个数,并且支持多种数据库,如oracle达梦等。此处为了演示方便,都使用了mysql数据库。

3.编写代码
3.1.在持久层中查找users表的数据,并使用 @DS注解,切换数据源:

package com.guqueyue.test.dao;import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.guqueyue.test.entity.User;
import org.apache.ibatis.annotations.Select;import java.util.List;/*** @Author: guqueyue* @Description: 映射接口UserMapper* @Date: 2023/12/19**/
public interface UserMapper extends BaseMapper<User> {@DS("master") // 默认为主数据源,其实可以省略@Select("select * from users")List<User> selectUserList();@DS("slave") // 切换为slave数据源@Select("select * from users")List<User> selectUserListBySlave();}

注意:

  1. @DS注解不止可以用在持久层,可以用在任意的类和方法上。
  2. @DS注解作用在方法上的优先级 > 类。

也就是说可以在类上加一个@DS注解默认一个该类的数据源,如 @DS("master")
再在具体的方法上加一个@DS注解做个性化指定,如 @DS("slave"),效果等同:

/*** @Author: guqueyue* @Description: 映射接口UserMapper* @Date: 2023/12/19**/
@DS("master") // 默认为主数据源,其实可以省略
public interface UserMapper extends BaseMapper<User> {@Select("select * from users")List<User> selectUserList();@DS("slave") // 切换为slave数据源@Select("select * from users")List<User> selectUserListBySlave();}

3.2.创建service接口:

package com.guqueyue.test.service;import com.baomidou.mybatisplus.extension.service.IService;
import com.guqueyue.test.entity.User;import java.util.List;/*** @Author: guqueyue* @Description: 用户service接口* @Date: 2023/12/19**/
public interface IUserService extends IService<User> {List<User> selectUserList(String type);
}

3.3.创建service实现类,并调用持久层接口,根据传入的参数切换不同的方法:

package com.guqueyue.test.service.impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.guqueyue.test.dao.UserMapper;
import com.guqueyue.test.entity.User;
import com.guqueyue.test.service.IUserService;
import org.springframework.stereotype.Service;import javax.annotation.Resource;
import java.util.List;/*** @Author: guqueyue* @Description: 用户实现类* @Date: 2023/12/19**/
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {@Resourceprivate UserMapper userMapper;@Overridepublic List<User> selectUserList(String type) {// do something: 此处可根据实际情况进行业务选择,如根据当前登录的用户信息来选择不同的数据库// 此处为了方便演示,直接用前端传入的type来判断return "slave".equals(type) ? userMapper.selectUserListBySlave(): userMapper.selectUserList();}
}

3.4.编写控制层代码:

package com.guqueyue.test.controller;import com.guqueyue.test.entity.User;
import com.guqueyue.test.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;/*** @Author: guqueyue* @Description: 用户控制层* @Date: 2023/12/19**/
@RestController
@RequestMapping("/user")
public class UserController {@Autowiredprivate IUserService userService;/*** 查询用户列表* @return*/@RequestMapping("/list")public List<User> userList(String type) {System.out.println("接收到的数据源类型为:" + type);return userService.selectUserList(type);}
}

演示

代码编写好了,我们就可以启动项目了:
在这里插入图片描述
控制台显示项目启动成功后,
在浏览器输入:http://localhost:8080/user/list?type=master,返回:
在这里插入图片描述
在浏览器输入:http://localhost:8080/user/list?type=slave,则返回:
在这里插入图片描述
功能实现。

代码地址

本文代码已开源:

git clone https://gitee.com/guqueyue/my-blog-demo.git

请切换到gitee分支,然后查看dynamicDataSourceSimple模块即可!

参考

具体实现可以参考官方文档:多数据源

完结撒花!!!
在这里插入图片描述

http://www.hkea.cn/news/246942/

相关文章:

  • 什么人最需要建设网站淘宝运营一般要学多久
  • 海南网站优化东莞免费建站公司
  • 传播型网站建设优势有哪些推广类软文
  • 如何在百度做网站推广赚钱的软件
  • c# 网站开发教程周口网站seo
  • 湘西网站建设帮人推广注册app的平台
  • 切图做网站web制作网站的模板
  • 网站的做网站公司哪家好网络优化大师app
  • 国内外包网站今日头条(官方版本)
  • 外网建筑设计网站线上渠道推广有哪些方式
  • 厦门做网站公司排名电工培训机构
  • 武汉网站设计制作外包公司的人好跳槽吗
  • 网站建设哪里最好页面关键词优化
  • 清远建设网站制作seo系统培训课程
  • 网站的网页建设知识ppt北大青鸟职业技术学院简介
  • 巫山网站设计aso优化榜单
  • 关于节约化建设网站的表态发言网站制作报价表
  • 建行网站是多少呢故事式的软文广告例子
  • 阳江市住房和城乡规划建设局网站一级消防工程师考试
  • 做课件的网站有哪些用html制作淘宝网页
  • 网站开发前后台整个流程品牌宣传的推广
  • 深圳市门户网站建设网站推广优化方法
  • 中山公司注册网页怎么优化
  • 网站建设怎么分录2022年新闻摘抄简短
  • 江西景德镇建设厅网站太原关键词排名推广
  • 番禺做网站自媒体发布平台有哪些
  • 用dede做的网站首页电子商务网络营销
  • 最好的做任务赚钱网站网络域名怎么查
  • 建设部规范网站百度app关键词优化
  • 骏域网站百度怎么收录网站