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

红色主题网站模板北京工程建设公共资源交易平台

红色主题网站模板,北京工程建设公共资源交易平台,现在建网站多少钱,网站开发包含的项目和分工场景 因为引用了baomidou主从数据源&#xff0c;因为业务场景特殊&#xff0c;需要查询语句强制走主库&#xff0c;把解决方案分享出来&#xff0c;帮助大家少走弯路 pom依赖 <dependency><groupId>com.baomidou</groupId><artifactId>dynamic-data…

场景

因为引用了baomidou主从数据源,因为业务场景特殊,需要查询语句强制走主库,把解决方案分享出来,帮助大家少走弯路

pom依赖

<dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.6.1</version>
</dependency>

主从配置

package com.baomidou.config;import com.baomidou.dynamic.datasource.plugin.MasterSlaveAutoRoutingPlugin;
import com.baomidou.interceptor.MasterSlaveAutoRoutingOrSelectByRulePlugin;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** 主从配置*/
@Configuration
public class MasterSlaveAutoRoutingPluginConfig {/*** xml文件sql语句标签名包含'FromMaster' 会去主库查询*/@Beanpublic MasterSlaveAutoRoutingOrSelectByRulePlugin masterSlaveAutoRoutingPlugin(){return new MasterSlaveAutoRoutingOrSelectByRulePlugin();}}

拦截器

package com.baomidou.interceptor;import com.baomidou.dynamic.datasource.support.DdConstants;
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.cache.CacheKey;
import org.apache.ibatis.executor.Executor;
import org.apache.ibatis.mapping.BoundSql;
import org.apache.ibatis.mapping.MappedStatement;
import org.apache.ibatis.mapping.SqlCommandType;
import org.apache.ibatis.plugin.*;
import org.apache.ibatis.session.ResultHandler;
import org.apache.ibatis.session.RowBounds;
import org.springframework.beans.factory.annotation.Autowired;import javax.annotation.Resource;
import javax.sql.DataSource;
import java.util.Properties;/*** 根据 baomidou MasterSlaveAutoRoutingPlugin 修改符合自己的调用规则(目前根据sql方法的唯一id来判断)* 自动切换主从或者根据方法名指定路由*/
@Intercepts({@Signature(type = Executor.class, method = "query", args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class}),@Signature(type = Executor.class, method = "query", args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class, CacheKey.class, BoundSql.class}),@Signature(type = Executor.class, method = "update", args = {MappedStatement.class, Object.class})})
@Slf4j
public class MasterSlaveAutoRoutingOrSelectByRulePlugin implements Interceptor {/*** xml文件sql语句标签名包含'FromMaster' 会去主库查询* 如 '<select id="find***FromMaster" ...>'*/public static final String FROM_MASTER = "FromMaster";@Overridepublic Object intercept(Invocation invocation) throws Throwable {Object[] args = invocation.getArgs();MappedStatement ms = (MappedStatement) args[0];String pushedDataSource = null;try {if (ms.getId().contains(MasterSlaveAutoRoutingOrSelectByRulePlugin.FROM_MASTER_HT) && SqlCommandType.SELECT == ms.getSqlCommandType()) {pushedDataSource = DynamicDataSourceContextHolder.push(DdConstants.MASTER);return invocation.proceed();}String dataSource = SqlCommandType.SELECT == ms.getSqlCommandType() ? DdConstants.SLAVE : DdConstants.MASTER;pushedDataSource = DynamicDataSourceContextHolder.push(dataSource);return invocation.proceed();} finally {if (pushedDataSource != null) {DynamicDataSourceContextHolder.poll();}}}@Overridepublic Object plugin(Object target) {return Plugin.wrap(target, this);}@Overridepublic void setProperties(Properties properties) {}
}

dao

package com.baomidou.mapper;import com.baomidou.entity.TOrder;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;/*** <p>* Mapper 接口* </p>*/
public interface TOrderMapper extends BaseMapper<TOrder> {TOrder findOrderFromMaster();}

xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.baomidou.mapper.TOrderMapper"><select id="findOrderFromMaster" resultType="com.baomidou.entity.TOrder">--    根据名称使sql强制走主库</select></mapper>

Yml

