借用连接2-得到主库或从库池子连接

news2024/12/24 9:12:46
二、借用连接--AbstractRoutingDataSource类
目的:基于look up data,然后从目标数据源借用连接  注look up key确定走主 or 从数据库连接池

代码开发:
1.定义子类继承AbstractRoutingDataSource,并覆写determineCurrentLookupKey方法,方法引入ThreadLocalUtils.get()后,就可得到当前请求走master or slave
2.DataSource dataSource = this.resolvedDataSources.get(master or slave);----targetDataSources-->类中的set方法给其赋值,入参是map-->开发方法myRoutingDataSource+@Qualifier
   targetDataSources结果是{"master"=masterDataSource,"slave"=slaveDataSource}


从第三步开始
3.连接和数据源引入SqlSessionFactoryBean类+SqlSessionFactory类-->得到连接数据库连接,MybatisSqlSession类
4.@MapperScan让UserMapper先随项目启动+UserService服务层代码开发+controller层代码开发
5.启动项目(前提是先启动redis和数据库)+jmeter测试接口
源码类:
@Qualifier   标记在属性或者方法入参上,导入对象
@MapperScan  标记在项目的启动类上,变量value+basePackages都是写mapper文件的包路径

注:

导入对象的注解一共有三个:

@Autowired 导入已经用过的spring中的某类
@Resource 导入spring中的某类(根类)
@Qualifier   导入已经用过的spring中的某类,标记在属性或者方法入参上

一、和数据源链接绑定

1、导入数据源链接的这个类,并导入它的父类datasource,因为需要和数据源绑定,所以导入数据

2、连接和数据源绑定

a、引入SqlSessionFactoryBean类,这个类是操作数据库的session链接,因为源码中无构造方法,所以对这个类进行示例化,得到SqlSessionFactoryBean的对象;

b、这个源码类的方法有setdatasource方法,传入myRoutingDataSource(数据源对象,这个主从池子对象),进行事务管理,数据源和SqlSessionFactory进行匹配,连接和数据源绑定

c、使用getObject()方法,这个方法是会创建一个数据源链接,这个链接的名字是sql session

导入数据后还会报错,因为main方法是有static不能直接使用,

所以封装方法,将代码写入,就不会报错了

getobject方法,返回值是sqlsessionfactory是真正的sql session连接

二、随项目启动

1、随项目启动

因myRoutingDataSource这个类就是创建目标源并随着项目启动

所以该步骤也需要增加项目启动注释

@Configuration + @Bean

三、操作服务层代码

1、user service操作数据库 2、user service调用usermappe

3、如果要调用user mapper的方法,设置的mapper方法是一个接口类,调用接口里的方法,弄个子类对这里的方法实现,让mapper文件随着项目初始化

在启动项目类上增加@MapperScan(value = "com.youceedu.tools.ycspring.mapper")

@MapperScan让UserMapper先随项目启动+UserService服务层代码开发+controller层代码开发

a、在启动类上增加@MapperScan让UserMapper先随项目启动

b、UserService服务层代码开发

在UserService代码里导入usermapper对象

在login方法里增加​调用mapper的login方法(如下),并得到返回结果

mapper里的方法登录返回的是int类型,所以设置count,初始化为0/1

在service类中getinfo方法中,调用mapper的getinfo,并得到返回结果

因为mapper里的方法返回的是user类,所以返回值方法值和返回值也设置为user

以及需要做判断

如果login的count等于1就返回数据,如果不是就返回false;

如果user里面的内容为空就是null,如果user为空就返回user结果

这里的关联错误是什么?

是controller里之前临时写了返回值data

controller层代码开发

原本login接口

 把临时的给去掉即可

原本的getinfo因为controller已经做了判断,所以这里的判断就删掉

所以controller代码需要将之前临时的data更换为user这个类

总结

controller调service,service调mapper,mapper操作数据库

 

启动项目

 启动项目(前期启动redis和数据库)

jmeter测试

先在从库里增加user存入数据-密码账号(因为登录+获取数据是存量的从库)

然后在jmeter中进行登录/获取用户信息查询

进行接口请求

因为传入data是1,所以getinfo是id=1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2168729.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue3+Element-UI Plus登录静态页

