晋中市榆次区间隔和顺县仅120多公里,围坐在通讯兴旺、交通便当的当下,卜某回家的路竟走了13年。
完成逻辑SqlSource是读取XML中SQL内容并将其发送给数据库履行的目标,心贴心共假如咱们在履行前能阻拦到该目标,并将其间的SQL替换掉便达成了咱们的意图。假如咱们能在SQL履行前将SQL中一切的表名前拼接上对应的库名的话,创好那么就可以完成数据源的切换了,创好下面咱们讲一下运用JSqlParser和Mybatis阻拦器完成该逻辑,凭借JSqlParser首要是为了解析SQL,找到其间一切的表名进行拼接,假如咱们有更好的完成办法,该组件并不是有必要的。
作者:围坐京东稳妥王奕龙物流的分拣事务在某些分拣场所只要一个数据源,围坐由于数据量比较大,将一切数据存在一张表内查询速度慢,也为了做不同设备数据的分库办理,便在这个数据源内创建了多个不同库名但表完全相同的数据库现在需求上线报表服务来查询一切数据库中的数据进行计算,那么现在的问题来了,该怎么满意在装备一个数据源的状况下来查询该数据源下不同数据库的数据呢,凭借搜索引擎查到的分库完成大多是凭借Sharding-JDBC结构,装备多个数据源依据分库算法完成数据源的切换,可是关于只要一个数据源的体系来说,我觉得引进结构再将单个数据源依据不同的库名装备成多个不同的数据源来完成分库查询的逻辑我觉得并不好。首要经过反射获取到SQL,心贴心共getSpecificDBName办法是需求自界说完成的,心贴心共其间parameterObject目标是传到DAO层履行查询时的参数,在咱们的事务中是可以依据其间的设备相关参数拿到对应的所在库名的,而设备和详细库名的映射联系需求提早初始化好。其间包含着必要的履行逻辑,创好咱们需求做的作业就是在这些逻辑履行完之后,创好对SQL进行改造,所以这次完成咱们运用了装修器形式,在本来的SqlSource上套一层,履行完SqlSource自身的办法之后对其进行增强,代码如下:publicabstractclassAbstractDBNameInterceptor{/***SqlSource的装修器,作用是增强了getBoundSql办法,在基础上增加了动态分库的逻辑*/staticclassSqlSourceDecoratorimplementsSqlSource{/***SQL字段称号*/privatestaticfinalStringSQL_FIELD_NAME=sql;/***本来的sqlsource*/privatefinalSqlSourcesqlSource;/***装修器进行封装*/publicSqlSourceDecorator(SqlSourcesqlSource){this.sqlSource=sqlSource;}@OverridepublicBoundSqlgetBoundSql(ObjectparameterObject){try{//先生成出未修正前的SQLBoundSqlboundSql=sqlSource.getBoundSql(parameterObject);//获取数据库名StringdbName=getSpecificDBName(parameterObject);//有用才修正if(isValid(dbName)){//生成需求修正完库名的SQLStringtargetSQL=getRequiredSqlWithSpecificDBName(boundSql,dbName);//更新SQLupdateSql(boundSql,targetSQL);}returnboundSql;}catch(Exceptione){thrownewRuntimeException(e);}}/***校验是否为有用库名*/privatebooleanisValid(StringdbName){returnStringUtils.isNotEmpty(dbName)&&!null.equals(dbName);}/***获取到咱们想要的库名的SQL*/privateStringgetRequiredSqlWithSpecificDBName(BoundSqlboundSql,StringdbName)throwsJSQLParserException{StringoriginSql=boundSql.getSql();//获取一切的表名Settables=TablesNamesFinder.findTables(originSql);for(Stringtable:tables){originSql=originSql.replaceAll(table,dbName+.+table);}returnoriginSql;}/***修正SQL*/privatevoidupdateSql(BoundSqlboundSql,Stringsql)throwsNoSuchFieldException,IllegalAccessException{//经过反射修正sql句子Fieldfield=boundSql.getClass().getDeclaredField(SQL_FIELD_NAME);field.setAccessible(true);field.set(boundSql,sql);}}//...}界说了AbstractDBNameInterceptor笼统类是为了完成复用,并将SqlSourceDecorator装修器界说为静态内部类,这样的话,将一切逻辑都封装在笼统类内部,之后这部分完成好后研制直接完成笼统类的通用办法即可,不用重视它的内部完成
我国新闻网此前,围坐12月4日下午1时22分许,琼瑶在台湾新北市淡水区的家中轻生身亡,终年86岁。台媒TVBS家祭完毕之后,心贴心共现场传出《还珠格格》的片头曲《当》,家族跟着礼仪人员的列队一同送她到火化场。
1998年首播的电视剧著作《还珠格格》更在东亚区域享誉盛名,创好不仅在我国大陆、台湾、香港等地获得收视冠军,在日韩和东南亚等地也深受欢迎。
古巨基的经纪人敖君怡代表古巨基到会,围坐她泄漏古巨基为琼瑶茹素7日,以表达哀悼之意。近期,心贴心共中禾宝桑推出的植然乐NFC100%石榴汁敏捷在饮品商场锋芒毕露,其凭仗朴实口感与丰厚养分赢得了顾客的广泛好评
尽管气候现已入冬,创好但整个会场济济一堂,创好俨然一片热情高涨的海洋,阿来教师从文学的开展谈起,用朴素诙谐、通俗易懂的言语浅显易懂,为我们讲解了文学的开展进程和个人展望,并强调了阅览对个人成长、社会进步的重要意义,引领师生进行了深入的哲学考虑,还特意为广阔青年共享了自己的阅览办法与阅览心得。2023年,围坐公司以听为中心体会,围坐正式将原沃阅览产品焕新晋级为联通爱听,不光联通用户免流,整体用户均可登录渠道获取图书、听书、短剧、视频课程等海量资源,还可经过AI技能完成文生语音、方言读书、声响复刻、语音测评等立异体会,让用户取得可读、可听、可录、可测的优质感触。
感触文学魅力,心贴心共阅览联通愿望,心贴心共12月11日下午,由联通在线长沙公司、共青团安徽大学委员会主办,安徽大学青年文化传媒中心承办,中国联通安徽省分公司协办的名家讲坛活动在安徽大学磬苑校区文典阁隆重举行。往后联通在线长沙公司仍会坚持深耕数字内容膏壤,创好用科技与立异服务文化产业,为用户供给优质体会,饯别央企担任。
顶: 5868踩: 932
评论专区