第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定

百萬架構(gòu)師第二十課:源碼分析:Spring 源碼分析:手寫定制自己的ORM框架|JavaGuide

標(biāo)簽:
Java

基于Spring5实现ORM

初衷:

单表查询不写一句SQL,自动生成

查询的结果自动映射为Java对象

1、我要传一个复杂的查询条件,怎么传?

想到了用对象来传,但是有问题

  • a)、跨表联查的条件

  • b)、无法携带判断逻辑的运算符

  • c)、or 或者 and 无法区分

2、自动映射类型判断麻烦 ,用rs.getObject()方法

// 各自的厂商实现自己的链接
// MySQL为例,以下类型Java语言中是不存在的
// bigint ,由开发厂商自动映射好了
// varchar
// int
{
	 System.out.println(rs.getObject(columnName).getClass());   
}

3、跨多种数据库如何统一API

4、数据源的动态切换如何来做?

AbstractRoutingDataSource数据源自动路由,执行数据连接以前,根据业务规则来动态获取到一个连接

从而达到动态切换数据库连接的效果

为了操作方便,每次置换完,执行完成以后,会将数据源恢复到默认的设置

5、SQL注入

1、首先将QueryRule构建好,把所有的查询条件保存到一个ruleList中

2、再写一个工具类QueryRuleSqlBuilder,循环ruleList对每一个条件分别处理processAnything,主要是构建where后面语句

3、process以后propertisList 保存诸如 and name = ? , values tom,利用索引位置相同,来进行一一对应

问:selectbysql就相当于没有使用框架,不符合之前统一参数,统一查询方法?

答:不推荐使用,如果一定要多表查询,只有两种方案

a) 写SQL语句

b) 查多次,在内存中处理数据关系,一般会在Service中进行处理


在Java代码中处理,会让程序员更加容易理解

如果给大串SQL,这会让后来接手的人直接想死

我见过一条SQL语句有10行之长的,我直接看晕了

----------- 在我的团队中,极少数使用多表关联查询 -------------

问:······这个PK主键传过来怎么用?有什么好处

答:<T extends Serializable,PK extends Serializable> 传与不传不影响功能

目的:返回结果不需要再手动的强制类型转换

问:如果用老师这个框架来组装SQL,复杂查询的话,会不会变得难以组装?

比如说查某个表的字段是另外一个表的条件,以此类推多个表的话?

答:这就是属于多表查询

问:连接操作,还有如果表没有主键PK 还需要传?

答:只要用我的框架,每个表必须有主键,哪怕是自增

为了降低程序设计的复杂度
来源于: https://javaguide.net

微信公众号:不止极客

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報(bào)

0/150
提交
取消