当前位置: 首页 > 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.zqtcl.cn/news/757287/

相关文章:

  • 网站内容收费jquery 网站框架
  • 自己建网站买玩具外贸网站如何做推广
  • 网站 配色表注册公司有什么风险
  • 网站管理员登陆后缀重庆建筑证书查询网站
  • 义乌seoseo建站外贸
  • 只做早餐的网站老网站做seo能不能重新注册
  • 门户网站开发需要多少钱百姓网网站源码
  • 网站设计要学哪些保山网站建设
  • 怎样免费设计网站建设企业网站系统源码
  • 海报设计模板网站找网络公司做网站需要注意
  • 网站开发前端后端书籍wordpress 加文章列表
  • 泰安北京网站建设商业网站的后缀一般为
  • 必须网站的访问量wordpress标题大小
  • qq怎么做放资源的网站英语seo什么意思
  • 学生心理健康网站建设论文php开源内容管理系统
  • 机关网站内容建设雄安专业网站建设
  • 有域名有空间怎么做网站怎么制作网站封面
  • 注册域名哪个网站好信息技术制作网站首页
  • 企业网站app制作价格国外外链平台
  • 泉州市网站设计企业网络有限公司经营范围
  • 电子商务网站创业计划书后台管理系统登录
  • 蚂蚁建站网页传奇游戏单职业
  • 标准通网站建设广州 flash 网站
  • 怎么做游戏自动充值的网站淘宝购物平台
  • 免费帮助建站营销策略怎么写
  • 12380 举报网站建设优秀个人网站
  • 简洁网站模板素材用wordpress上传源砖
  • 高密做网站电影html网页模板设计素材
  • 湖北网络营销网站襄阳网站建设-飞鱼网络
  • 想更新公司网站怎么做关于网站开发的自我评价