首页 > 其他分享 >2023.4.6周四每日博客

2023.4.6周四每日博客

时间:2023-04-06 22:11:06浏览次数:38  
标签:周四 getConnection 博客 lookup DataSource key 2023.4 determineCurrentLookupKey dataS

为了实现多表间相互的查询,今天学习的多表连接,

我们都知道,在SSM框架中,我们在applicationContext.xml

配置文件中添加数据源就可以实现数据库增删改查

但是只能连接一个数据库,这个时候我们就要从spring提供的源码下手看看有没有有关数据源切换的方法

,找到关键源码(AbstractRoutingDataSource类,

该类就相当于一个dataSource的调度者,用于根据key值来进行切换对应的dataSource。):


@Override
public Connection getConnection() throws SQLException {
return determineTargetDataSource().getConnection();
}

@Override
public Connection getConnection(String username, String password) throws SQLException {
return determineTargetDataSource().getConnection(username, password);
}

/**
* Retrieve the current target DataSource. Determines the
* {@link #determineCurrentLookupKey() current lookup key}, performs
* a lookup in the {@link #setTargetDataSources targetDataSources} map,
* falls back to the specified
* {@link #setDefaultTargetDataSource default target DataSource} if necessary.
* @see #determineCurrentLookupKey()
*/
protected DataSource determineTargetDataSource() {
Assert.notNull(this.resolvedDataSources, "DataSource router not initialized");
Object lookupKey = determineCurrentLookupKey();
DataSource dataSource = this.resolvedDataSources.get(lookupKey);
if (dataSource == null && (this.lenientFallback || lookupKey == null)) {
dataSource = this.resolvedDefaultDataSource;
}
if (dataSource == null) {
throw new IllegalStateException("Cannot determine target DataSource for lookup key [" + lookupKey + "]");
}
return dataSource;
}

/**
* Determine the current lookup key. This will typically be
* implemented to check a thread-bound transaction context.
* <p>Allows for arbitrary keys. The returned key needs
* to match the stored lookup key type, as resolved by the
* {@link #resolveSpecifiedLookupKey} method.
*/
protected abstract Object determineCurrentLookupKey();
可以看出方法getConnection()调用的determineTargetDataSource则是关键方法,这个方法返回了具体使用的是哪个数据库;而

determineCurrentLookupKey()方法来返回当前数据源的key值。

通过对这个方法的调用·可初步实现不同表单间的连接

标签:周四,getConnection,博客,lookup,DataSource,key,2023.4,determineCurrentLookupKey,dataS
From: https://www.cnblogs.com/sion6/p/17294412.html

相关文章

  • 使用open live writer客户端写博客(亲测有效)
    博客都开了这么久了,才开始将资料上传,但是每次都要登录网页确实很麻烦,所以就用openlivewriter,使用起来真的是挺方便的,所以将我在安装配置时,发现的问题汇总起来以便日后再次碰到忘记怎么处理了,哈哈,我记性不好 一:安装                              ......
  • 2023.4.6学习记录
    p15神经网络_卷积层importtorchimporttorchvisionfromtorchimportnnfromtorch.nnimportConv2dfromtorch.utils.dataimportDataLoaderfromtorch.utils.tensorboardimportSummaryWriter#准备测试集dataset=torchvision.datasets.CIFAR10("dataset",train=False,......
  • 我的博客刚刚创建!
    在生信分析领域利用博客记录和分享代码的好处如下:方便知识共享:博客可以帮助研究人员将自己的经验和知识分享给其他人。通过记录自己的实验过程、数据分析流程以及代码实现,可以使得其他有类似问题的人快速了解相关知识。提高交流效率:生信领域涉及到很多复杂的数据处理和分析......
  • 团队博客-23.4.5
    <%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"&g......
  • 2023.4.5每日总结
    二进制存储packagepdf;importjava.io.*;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.Statement;publicclassout{publicbooleanin(Filefile)throwsException{Class.forName("com.mysql.jdbc.Driver");......
  • 2023.4.6每日总结
    <%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"&g......
  • 坚持写博客
    理由如下:在程序员这个行业,坚持做技术写作的人一直比较少。我和身边的朋友沟通后,发现他们除了借口没有时间外,大多没有意识到写作带来的收益。在他们看来,将自己学到的知识简单记录下来就足够自己需要的时候回顾了。而技术写作通常需要花更多时间,因为需要将技术的细节以及来龙去脉讲......
  • 为博客园加上PWA支持
    在这篇博客文章中,我将分享如何将您的博客首页作为PWAApp固定到iOS设备的主屏幕上。这样,博客将以全屏模式打开,提供更好的用户体验。在查阅了iOS如何添加网页到主屏幕可以全屏打开后,我了解到只需在网页的head内添加以下标签即可实现该功能:<metaname="apple-mobile-web-app-capa......
  • 转载自团队博客:基于深度学习的人脸识别会议签到系统
    电梯演讲:https://www.bilibili.com/video/BV1kc411W7w4?t=9.9原型:1,主界面  2,会议管理  3,人员管理  4,会议室管理......
  • 如何在一个月内搭建一个自己的博客网站
    目的和定位明确你想要做什么,目的是什么。有了明确的需求和目的,才有持续做下去的驱动力。做一个网站需要投入大量时间、金钱和精力,只投入,不产出,是有很大问题的,早晚会放弃。本站的目的:自媒体,分享思想,分享技术。提高个人(FansLei)和团体(FansUnion成员)知名度,帮助朋友、校友、网友......