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

商城免费建站系统湖南建设监理协会网站

商城免费建站系统,湖南建设监理协会网站,怎么做口子推广网站,黑龙江网站设计SpringBoot结合MyBatis实现多数据源配置 一、前提条件 1.1、环境准备 SpringBoot框架实现多数据源操作#xff0c;首先需要搭建Mybatis的运行环境。 由于是多数据源#xff0c;也就是要有多个数据库#xff0c;所以#xff0c;我们创建两个测试数据库#xff0c;分别是…SpringBoot结合MyBatis实现多数据源配置 一、前提条件 1.1、环境准备 SpringBoot框架实现多数据源操作首先需要搭建Mybatis的运行环境。 由于是多数据源也就是要有多个数据库所以我们创建两个测试数据库分别是【sp-demo01】和【sp-demo02】如下图所示 具体SQL代码 创建【sp-demo01】数据库。 -- 创建数据库 CREATE DATABASE sp-demo01;-- ---------------------------- -- Table structure for t_emp -- ---------------------------- DROP TABLE IF EXISTS t_emp; CREATE TABLE t_emp (emp_id int(11) NOT NULL AUTO_INCREMENT COMMENT 员工ID,emp_name varchar(255) NOT NULL COMMENT 员工姓名,age int(11) DEFAULT NULL COMMENT 年龄,dept_id int(11) NOT NULL COMMENT 部门ID,PRIMARY KEY (emp_id) ) ENGINEInnoDB AUTO_INCREMENT3002 DEFAULT CHARSETutf8;-- ---------------------------- -- Records of t_emp -- ---------------------------- INSERT INTO t_emp VALUES (2001, Lucy, 21, 1002); INSERT INTO t_emp VALUES (3001, Tom, 25, 1001);创建【sp-demo02】数据库。 -- 创建数据库 CREATE DATABASE sp-demo02;-- ---------------------------- -- Table structure for t_dept -- ---------------------------- DROP TABLE IF EXISTS t_dept; CREATE TABLE t_dept (dept_id int(11) NOT NULL AUTO_INCREMENT COMMENT 部门ID,dept_name varchar(255) NOT NULL COMMENT 部门名称,desc varchar(255) DEFAULT NULL COMMENT 描述,PRIMARY KEY (dept_id) ) ENGINEInnoDB AUTO_INCREMENT1003 DEFAULT CHARSETutf8;-- ---------------------------- -- Records of t_dept -- ---------------------------- INSERT INTO t_dept VALUES (1001, 研发部, 编写程序); INSERT INTO t_dept VALUES (1002, 测试部, 寻找bug);1.2、如何配置 MyBatis框架中提供了一个**【MapperScan】注解该注解作用是指定mapper接口所在的路径并且这个注解中也可以指定使用哪个【SqlSessionFactory】对象只需要通过该注解的【sqlSessionFactoryRef】**属性即可实现。 这里的SqlSessionFactory就相当于是一个数据库如果我们要配置多数据源那就相当于是要在工程里面创建多个SqlSessionFactory对象然后再使用的时候指定具体的SqlSessionFactory对象即可。 配置数据源需要创建三个对象分别是下面三个 第一个对象创建DataSource对象。第二个对象创建SqlSessionFactory对象。第三个对象创建SqlSessionTmplate对象。 知道了这个知识那就可以进行多数据源配置啦。 二、多数据源配置 这里我们就创建两个数据源作为测试案例两个数据源分别叫做【MasterDataSource】和【SlaveDataSource】。 2.1、创建数据源配置类 1创建Master配置类 在工程中创建一个【MasterDataSourceConfig】配置类代码如下所示 package com.spring.boot.demo.config;import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.SqlSessionTemplate; import org.mybatis.spring.annotation.MapperScan; import org.mybatis.spring.boot.autoconfigure.SpringBootVFS; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.core.io.support.PathMatchingResourcePatternResolver;import javax.sql.DataSource;/*** author Js* version 1.0.0* Date: 2023/09/06 19:16:30* Description*/ MapperScan(basePackages com.spring.boot.demo.master.mapper,sqlSessionFactoryRef masterSqlSessionFactory,sqlSessionTemplateRef masterSqlSessionTemplate ) Configuration public class MasterDataSourceConfig {// 默认指定 master 作为主数据源Primary// 注入数据源Bean(masterDataSource)// 指定 master 数据源的配置信息前缀ConfigurationProperties(prefix spring.datasource.master)public DataSource masterDataSource() {// 手动创建 Druid 数据源对象return DruidDataSourceBuilder.create().build();}// 创建 SqlSessionFactory 对象Bean(masterSqlSessionFactory)public SqlSessionFactory masterSqlSessionFactory(Qualifier(masterDataSource) DataSource masterDataSource) throws Exception {// 创建 SqlSessionFactoryBean 对象SqlSessionFactoryBean factoryBean new SqlSessionFactoryBean();// 设置数据源factoryBean.setDataSource(masterDataSource);// 设置 mapper 映射文件路径PathMatchingResourcePatternResolver resolver new PathMatchingResourcePatternResolver();factoryBean.setMapperLocations(resolver.getResources(classpath:mappers/master/**/*.xml));// 设置 VFSfactoryBean.setVfs(SpringBootVFS.class);// 返回 SqlSessionFactory 对象return factoryBean.getObject();}// 创建 SqlSessionTemplate 对象Bean(masterSqlSessionTemplate)public SqlSessionTemplate masterSqlSessionTemplate(Qualifier(masterSqlSessionFactory) SqlSessionFactory masterSqlSessionFactory) {// 创建 SqlSessionTemplate 对象return new SqlSessionTemplate(masterSqlSessionFactory);}}2创建Slave配置类 在工程中创建一个【SlaveDataSourceConfig】配置类代码如下所示 package com.spring.boot.demo.config;import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.SqlSessionTemplate; import org.mybatis.spring.annotation.MapperScan; import org.mybatis.spring.boot.autoconfigure.SpringBootVFS; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.support.PathMatchingResourcePatternResolver;import javax.sql.DataSource;/*** author Js* version 1.0.0* Date: 2023/09/06 19:30:45* Description*/ MapperScan(basePackages com.spring.boot.demo.slave.mapper,sqlSessionFactoryRef slaveSqlSessionFactory,sqlSessionTemplateRef slaveSqlSessionTemplate ) Configuration public class SlaveDataSourceConfig {// 注入数据源Bean(slaveDataSource)// 指定 slave 数据源的配置信息前缀ConfigurationProperties(prefix spring.datasource.slave)public DataSource slaveDataSource() {// 手动创建 Druid 数据源对象return DruidDataSourceBuilder.create().build();}// 创建 SqlSessionFactory 对象Bean(slaveSqlSessionFactory)public SqlSessionFactory slaveSqlSessionFactory(Qualifier(slaveDataSource) DataSource slaveDataSource) throws Exception {// 创建 SqlSessionFactoryBean 对象SqlSessionFactoryBean factoryBean new SqlSessionFactoryBean();// 设置数据源factoryBean.setDataSource(slaveDataSource);// 设置 mapper 映射文件路径PathMatchingResourcePatternResolver resolver new PathMatchingResourcePatternResolver();factoryBean.setMapperLocations(resolver.getResources(classpath:mappers/slave/**/*.xml));// 设置 VFSfactoryBean.setVfs(SpringBootVFS.class);// 返回 SqlSessionFactory 对象return factoryBean.getObject();}// 创建 SqlSessionTemplate 对象Bean(slaveSqlSessionTemplate)public SqlSessionTemplate slaveSqlSessionTemplate(Qualifier(slaveSqlSessionFactory) SqlSessionFactory slaveSqlSessionFactory) {// 创建 SqlSessionTemplate 对象return new SqlSessionTemplate(slaveSqlSessionFactory);}}2.2、添加数据源配置信息 在【application.yml】中添加master、slave两个数据源的配置信息如下 # 配置数据源 spring:datasource:# master 数据源信息master:driver-class-name: com.mysql.cj.jdbc.Driver # 数据库驱动url: jdbc:mysql://localhost:3306/sp-demo01?serverTimezoneAsia/ShanghaiuseUnicodetruecharacterEncodingUTF-8 # 数据库地址username: rootpassword: root# slave 数据源信息slave:driver-class-name: com.mysql.cj.jdbc.Driver # 数据库驱动url: jdbc:mysql://localhost:3306/sp-demo02?serverTimezoneAsia/ShanghaiuseUnicodetruecharacterEncodingUTF-8 # 数据库地址username: rootpassword: root2.3、创建Mapper接口 1创建Master的mapper接口 在【com.spring.boot.demo.master.mapper】包下面创建【EmpMapper】类。 package com.spring.boot.demo.master.mapper;import com.spring.boot.demo.pojo.EmpBo;import java.util.List;public interface EmpMapper {/*** 查询所有员工*/ListEmpBo queryAll(); }2创建Slave的mapper接口 在【com.spring.boot.demo.slave.mapper】包下面创建【DeptMapper】类。 package com.spring.boot.demo.slave.mapper;import com.spring.boot.demo.pojo.DeptBo; import org.apache.ibatis.annotations.Param;public interface DeptMapper {/*** 根据 ID 查询部门* param deptId* return*/DeptBo getDeptById(Param(deptId) Integer deptId); }2.4、创建XML映射文件 1创建Master的XML映射文件 在【mappers/master】目录下面新建【EmpMapper.xml】映射文件。 ?xml version1.0 encodingUTF-8 ? !DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.spring.boot.demo.master.mapper.EmpMapperselect idqueryAll resultTypecom.spring.boot.demo.pojo.EmpBoselectemp_id as empId,emp_name as empName,age,dept_id as deptIdfrom t_emp/select /mapper2创建Slave的XML映射文件 在【mappers/slave】目录下面新建【DeptMapper.xml】映射文件。 ?xml version1.0 encodingUTF-8 ? !DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.spring.boot.demo.slave.mapper.DeptMapperselect idgetDeptById resultTypecom.spring.boot.demo.pojo.DeptBo parameterTypejava.lang.Integerselectdept_id as deptId,dept_name as deptNamefrom t_deptwhere dept_id #{deptId}/select /mapper2.5、编写测试类 package com.spring.boot.demo.controller;import com.spring.boot.demo.master.mapper.EmpMapper; import com.spring.boot.demo.pojo.DeptBo; import com.spring.boot.demo.pojo.EmpBo; import com.spring.boot.demo.slave.mapper.DeptMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;import java.util.List;/** * author Js* version 1.0.0* Date: 2023/09/06 20:30:10* Description*/ RestController RequestMapping(/api) public class TestController {Autowiredprivate EmpMapper empMapper;Autowiredprivate DeptMapper deptMapper;GetMapping(/demo)public String demo() {// 查询所有员工信息ListEmpBo empBoList empMapper.queryAll();System.out.println(empBoList);// 查询每一个员工的部门信息for (EmpBo empBo : empBoList) {DeptBo deptBo deptMapper.getDeptById(empBo.getDeptId());System.out.println(deptBo);}return 测试成功;}}2.6、运行测试 经过上面几个步骤之后最终的工程目录结果应该是下面这样子的如下图 启动工程浏览器访问【http://localhost:8080/api/demo】查看控制台输出结果。 到此SpringBoot结合MyBatis框架实现多数据源配置就成功啦。
http://www.hkea.cn/news/14363878/