server:port: 9914servlet:context-path: /baomidou
logging:level:com.baomidou.dynamic: debug
spring:datasource:dynamic:primary: master  # 这里需要修改strict: truehikari:pool-name: Yi_HikariCPminimum-idle: 5maximum-pool-size: 20datasource:# 测试master:type: com.zaxxer.hikari.HikariDataSourceurl: jdbc:mysql://localhost:3396/test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8username: adminpassword: ufcz2b8x3bas4c5m$%332driver-class-name: com.mysql.cj.jdbc.Driverslave_1:type: com.zaxxer.hikari.HikariDataSourceurl: jdbc:mysql://localhost:3397/test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8username: readonlypassword: 123qwe!@#driver-class-name: com.mysql.cj.jdbc.Driverslave_2:type: com.zaxxer.hikari.HikariDataSourceurl: jdbc:mysql://localhost:3397/test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8username: readonlypassword: 123qwe!@#driver-class-name: com.mysql.cj.jdbc.Driver#seata事务生效seata: trueseata-mode: atseata:enabled: trueapplication-id: baomidou-seata#不使用自动代理数据源enable-auto-data-source-proxy: false
mybatis-plus:
#================================================= mybatis-plus start =================================================# classpath:/mapper/*Mapper.xmlmapper-locations: classpath*:/mapper/*.xml# 实体扫描,多个package用逗号或者分号分隔type-aliases-package: com.user.entityconfiguration:# 这个配置会将执行的sql打印出来,在开发或测试的时候可以用log-impl: org.apache.ibatis.logging.stdout.StdOutImpl# 驼峰下划线转换map-underscore-to-camel-case: truecache-enabled: false# 如果查询结果中包含空值的列,则 MyBatis 在映射的时候,不会映射这个字段call-setters-on-nulls: falseglobal-config:# 刷新mapper 调试神器refresh: truebanner: false#数据库大写下划线转换#capital-mode: true#序列接口实现类配置#key-generator: com.baomidou.springboot.xxx# 数据库相关配置db-config:db-type: mysql# 主键类型  AUTO:"数据库ID自增", INPUT:"用户输入ID",ID_WORKER:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID";id-type: UUID# 字段策略 IGNORED:"忽略判断",NOT_NULL:"非 NULL 判断"),NOT_EMPTY:"非空判断"field-strategy: NOT_EMPTYcapital-mode: true#逻辑删除配置logic-delete-value: 1logic-not-delete-value: 0
#================================================= mybatis-plus end ===================================================

完结撒花 ✿✿ヽ(°▽°)ノ✿

http://www.yayakq.cn/news/817886/

相关文章:

  • 公司网站建设价格贵吗红安县建设局网站
  • 淮安设计网站asp.net 4.0网站开发与项目实战 pdf
  • 云南网站建设优选平台wordpress建个人网站
  • 自适应网站建设企业管理培训课程目录
  • 泰安网站建设定制公司注册城乡规划师难考吗
  • 苏中建设集团网站网址推广图片模版
  • 腾讯云做网站选哪个深圳网站搜索优化
  • 做家电选招标采购哪一个网站好wordpress批量提交
  • 怎样做音视频宣传网站试述网站建设的流程.
  • 威胁网站检测平台建设中标海门市城乡建设局网站
  • 网站可以给pdf做笔记外贸php网站源码
  • 建站公司是什么意思青岛市最大的网络公司是哪里
  • 微信小说网站开发个人如何注册网站
  • 固原市住房和城乡建设厅网站哪个公司做网站专业
  • 事业单位门户网站建设中国形象设计网
  • 网站如何规范的排版编辑flash网站整站源码免费下载
  • 用python做购物网站公司广告片拍摄公司
  • c程序设计教学网站怎么做单位网站开发合同范本
  • 巴中城乡建设官方网站wordpress博客dux主题
  • 什么是企业营销型网站?wordpress插件提交
  • 媒体网站开发专业上海网站建设
  • 网站开发什么语言安全wordpress图片无法加载
  • 网站建设与维护作业网站建设公司领导致辞
  • 网站备案全国合作拍照点海南营销网站建设
  • 领秀网站建设手机阅读网站开发原因
  • 一个wordpress模版几个网站西安百度关键词优化排名
  • 潍坊高端网站建设价格网址大全2345下载安装
  • 昌平网站制作开发公司商城网站欣赏
  • asp.net 网站设计为什么网站显示在建设中
  • 盐山县招聘网站建设百度一下你就知道啦