<script setup> import {reactive, ref} from "vue";const formRefref() const formModelreactive({username:,password: }) const formRulesreactive({username:[{required:true,message:请输入账号,trigger:blur}],password:[{required:true,message:请输入密…

深圳前湾地铁附近的13元一份的工地盒饭

因为深圳前海这边有很多工地&#xff0c;所以也存在很多的工地餐厅。发现价格出奇统一&#xff0c;都是13元一份。主打一个量大管饱还下饭&#xff0c;每次都吃得有些撑。前海写字楼下的底商也很多打工人的干饭餐厅&#xff0c;但是工作餐均价都要30。如果不在餐厅吃&#xff0…

高通AI应用程序开发3:网络模型(一)

1. 支持的网络模型 Qualcomm神经处理SDK支持下表所列的网络模型。 有关支持的运行时和单个图层类型的限制和约束的详细信息&#xff0c;请参阅 限制 。 GPU运行时中支持的所有层对两种GPU模式都有效&#xff1a;GPU_FLOAT32_16_HYBRID和GPU_FLAAT16。GPU_FLOAT32_16_HYBRID-…

3分钟!手把手教你学会如何无损放大图片

我们常常遇到需要放大图片却又不希望损失画质的尴尬境地。无论是为了打印大幅海报、在线展示高清细节&#xff0c;还是想要修复珍贵的老照片&#xff0c;无损放大图片成为了许多人的迫切需求。下面给大家分享一款最新无损放大图片软件&#xff0c;高效且实用&#xff0c;一起来…

VMware搭建DVWA靶场

目录 1.安装phpstudy 2.搭建DVWA 本次搭建基于VMware16的win7系统 1.安装phpstudy 下载windows版本&#xff1a;小皮面板-好用、安全、稳定的Linux服务器面板&#xff01; 安装后先开启mysql再开启apache&#xff0c;遇到mysql启动不了的情况&#xff0c;最后重装了phpstud…

如何在Windows和Linux之间实现粘贴复制

第一步 sudo apt-get autorremove open-vm-tools第二步 sudo apt-get update第三步 sudo apt-get install open-vm-tools-desktop第四步 一直按Y&#xff0c;希望执行 Y第四步 重启 reboot然后可以实现粘贴复制。

国内外AI大模型对比,国产AI的优势是什么?非常详细收藏我这一篇就够了

AI正在以惊人的速度改变各行各业的运作方式。 热点趋势解读之AI系列&#xff0c;将通过多篇文章探讨如何利用AI驱动创新、提升效率&#xff0c;并为未来的商业和社会发展提供无限可能。 篇章五&#xff1a;国内外AI大模型哪家强&#xff1f; > 设为星标公众号&#xff0c…

我校教师当选为中国计算机学会(CCF)杰出会员

近日&#xff0c;中国计算机学会&#xff08;CCF&#xff09;会员评选委员会发来贺信&#xff0c;祝贺我校信息技术学院大数据技术科研创新团队负责人陈天伟老师当选CCF杰出会员(CCF Distinguished Membership)&#xff0c;并高度评价了陈天伟的专业造诣和长期以来对CCF发展的贡…

Navicat连接数据库

一、MySQL地卸载&#xff1a; 二、Navicat连接数据库&#xff1a; 安装navicat的安装&#xff1a; 错误解决方法&#xff1a; 实验过程&#xff1a; 在本地sql数据库可以访问&#xff0c;说明数据库开启 用navicat连接&#xff1a;出现问题&#xff1a; 将mysql用户登录的加密…

欧洲欧盟药品数据库:EMA、HMA、EDQM-一键查询

在过去的一段时间里&#xff0c;我坚持不懈地每天下午都向那些精通欧洲法规注册的同事请教&#xff0c;学习EU的注册法规&#xff0c;收获颇丰。作为一个对知识充满渴望的求学者&#xff0c;今天我愿意将我学到的心得体会分享给大家&#xff0c;希望你们能够喜欢。 几个月前&a…

App推广新利器:Xinstall应用间跳转,转化效率翻倍

在移动互联网时代&#xff0c;App已成为我们生活中不可或缺的一部分。然而&#xff0c;随着App数量的不断增加&#xff0c;用户在使用过程中经常需要在多个应用之间切换&#xff0c;这不仅影响了用户体验&#xff0c;还降低了App的转化效率。今天&#xff0c;就让我们一起了解一…

多层感知机——pytorch与paddle实现多层感知机

多层感知机——pytorch与paddle实现多层感知机 本文将深入探讨多层感知机的理论基础&#xff0c;并通过PyTorch和PaddlePaddle两个深度学习框架来展示如何实现多层感知机模型。我们将首先介绍多层感知机、优化的基本概念&#xff0c;这些数学工具是理解和实现多层感知机的基础…

Spring CloudAlibaba AI 问世了

Spring CloudAlibaba AI 问世了 背景介绍Spring AI 简介Spring Cloud Alibaba AI 简介 第一个Spring AI应用开发新建maven 项目添加依赖配置spring ai 的核心依赖仓库 参考 背景介绍 SpringAI 是Spring 官方社区项目&#xff0c;旨在简化 Java AI 应用程序开发&#xff0c;让 J…

【微服务即时通讯系统】——brpc远程过程调用、百度开源的RPC框架、brpc的介绍、brpc的安装、brpc使用和功能测试

文章目录 brpc1. brpc的介绍1.1 rpc的介绍1.2 rpc的原理1.3 grpc和brpc 2. brpc的安装3. brpc使用3.1 brpc接口介绍 4. brpc使用测试4.1 brpc同步和异步调用 brpc 1. brpc的介绍 1.1 rpc的介绍 RPC&#xff08;Remote Procedure Call&#xff09;远程过程调用&#xff0c;是一…

铝壳电阻是什么?

铝壳电阻是常见的电子元件&#xff0c;广泛应用于各种电子设备和电路中。它的主要功能是将电能转化为热能&#xff0c;从而实现对电流的调节和控制。铝壳电阻具有许多优点&#xff0c;如稳定性好、散热性能优越、耐腐蚀等&#xff0c;因此在电子行业中得到了广泛的应用。 铝壳…

ERNIESpeed-128K在线智能聊天机器人项目(附源码)

本项目是基于百度千帆的智能聊天模型ERNIESpeed-128K开发的 一、技术栈 后端&#xff1a;java8springboot2.6.13 数据库&#xff1a;MongoDB 前端&#xff1a;vue2element-uimarked&#xff08;md格式&#xff09; 二、MongoDB与对话存储的设计 使用MongoDB来储存对话&am…

使用Ruby进行视频内容的自动化分析

在数字化时代&#xff0c;视频内容的爆炸性增长为数据分析带来了新的挑战和机遇。视频不仅是一种流行的娱乐形式&#xff0c;也是传递信息和知识的重要媒介。自动化视频内容分析能够为企业提供洞察力&#xff0c;帮助他们优化内容策略、提高用户参与度和增强市场竞争力。本文将…

基于二分查找的动态规划 leetcode 300.最长递增子序列(续)

封面解释&#xff1a;你看那一口口剑&#xff0c;像不像一个个子序列【狗头】 一。前置条件 阅读本文之前&#xff0c;建议先看一下上一篇文章&#xff1a; 基于二分查找的动态规划 leetcode 300.最长递增子序列-CSDN博客 起码把对应的leetcode题目、以及对应的官方题解二&a…

论文不会写怎么办?推荐这5款AI论文工具帮你一键搞定!

在当今的学术研究和写作领域&#xff0c;AI论文工具已经成为不可或缺的助手。这些工具不仅能够提高写作效率&#xff0c;还能帮助研究者生成高质量的论文。本文将推荐五款优秀的AI论文工具&#xff0c;并特别推荐千笔-AIPassPaper&#xff0c;以帮助读者更好地完成学术写作任务…

Go 1.19.4 序列化和反序列化-Day 16

1. 序列化和反序列化 1.1 序列化 1.1.1 什么是序列化 序列化它是一种将程序中的数据结构&#xff08;map、slice、array等&#xff09;或对象状态转换成一系列字节序列的过程&#xff0c;这些字节可以被存储或通过网络发送。 在GO中&#xff0c;序列化通常涉及到将结构体或其…