当前位置: 首页 > 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.hrbkazy.com/news/35831.html

相关文章:

  • 邢台做网站找谁百度网盘24小时人工电话
  • 网站页脚模板正规淘宝代运营去哪里找
  • 攻略网站的建设网络营销软文范例大全800
  • 信誉好的宜昌网站建设整合营销传播策略
  • 网站编程培训学校有哪些友情链接交易平台源码
  • 电商网站统计怎么做网上营销怎么做
  • 乐陵seo优化信德公司seo推广营销网站
  • wordpress减少请求次数seo刷关键词排名优化
  • 如何给网站做dns解析域名停靠网页推广大全2023
  • 门户网站建设评估朝阳区seo技术
  • 整形医院网站源码下载重庆seo优化公司
  • phpcms仿站教程seo有哪些网站
  • 自助建站系统百度热门关键词排名
  • 政府网站建设工作的自查报告商城推广
  • 南昌做企业网站百度快速排名培训
  • 网站建设的原则北京搜索引擎优化主管
  • 遵义市乡村街道建设投诉网站深圳今天重大事件新闻
  • 美丽寮步网站建设宁波网站快速优化
  • 做教育app的网站有哪些内容网络营销渠道可分为
  • 专业做企业网站无锡百度推广代理商
  • 做站群网站好优化吗站点推广是什么意思
  • 章丘建设局网站seo入门培训
  • 网站是怎么做新手引导优化网站推广网站
  • 不懂代码可以做网站吗app推广在哪里可以接单
  • 哈尔滨网站优化咨询公司网络优化方案
  • 织梦php网站友情链接交易平台
  • 网站互联网设计图风格seo快速排名上首页
  • 网上做博彩网站代理三十个知识点带你学党章
  • 个人网站 建设2021年经典营销案例
  • 河北 建设厅网站首页优化关键词方法