相关文章:

  • 太原网站推广做促销的网站
  • nas 做网站服务器免备案网站怎么备案域名
  • 一般做外贸上什么网站好企业咨询服务公司经营范围
  • 成都网站设计制作价格动态电子商务网站 制作
  • 建设银行辽宁分行报名网站房地产最新消息利好政策
  • 元谋网站建设安装wordpress中文包
  • 网站建设丷金手指花总企业网络营销策略分析案例
  • 农林牧渔行业网站建设河北建设执业资格注册中心网站
  • 做网站书籍网站开发的软硬件环境
  • 设计网站手机app客户端长春做公司网站的
  • 五个推进网站建设工作企业咨询培训
  • 可以做图片视频的网站专业做网站的团队
  • phpcms 网站访问统计学校网站建设要点
  • 响应式网站和自适应网站的区别网站开发要用什么语言
  • 做网站石家庄wordpress 主题 样式
  • 咋样做网站快照精品一卡二卡 卡四卡分类
  • 苏州网站建设sz sogou3d网站带后台下载
  • 自已建网站网站建设的步骤及方法
  • 网站引进搜索引擎怎么做班级网站建设需求分析
  • 长春净月潭建设投资集团网站现在用什么工具做网站好
  • 有没有专做于投融资的网站wordpress 经典网站
  • 端口扫描站长工具phpcms可以做哪些网站
  • 肇庆中小企业网站制作网站建设收费标准精英
  • 空间除了可以做网站还能干什么腾讯建设网站视频视频视频
  • 网页浏览器在线使用柳州网站seo优化公司
  • 免费好用的网站中山网页模板建站
  • 有商家免费建商城的网站吗衡阳企业网站建设
  • 实训报告网站开发网站修改关键词
  • 青岛专门做网站的公司有哪些代价网站建设
  • 网站登录不上怎么回事海口今天发现一例