好了,那么再看屏幕啊,今天我们的目标啊,我们要实现这个,我先把目标说了 听。好啊,我们进到咱们班的这个代码目录啊。 annix 起来。好,今天的目标。 首先这个你是不得实现,你不得输入账号密密码是不是?要干嘛?认证吗?是不是?对呀, 对哎,那你别忘了这还有一个微信扫码认证,就这这会出来一个页,二维码让你扫,对不对?对,当你把这个基于账号密码认证的方式,我们把代码写完了, 那个微信扫码很容易就实现了。所以今天我们最重要的就是要把这个实现好。那接下来你要清楚,我们要实现这个。接下来就是我们说的这一步了。下边这个内容用户认证 啊,就最最最终要实现我刚才说的啊,输入验证码,输入账号,输入密码,然后呢,认证好,认证通过呢,颁发令牌。 令牌颁发完成之后呢,存在了客户端的 cookie, 然后携带令牌访问我们的网关,有网关转发到微服务。 其实这个过程现在我们已经测通了,对不对?我们现在主要测的我们现在啊,接下来啊,要做的事是什么?就我刚才说的,在画面当中输入账号密码,然后进行认证,其实应该是属于这一块的内容, 这块那个哎,这个这个认证服务就这块的那个对,我们要实,我们要实现一个什么?听好,这个叫统一认证入口, 我们要把这个统一的认证入口实现了。我跟你说这个这个功能我讲的你听明白了,那你到你到企业当中,你想实现手机验证码, 你你没发现很多,比如说转账之前是不是都有一个输入手机验证码,是不是啊?还有微信扫码, 还有反正各种认证方式,这个统一认证入口,你只要实现了,按照我讲的这个架构把这个东西写出来了。其他的你就是按照我的架构往里边写的,写累写方法就行了,很简单,所以你要注意听。 ok, 那现在我们要怎么做呢?你要实现我们刚才说的最终 那个目标,首先我们分很多步来做啊。首先要做的啊,那你现在的用户,你是在内存里边,你的用户现在是在哪呀?打开 在这你看你的用户信息现在是不是都在内存里面存着的,你看你看,这个是不是在内存里面存着的,写死的呀,张三李四呀。而现在我们第一步要做的啊,就是要 让我们的认证去查我们的数据库。那我们数据库当中啊,我们在部署认证服务的时候,给大家当时已经创建好了一个认证的,叫做 users 啊,你看 好啊,就是认证数。呃,用户数据库找一下, 这是 content, 这是 media, 这是 setum, 这是 users 是吧?所以在这儿我们要让他查询这一张表,这一张表就是我们的用户表。 所以我们要实现刚才我们说的目标。第一步我要做的事就是要输入一个账号,我能查这个数据库,看看账号在不在,输入一个密码,我能比对密码对不对 哎,然后输入一个验证码,我能看看验证码对不对。这三项我们一个一个来做。先要让咱们这个认证要连我们的数据库啊,目标明确了啊。听好,那这个连这个数据库我们应该怎么做呢?听好还是一些配置?还是 一些配置,加一些开发?就是我们整合 spring security 框架整个的这个这个步骤节奏就是这样的,所以希望大家一定要注意听比较碎啊。 那么你刚才看到的这个内容,大家看到他就是存在内存的对吧?所以这块东西我肯定把它屏蔽。嗯,那么在屏蔽之前,我不妨来读一下他的代码,你会发现,看这 他返回了一个叫 user dto service, 你点进去,其实它是一个接口。是不是接口当中提供了一个方法,叫做 low the user by user 内幕, 这个名字你一看你也能听得懂,就是通过 user name 来得到 user 信息,是不是这个意思?所以 听好,看这个流程你就知道怎么去做了。我们说当一个认证过来之后,首先到我们 spring security 框架认证管理器, 然后经过他的一个 provider, 哎,这个 d a o provider, 它就是用来查询数据库的。 对,他就是用来查你数据库的。他会怎么查数据库?他就会通过刚才你看到的那个接口,因为接口当中是不是有一个叫漏的 user by user 内部方法呀,就调用这个方法来查数据库。 只不过现在你没连数据库,但是他也是掉这个方法,只不过他是从内存查。所以各位你看这个流程。所以这一步是最关键的,只要他把用户的信息拿到了下边都简单了。开始比对密码,然后开始把用户的信息, 然后放在他的上下文当中,作为用户的身份。那主要是前面这一段。所以呢,现在我们就思考吧。那我们怎么样来实现这个从数据库来查。就我刚才说的吗?首先你得把这段代码给他屏蔽了, 就这段代码,你要把它屏蔽了。但如果我这样一个屏蔽,你会发现,你看这个并,他是不是最终会创建一个 user details service 并呢? 而这个 b 里边就有一个漏的刚才说的那个白优的内幕方法。所以很显然你要把它屏蔽,那你得想办法来创建一个你自定义的 user detail service。 是不是这个逻辑啊?对啊,所以现在呢?如果你 创建好了之后,这个流程就变成什么样子呢?就变成这个流程了。当他查用户的时候呢,他就开始去请求你写的这个病的方法来查用户。 如果用户不存在,那么哎,他就会反反馈一个信息,说用户不存在。如果用户存在,他就开始比对密码,密码正确就认证通过,密码错误就认证失败。他是这个流程。 所以先接下来我要做的事是把它屏蔽了了之后啊,接下来我要做一件事,我要自定义一个 user dto service。 那我们打开我们的工程,这个自定义 user detail service。 你是要能说出来的。就是你要说我整合了 spring security 框架,你连自定义 user detail service 都说不出来,说明你根本就不会听好。所以在这我们在这要见 一个 service。 而现在我要自定义的是一个什么 user detail service 的一个实现类, 对吧?啊,那这个呢?就是我们他要去实现的一个接口,正是 spring security 给我们提供的这个 user detail service 接口。 你看他是不是有个 low 的方法呀。所以那那很显然你就大概就清楚了啊,这他是一个病,我用 component 标一下,然后其次在这我肯定要注入我们 user 的 map, 将来查用户对不对 啊?不就这个这个流程吗?好,那在这个里头你说吧,你怎么写?这这这里头是不是就该查查询我们说的这个数据库了,对不对?所以这里边你会怎么写?查询数据库查 数据库。那根据什么查?这这里面是不是有个参数对不对?这个参数。听好,这个参数。这个 s 啊,就是他输入的这个 u z 内幕了。所以我们说 u z 内幕就是账号嘛,我们应该根据 u z 内幕账号来查询数据库。 那如果要查询到数据库啊,说这个用户不存在呢?如果要查询到数据库,说这个用户不存在怎么办呢?往上翻这儿, 你你这个程序,你要返回一个空就行了,只要你返回空。因为各位,这个方法是由 spring security 框架调用的, 所以说我们这里面明确一下,就是当我们说查询到用户不存在,听好,这时候我们这里返回 闹即可。只要你返回闹我们说的这个 spring security 框架,他就会干嘛,他就会歧视,给一个异常,就会抛出 异常,这个用户不存在了,只要你只管返回空啊。那么还有一点就是,那如果说那查询到这个用户存在呢?如果查到了用户呢? 查到了用户,正常情况下让你写这个代码,你是不是该比对密码了呀?那这个比对密码不用你来做,就是目前来说啊,先不用你来做。 因为什么?因为你刚才也看到了我屏蔽的这一堆东西,人家也是只提供了一个密码,放到这了,也没有让他写比对密码。所以现在呢?如果查到了用户啊,我们就可以干嘛?我们就可以拿到证 的密码。那语文老师,你拿正确的密码目的是啥?你拿正确的密码,最终我们要把它包装成 哎,最终我们要把它封装成一个 user details 这个对象,然后给我们说的 spring security 框架返回。那么返回之后呢?由框架进行密码的比对, 对比大,大家听明白了意思吧?对比对 ok? 所以这时候如果密码不一致的,他就他就会抛出异常,说密码不一致,认证失败。他懂这个流程了吧?好,那现在你就写就行了嘛。那就简单了。 l c user map 这个就是我们用户表的。 那么你现在呢?想怎么说呢?来查询这个根据 u 的内幕。你你是不是得打开我们的表结构呀?你瞧一瞧来看一下吧。这不,这就是他 u 的内幕账号,这是他的主见。很显然,这里边我们要查的话,怎么怎么做? 怎么查? select 你还能 by id 吗?不能吧。 by id 是根据主见吗?是不是你?你怎么怎么写?是不是有一个 select one 是不是对,对不对?账号不是不,账号是不重复的,对不对?所以我们可以这样。 嗯,然后在这个里边还是我们之前学的知识吗? eq 啊 eq, eq 里边是啥? eq 不就是你想要用哪个 get user name 嘛,是不是?嗯,那这个 s s 不就是 user name 吗?我在外边定义一个吧,就是 user name。 然后呢,这个就是 s, 这就是我们说的账号了, 账号了。然后呢,把它放进去。你这样你看的更直观。 ok, 那我这是不是就查出来了?查出来之后,关键我们刚才不是说了吗?你你要判断,如果他等于空,你会怎么办?返回空就行了。刚才不说吗?返回空即可 啊。那如果不等于空呢?不等于空,你不是我刚才不是说了吗?干啥呀?是不是要拿到一个正确的密码呀?对啊,你要拿到,那就 get pear past word, 我就拿到一个正确密码。好,那有时候老师拿到正确密码,你怎么样?给框架了呀?给框架 这里面是不是最最重要封装成这么一个东西啊?对,所以它里边有一个 user 啊, user, 然后点位置往里边放啊,一个一个往里边放,一个是 username 放进去,还有一个 password, 把这个正确的 password 放进去。 还有一个东西也要放。这个是一个什么权限?他啊,这个是一个权限, 权限。比如说老师,那这现在这个权限我也不知道是啥,你要是不知道是啥,现在我们先弄一个假数据放这吧。比如说老师,我假数据我不写行不行?这个权限是个空,不放行不行,他会报错啊。所以这个权限必须至少放一个。好,然后 build 一下。 好。这时候我就拿到了一个 user detail。 各位,你告诉我是不是拿到了,拿到这个东西哎, 返回。你看,这就是我们说啊,你怎么集成这个 spring security 的?这个你得知道 啊,重写了,就是我们自定义了一个优则 dto, 这个 service 的一个实现类,我们去把它重写定义出来。定义出来之后,接下来还要注意一点,因为你数据库的密码。听好,数据库的密码是这种格式。这是啥格式? 反正不是铭文,反正不是。比如说你的密码是一二三,这里边就存一二三,不是这么存的吧。我为啥这么说呢?这个时候就需要来看,在你考的这个配置类当中,他有这么一个东西, 看这 看着,你看我的注视 就是这个啊,这个 incoder, 这个密码的。这个这个编码方式就是铭文的方式。 啥意思啊?就是你数据库是铭文,你输入一个密码,我,我按照铭文给你比对。明白意思吧?这是按照铭文比对的方式, 输入一个一二三,数据库是一二三,那我就依靠是看看是不是相等就即可就完了。这就是铭文。但现在你数据库里边显然不是铭文。你是另外一种加密方式,叫做 b craft, 就这一种方式。而这一种方式听好,测一测一下, 这是啥意思?就是这种 be grab 的这种方式,它也是一种加密的方式。而这一种加密的方式,我跟你说,用起来它的安全性更高一些。为什么? 因为他每次生成的密码他都不一样,他他和 m d 五都不一样。 m d 五是啥? m d 五是你一串东西,比如说一个字符串,假如说就是一个字符串,你生成一个 m d 五串,他是一样的,只要这个串不变,原串不变, m d 五值还是一样。我们不是刚学过文件的比对吗?是不是 这这个一样。而他呢?去生成一个,你比如说他这有什么呢?你看他是不是里面有个 inco 的,是不是?那我就用这个 inco 的,我让他给我生成一个密码。 那么生成这个密码,你是不是得有原始密码,对吧?我这原始密码。假如说啊,一二三四五六。我我们的这个数据库的密码啊,都是六个一啊,然后呢,我就把它放进去,哎,放进去那就 就生成了一个 incode, 所以这个 incode 我刚才说了嘛,每次生成都不一样。所以假如说我让他生成五次。听好,这个时候我们打印输出一下,你看一下,他就不一样。 咱这原文是六个一生成的,这个加密后的串, 你看看是不是都比,是不是都不一样啊?对啊, 对。但是那有时候老师他不一样的,你将来去比对,他能比对成功,他能比比对成功。你比如说你看他怎么比对啊。 叫验密码。怎么叫验密码?它里边有一个叫 match 啊。他这个方法两个参数,这两个参数一个肯定是 原始密码,对不对,一个肯定是输入密码,是不是这个逻辑啊。所以那你点开,我也不知道哪个参数是哪个,我老记不住。记不住之后呢,你点开你看,你找一下, 这里面有没有一个 be grabbed, 看一下,就这个 这个吧。这不就是一个 be corrupt 吗?是吧,我们看看,这里面肯定有一个方法,叫做就是 match。 就这个 啊,你看一下吧。各位,你告诉我第一个参数是啥? 这不就是原始密码吗?就是你输入的密码,这个是编码后的密码吗?是不是这意思?你现在也就是说你现在要叫验的话,你输入什么?这是你输入的吧。对,对。然后呢,你编码后的密码是不是他对,所以这时候呢,你就拿到 来再运行一下,也就是这个编码就是根据六个一编码生成的嘛,你现在输入的是不是也是六个一嘛?对,第一个参数啊,你看都是处吧。 参数一是输入的,输入的铭文对吧?参数二上面是参数一是输入铭文。参数二是啥?是正确密码 对,加密后的串,你要注意。 ok, 所以这个就是一个比对的方法。假如说啊,我我单拿出来,拿到范循环后边啊。注意假如说这个,这就是编码后的啊, 把它写上去好。前面呢,他的正确密码是不是六个一啊?这肯定是处吧,对不对?那假如说我这个是随便写这个他应该就最终干嘛?肯定是 force。 为啥要学这个代码?因为后边你需要自己手写,就是在我们的认证方法当中,你会来比对密码的,所以这个方法你是要学会的。 嗯,最后一个是不是 force 呀?就是他们 因为这个正确。这个编码的正确就是六个一吗?而现在你输入的是一二三四吗?很显然是不不被盗的。 ok? 那么这样再回到啊,再回到刚才这里看,这 我是不是把它改成 be correct 了?对啊,也就是我们项目使用的是 be correct 这种加密方式。另外还有一个点还要改,就这个这个地方比较多啊,因为你再去申请令牌的时候,这里 当时我不是说了吗,你申请令牌是不是还要输入一个叫做客户端的密要,原来那个密要呢,也是铭文,现在呢?你要把它改成 b crap 加密后的。 嗯,好,这两个地方我们都要把它改。改完了之后注意。接下来我们再来测试。我们这个时候要重启的是 认证服务了,因为你刚才改的都是认证服务,然后认证服务支持什么呀?从数据库查用户 是不是这个逻辑啊?就是这个战线比较长。就是我说了,现在我们要实现什么目标啊?目标啊, 一改都把大家改晕了。目标是啥呀?目标我们要实现啊。最终页面输入账号密码是吧?一输账号密码,哎,都开始发令牌了,叫验了。好,那你发令牌叫验。那你不得查数据库啊, 对不对?那我刚才实现的不就是查数据库吗?那你怎么实现查数据库的呀?因为我们说了呀,你是需要去请求一个 user detail service 的呀。啊,所以说你刚才是不是自定义的一个 user detail service 呀,对不对?说很显然,如果你来测试的时候,我就在这儿打断你, 只要你来申请令牌,他一定会请求这里对不对。好,所以那我们现在呢?就打开这,我们让他让他来查一下哪个还这个密码模式行不行?可以吧,执行进来了吧。你看这个是谁? 张三啊,各位来看一下。数据库有张三没?数据库的 u 在内部里面有张三吗?没有啊,没有。那你想都不用想,最后肯定是失败的。 看没有认证吧。对啊,所以各位,我现在要来一个他就能够通过的。哪个呀?往后翻怎么数。 那你这个 u 在内幕是不是得从数据库找了?对,那数据库里边你看也是不是有一个 t e 这里边啊。 s t u e s t u 二 t 都是六个 e 啊,密码都是六个 e。 正确的密码,所以你输入 t e, 这是六个 e。 好,继续来, 大家看,这是不是就生成了。对,那有人说老师,那你这个密码如果输错了呢?输一个,随便输一个 是吧,对不对?这不就都是框架给我们做好了,你只要按照他的要求去配就行了。好。所以刚才我们是不是就实现了。怎么样连接?把连接我们的这个用户数据库,用户表来查询用户信息来进行认, 然后申请令牌,这个过程是不是实现了?好,划重点,注意听。划重点啊。说啊,你集成了 semi security, 你是怎么做的呀?我们自定义了一个 user detail service, 这是不是我们做的其中一个自定义了一个 user d two service? 在我们自定义的方法中,我们先哎查询数据库啊,然后呢,判断这个用户在不在,然后比对密码等等啊,这些。 说这个一定要注意。怎么去集成 spring security? 这只是一个啊,你看我这一连串好多, 将来你说啊,你这个项目用的是什么叫 security? 嗯,很好,我们公司正缺这样的人才。好。那你说说吧,你是怎么用的?我自定义一个 user d two service。 好,还有吗?嗯,我好像就自定了一个腾,我跟你说,后边我讲了好多,你都注意听。 ok?
粉丝7.8万获赞29.1万


今天给大家分享一个数据库连接工具, navicat, 这款软件是收费的,安装后有十五天的试用期,打开就是这个样子, 如果我们想不付费继续使用,就要想办法进行破解,破解方式也相对比较简单,可以去百度上面搜索一下 navicate 破解就会看到很多类似的文章,我们找一条一起看一下。首先我们大概浏览一遍,看看是不是我们需要的, 确认过之后找到下载链接,这里提供的是一个百度网盘的链接,不多说,直接去下载就好了。因为我之前已经安装了 navicat, 所以这里我只需要下载注册机,下载完之后是个压缩包,我们解压或者直机运行一下,里面的可执行文 键,打开后是这样的,密密麻麻的一大堆东西,接下来我们只需要对着文档操作就行。第一步,把该勾上的先勾上,然后打个补定,成功逆过之后是这样的。接下来第二步,我们生成一个注册码, 然后打开 namicad, 把刚生成的注册码填上去,点击激活会生成一串请求码,拿到请求码之后, 把一个请求码复制到注册机上,点击生成激活码,就可以生成我们需要的激活码,再把激活码复制到 navicat, 点击激活就可以顺利激活我们的 navicat 了,之后就可以很丝滑的使用了。

前面的课程中啊,咱们已经实现了用户下单,那接下来呢,咱们来看下一个章节,就是订单支付,其实啊就是完成付款功能。 那么说到支付啊,大家应该都不陌生了,因为咱们在现实生活中啊,经常购买商品,并且呢使用支付功能来付款, 咱们在付款的时候啊,可能使用比较多的呢就是微信支付和支付宝支付了,在咱们苍穹外卖这个项目中啊,咱们选择的呢就是微信支付这种支付方式, 那么在这呢咱们需要来说明一下啊,要实现微信支付,就需要注册微信支付的一个商户号,而注册这个商户号呢是有一些要求的,比如说你必须要有一家企业,并且呢需要有正规的企业营业执照,只有具备 了这些资质之后啊,才可以去注册这个商户号,然后才能开通支付权限,那么对于咱们绝大部分同学来说,应该都不具备这种资质,那我们这个功能还怎么实现呢? 其实啊,对于微信支付功能,最重要的是了解微信支付的流程,并且能够阅读微信官方提供的接口文档,知道怎么对接。 以后啊大家进入企业如果要开发支付功能啊,这些资质啊,其实都是由企业提供好的,咱们呢只需要开发功能代码,能够和第三方支付平台对接起来,就可以实现微信支付功能了。 所以说在这个章节中啊,我会向大家来介绍微信支付的流程和支付时需要调用的接口,并且呢使用我们传志注册的商户号呢,来完成微信 支付。大家以后进入企业开发呢,如果需要实现支付功能,只需要将这个商户号替换一下就可以了。 那接下来呢,咱们就来看一下我们本章节要讲解的内容,咱们呢是分成这么四个部分来讲,第一个呢是微信支付的介绍, 在这个小节当中啊,咱们会全方位的来了解一下微信支付,包括微信支付的各种产品呢,还有微信支付的接入流程啊,还有微信支付的一些重要接口等等。 然后第二个部分呢是微信支付的一些准备工作。然后第三部分呢是导入微信支付的功能代码, 其实微信支付的代码呢是非常固定的,并且呢比较繁琐,咱们呢其实没有必要去手写这种代码,所以咱们就直接导入使用就可以了,并且这些代码呢其实都是可以复用的。以后大家 进入企业开发时啊,如果要开发微信支付功能啊,完全可以直接使用咱们提供的这个代码。好,那么这是第三部分代码导入,然后最后呢第四部分咱们再来做一个功能测试就可以了。好,那接下来呢,咱们就按照顺序啊,先来看一下我们第一部分,也就是微信支付的介绍, 那么你看啊,微信支付的时候呢,他其实是提供了多种产品,说白了就是有多种支付的形式, 比如说我们看第一种就是付款码支付,那这种方式呢,其实就是打开你的手机微信,然后呢调出你的付款码,那个页面其实就是展示了一个二维码,对不对?然后呢让商家是不是去扫, 一般呢是不是就是在超市这种场所,那么使用的是比较多的,你只需要出示你的付款码,然后超市呢是不是会有相应的一些设备,比如说扫码枪, 然后呢他会去扫你这个付款码,这样呢就可以完成付款。然后第二种呢叫做 g s a p i 支付,那么这种方式呢,一般呢是在我们 h 五应用当中,比如说你在一个 h 五页面,然后呢要进行微信支付,这样的话呢就可以吊起我们这个微信支付, 然后还有就是小程序支付,哎,也就是在我们微信小程序当中来调用微信支付的功能,然后第四种呢是这种 native 支付,哎,你看他这个图标是不是像一个二维码啊?哎,说白了就是什么呢?商家是不是给我们提供一个二维码,然后呢我们用微信扫一扫功能,是不是来进行支付, 这种呢也是我们用的比较多的,哎,然后呢还有 a p p 支付,哎,其实就是在我们手机应用当中,是不是吊起微信支付,那最后一种呢就是这个刷脸支付,哎,这种支付方式呢应该是最快捷最方便 的,对吧?就是你连手机都不用掏出来,然后呢直接刷脸就可以支付,比如说在地铁啊,或者其他的一些公共场所,一些自动的售货机,有很多呢就已经实现了刷脸支付,哎,你连手机都不用掏出来,直接刷脸,然后呢就可以完成付款, 这就是微信支付给我们提供的多种支付产品,然后呢我们可以点击一下下边这个链接到这呢来简单了解一下,你看这个网站呢,是微信官方给我们提供的,叫做微信支付商户平台,那么我们要实现微信支付功能啊,就需要到他这个平台上面来阅读他给我们提供的一些文档, 你看这个地方他是不是有接入直营,对吧?有产品中心,解决方案,还有文档中心等等,咱们在这呢可以简单浏览一下,你看这个地方呢就是我们这个微信支付的产品,刚才我们看到的是不是就是这几种方式,那具体每一种方式 是怎么使用呢?那么你可以点击这个链接,但是在这呢咱们就不再展开去讲了,咱们现在呢只是整体先浏览一下,然后具体的详细信息呢,你可以刻下自己来阅读这些文档, 然后呢回到我们课件当中来,这是微信支付给我们提供的一些产品,对吧?然后接下来呢我们就需要来了解一下,我们要实现微信支付呢,首先就需要来接入他,那具体怎么接入呢?在这个地方呢,他其实就给我们介绍了一下,那么具体我们应该如何接入?首先第一步呢需要来提交资料, 那么这个呢其实都是在线的,你看在线提交营业执照啊,身份证啊,还有银行账户信息等等,并且呢按照指引完成账户验证。哎,这是第一步提交资料,然后提交完资料之后呢,那么微信支付团队啊,就需要在线来进行审核,那么一般呢是 一到两个工作日内就可以完成审核,然后审核好之后呢就会签署协议,当然这个签协议呢也是在线来签好,那么签完协议之后呢,我们就需要来绑定场景,那这个绑定场景是什么意思啊?比如说我有一家企业,那么我需要在线来销售一些商品, 那这个时候呢,我可能就需要来开发一些程序,比如说我开发一个网站,然后在这个网站上面呢我可以实现扫码支付, 同时呢我又开发了一个手机端的应用,比如说手机的 app, 对吧?然后在这个手机 a p p 当中呢,那么我也需要能够支付, 那这样的话呢,我是不是就有两个场景,对吧?一个呢就是我们这个网站这个应用场景,还有一个呢就是我们这个手机端的应用这个场景,那这个时候我们这两个场景都需要能够付款,这个时候呢我们就需要将我们这个 商户号跟我们这个场景来进行绑定,就是每一种场景呢其实都会对应一个 app id, 然后呢可以进行绑定,绑定好之后呢我们就可以使用这个商户号来进行支付了。当然这块这个工作呢,一般我们开发人员其实都不用管, 一般的公司都会有专门的人员来做这些操作,比如说呢他要提交资料啊,签协议啊,对吧?等等,这些可以按照我们这个网站上的这个指引,一步一步往下走就可以了,那么实际上就是点击这个按钮就是接入微信支付,对吧?然后呢按照这个流程去注册商户号,然后呢去绑定场景等等。 这是咱们简单说了一下要接入微信支付那么需要做的一些工作,只有这些都搞定了之后呢,在这个基础之上我们才能去开发我们这个微信支付的相关的功能代码。

了解完了基本的多表查询概念之后,接下来我们来学习内连接查询,那 那么这个内连接查询呢?他其实也分为两类,这两类呢,只不过是写法不一样而已,他们查询出来的结果都是一模一样的。那么这两类分别是影视的,影视的一个内连接 和显示内连接,显示内连接好,内连接显示是是这个是, 那么我们先来说第一种影视的内连接,那么影视内连接呢?是使用,使用这个威尔好,使用,使用威尔条件来消除无用的数据。那举个例子, 我现在想查询所有的员工信息以及其对应的部门信息,那么我们可以这样去写查询 查询所有员工信息和对应的部门信息。 那么怎么来写呢?什么叫做对应的部门信息啊?这个地方要对应,是不是我们发现这个员工表里边的第一 pt id 得科部门表里边的 id 值一样才是对应啊?那么这种不一样的是不是就不对应啊?所以呢,我们要写的话,其实也很简单,我们这样写,色 like, sl、 like 星、 flom、 emp, 然后呢,写个逗号 dept, 这是不是像刚才我们写的可以产生一个迪卡二七啊?然后呢,我们可以写个为二条件,为二条件 emp, 表里边的这个第一批点 id, 他应该等于第一批表里边的这个 id, 是不是就可以了?那么我们可以写 emp, 第二第一批的 id 等于第一批 t 点 id, 好,这样就写完了,当然这个地方提示出来有这个引号,这个加和不加都可以, 我们来执行一下,来看现在的数据是不是就对应起来了?哎,这样就是我们一个影视的一个 内连接查询,非常的好理解啊,也非常的简单。那么对于这个查询我们再说一下,其实呢,一般情况下我们要去查询的话,我们会会查 查询某些字段,不会把两张表里边的所有字段都查出来,我们会做一个选择,起码你看这两个字段是不是重复的数据啊?我们比如说我们要查询 内务员工表的名称,员工表的性别以及部门表的名称,那么这个该怎么写呢?这个地方要注意,我要去查询 查询员工表的名称,然后呢性别以及部门表的名称, 就要这三个字段就可以了。那么这个地方是不是就不能再写信号所替代了?我们应该用其他的方式,那么这个地方我们把刚才的这个复制过来,我们只需要把这个信号替换成具体的列的名称就可以了吧?我们写个内幕,然后呢逗号,写个逗号,然后呢真的 j 一 n d e, 二 j 一 n d e, 啊,真的,然后呢再写个逗号,再写个内容,那么现在有没有问题?有问题啊?两个 内幕呀,这个内幕到底是谁的?这个内幕到底是谁的,是不是就区分不开了?所以呢,我们一般会加上表面的一个限定啊,说 emp 表里边的内幕 和 emp 表里边的真的 emp 表第一批地表里边的内啊,这样写是不就 ok 了呀?有一个表明的限定, ok。 好嘞,这样查是不是也就可以了?那么这样写完了之后你会发现挺麻烦,为啥呢?因为这个表的名称现在叫 emp, 叫 dept, 比较短,如果比较长的话,我们是不是写起来很麻烦呀?所以呢,我们还有一种简化的形式,我们 经常在后期进行多表查询的时候,会为每一个表分别去起一个别名啊,取一个别名,那么怎么写呢?以后写色口正确的写法是这样的,死了。然后, 然后要查啥?我不知道,我先不写,我先不写,然后呢?我写一个芙蓉四扣的一个写法。芙蓉,芙蓉哪个表呢?一言 p 表,然后呢,我们起个别名叫做 t 一,然后再写个逗号,第一 pt 表, t 二当然要加个空格。然后这样写完了之后呢,写一个 v 二条件,条件,条件就是我们的 t 一 用别名来替换 emp, t 表里边的第一 pd id 等于 t 二表里边的 id 好,这个条件写完了,然后查啥呢?查,我们就写 t 一表里边,我们取内 好,然后呢?逗号,然后 t 二表,我们取 t 一表还没取完,再取个真的吧,真的。然后呢,再来 第二表,我们去内好,你看这样写是不是就很方便?因为他是有提示的,特别是用这种图形化界面工具 都有一些提示。那么这样起完别名之后,用别名来替换这个表,得一个书写是不是变得比较简单了?我们可以用第一题二一直往下排就可以了,当然你也可以用特殊的一些词来起这个别名,更方便记忆 一些,也可以我们来执行一下。 ok, 结果还是这么一个,结果是一模一样的。那么这个思考,将来我们如果真的要去写的话,真 真正的写的时候,一般情况下我们都不会写到一行里边,因为写到一行里边如果思考比较长的话,是不方便阅读的,我们一般会把它分开写,那么正最正规的写法是这样的,一个关键字写一行, 然后下边你要查某个字段,查完了之后呢,一个字段占一行,一个字段占一行,然后呢?表一个,表占一行,一个条件占一行,那么将来可能会有好多条件用按的呀,或者奥这种关键字做连接, 一个占一行,这样写完了之后有什么好处嘞?方便我们将来加注释说这是什么员工表,员工表的姓名, 然后呢,这是什么员工表的性别,这是什么部门表的 的名称,对不对?等等哈,所以呢,我们这样去写的话,这个死口就比较符合将来在企业中写死口的一个标准了,我们把这个死口给他复制到 这个地方,那么这个地方呢,我们就说了一下这么一个小事情,我们把这几个思考都给他复制过来吧,都给他复制过来。好,都复制过来, ctrl c 粘一下,这是一个例子啊,例子, 这就是我们所说的例子,这就是我们所说的影视内连接。好嘞,那么对于影视内连接很好去理解啊,用威尔条件来清除无用的一些数据即可。 那么接下来我们来说一下他的另外一种写法,叫做显示内连接,那么显示内连接就需要去显示的去指定这种连接方式了, 那么怎么个指令法呢?我们先得知道一下写室内连接的一个语法,这个语法呢还是比较特殊的,他是死了 like, 当然后边写 查询的字段啊,字段列表,然后呢? flom, flom 呢?你写一个表名,这个表呢?只写一张表啊,只写一个表,一个表名,表名写完了之后呢,接下来你就需要去加入哪一张表了,要去加入写个婴儿 音哪,哎呀哎呀,找音表名。好,这个写个表名一,表名二,然后呢,二后边写加入的条件, 这就是一个显示内连接的语法,我们也可以来演示一下,我们还是查询所有的数据, spat 星 en p 表主表吧,然后呢, ener, gree 加入哪个表呢? geo i 呢? geo i 加入 dept 表, 然后条件就是啊,条件就是 emp 点 dpd id 等于等于 dpt de ept 第二 id。 好,这样写,查出来的结果呢,跟刚才的影视内连接是一模一样的,一模一样的,只是两种不同的写法而已。 而这个地方,这个音儿是可以省略的,我们可以来把它复制过来走,当然起别名的操作都可以啊,都可以,我们就不在这一一的去演示了。音儿省略了之后,你看效果是不是一样,所以这个音儿是一个可选的操作。 好嘞,那么这就是一个显示内连接的一个基本的语法,我们把这两个都复制过来,都复制过来,例如,好,这样这两个我们都 把它放到这个笔记上,这是两个不同的,然后呢,我们把这个音那呢用个中括号给他扩起来,中括括起来,中括括起来呢,就表示了他是可选的,可选的。 好,这个地方说一下这么一个小细节性的问题,那么对于这种内连接查询,内连接查询其实很好去理解啊,也很好去熟悉。那么第三个事我们来说一下,你要去用内连接查询,内连接这种内连接查 查询需要去注意的一些事项是什么呢?那你查询怎么查呀?怎么使用那连接啊?将来你要去确定几个事?第一个事从从哪些表中查数据啊?查询数据 对不对?你要去确定表啊?然后呢?第二个是你要去查询条件啊,条件是什么?就是说你要去 判断他们怎么算是有效的数据,怎么算是无效的数据。我们现在的判断条件是这两个表里边 emp 表的第一批的 id 和第一批的表的 id 一样,就是有用的,其他的就没用, 条件要确定好。第三个是你要确定好你要查询哪些字端。 ok, 一般情况下我们说了不是所有的字段我们都需要,我们一般会挑一些字段来展示这些数据信息,这就是使用内连接的一个基本的思维逻辑啊。思维逻辑,好嘞,对于内连接查询我们就说到这个地方。

你除了今天我们所需要学习的这个多表,查询他的这个分类啊。那目前呢,我们就重点去关注前面第一类所谓的这个连接查询,它里面分为内外两种连接。 在刚才我们已经给大家去介绍了,那年间他的查询结果其实是两个集合的交集。那在我们数据库中其实就是两张表的一个交集。 那然后呢,外连接呢?又分为左外右外。那左外连接是查询的左表的全部以及这个什么右表中的这个交集部分啊。而右外连接,顾名思义就是右面的这个全部以及中间的交集。 那具体语法是什么样的呢?我们一起来去看一下啊。首先我们来看这个内敛经查询啊,我们再说啊,查的是交界部分。那他又 分为影视和显示吗?那这次我们倒着看。我们先看啥叫显示,你就懂了什么叫影视 所谓的显示。那年金他是在 sale 的后面先写上你要查询的坐列表。 那么然后你看 pro 表一在后面呢,要加上关键字 inner 坠。当然呢, inner 这有中国号证明它可以什么省略掉。然后再跟上这个什么表二。 那后面还要加上一个连接条件。这个连接条件呢,需要通过 on 关键字来去添加。好,后面写上连接条件。那为什么的显示那连接呢?因为它显示的用到了应当就应这个关键字就叫做显示。那你说 是啥意思?影视就隐藏吗?那说白了就是不用一个人说一杯。所以说啊,影视他的回答就是在表一的后面直接打个逗号,再去跟上什么表二。后面条件他还是通过我们比较熟悉的什么 vivo 关键字来讲,说变化,就是关键字不见了,然后来调解没有用啊,用的还是什么没有。 那这两种连接模型一个也是一个显示,他们虽然语法不一样,但是查询的结果上是没有区别的。 那么所以说在这两种语法的选择中,我相信更多东西愿意选择。什么?第一种啊,隐士啊。首先写这个简单吧,你少写文字了。其实条例还是我们熟悉的,什么没有文字啊,所以我们肯定愿意用隐士。好,那下面我们就来把隐士啊 内连接的语法给他去做一个演示。要打。我们打开今天课程资料中多表查询里面所提供的内连接表丝,他里面呢给我们提出了两个需求。那我们把这两个需求呢,我这个卡号 c 啊用的比较少,复制到我们的一个 ctrl 版 来。先看第一个需求,他让我们去查询员工的姓名及所属的部门名称, 那你知道员工的姓名在员工表中吧,叫做内。然后呢,部门的名称是在第一 tt 表中,也叫做什么内。那上面呢,我们就要去写一下这个需求,比如说第一个让我们用影视内连接来实现。 那我们的写法怎么写那么多的道具,给你个套路啊,把省两个黄金字写好。 你先别去写那个查询说你先写个信号占个位,然后再加符号默念词啊。你把两张表先写上,员工姓名呢,员工在员工表中吗? 我写个 tb 下划线眼皮,再写个部门表的表。那现在两张表的名字都是写上了。那下一个就是 vivo, 后面得跟个条件。那这个条件注意啊,一般我们叫做关联条件。哎。关联条件。 啥叫关于条件?这个也很重要啊。我们再把这两张表通过一个 ido 的图形化方式打开,能够显示他们两个信息。那么这两张表中如果你要来找个关系的话,你觉得是怎么去建立一个关系的呢?不就是这个外界吗?在联播 表中有一例叫 d t t i d, 他应该去关联。部门表到什么逐渐 i d。 哎。那所以说这个关联条件,说白了,绝大多数情况下就是咱们的这个主外界,他们去做关联,那其实就是主外界。稍等啊。 啥叫逐渐相等呢?就是说员工表中比如说 d p t i d 等于二。那你得给我对应到什么部分。表中 i d 为二,这个空白板,这就叫关联。 所以说谁去加上这个叫做啊,一个比如说 e p t。 然后呢?消息 id 等于这个什么 id? 他说就有问题了。搞不起的是你部门 id 确实指责员工表中有,但是 id 所在员工表有,部门表也有啊。 我们这正常情况需要去写,不能表示 id。 所以说 idol。 从语法提示层面,他就已经提出了两个。那你看我们一选一个吧。他前面是不是表白给我加上, 哎,他说是不能表达爱你。那前面这个等于只用一张表语,他没有一个所谓的区分,但你也可以把它写上。你说这是什么提笔?下滑线笔也能提。表到什么 部门 id 和部门表露 id 啊。那么把查询条件一写好了过来,最后一个查询,孽障的前面别忘了啊,你写的很多型号,他要是员工的心理,那你所写的念 万一有问题了,李云给我表露个印。不能表露,是一个印没有,对吧?那所以说又均不开。所以呢,表面点, 再来个部门表中的名称,你说再写个 d p t 点零,那这样的话哦,一个是员工表中的姓名,一个是部门表中什么名称好,但是这个部门表比较姓名吧。然后我们再把语句执行一下,看有没有结果 能弹出来吧。金庸属于教育部,是只有一个金庸,然后呢,张无忌属于教育部。但你要做一件事啊,现在我们查询出来的这个结果呢,是七条数据。 但是啊,你可以去看一看,员工表中他本身是有多少个员工呢 啊,那他一共有什么?十七个员工。那有一些哎,这个结果是只有七个也不对呀。我看进去,我看一下,对啊,员工的部门 等于部门的 id, 而且没错啊,怎么能看到这个结果十六万呢?看错了,是另外一个结果。去了十六个吧,也不是对的呀。员工刚刚看过吧,一共是十七个员工, 怎么少了一根。对这个程有量。这家伙呢,他的这个部门 id 是什么呐?那你看我们的条件是什么呢? 部门的 id 等于这边的 id 吧。那你那么等于任何一个 id 值吗?不等于不等于。所以说呢,这个成有量,这条数据就不满足这个条件吧。 所以说,那你再回到我们的新疆的象征。那个所谓的交集啥意思?这个交集其实就是要满足什么条件的,当然应该是满足这个什么关联的条件,也就是 主见值,或者说万见值的,和另外能得到某个知识呢,得一样,得相等。你不相等,那就不叫满足条件。所以说陈永亚他会被闪选出去,这是正常的。 但是对于这个语句,怎么还值得去进一步做优化?你有没有发现,在这里面大量的出现这个表面,对吧?嗯,那表面短的话呢?那其实还好哎。在这你要写这个表面呢,是你们的例子,因为服装关键词本身就是在写表面的。 但是在查询的列和咱们这个条件上,咱们也带了这个完整的表格。太长了。那咱们能不能把这个东西给他想办法变得短点呢? 是可以的。我们前面在单调查询的时候学过,我们在查询语句中可以起别名而 取,是可以对查询的字段和查询的表情里面啊。我们说查询的表情里面的多表,查询中的用。那所以说啊,在这呢。比如说这张表,我给你换个名,来个爱算,我就叫一。 然后呢,第二张表我给你加个别名,我就叫什么 d。 那你发现,当我把这两个别名一起之前的完整表面,这是不是开始爆红了? 就证明你起了点点之后,他是以这个什么点点为头。那我前面这说的是一点点, 这是一点类,这是一点 bptid 等于一点什么 id 用别名来写。那我们再执行这个结果呢?其实还是这么十六条,但是从语法上 是不是变得短了一些?那么所以说呢啊,那我刚才是写了很多步才把一个完整的鱼写完了。以后我们写什么写呢?那我再写这个效果。你还是先写个色泽的型号。掌柜,因为这时候你还没有起名名吗?对吧,你不好去表达个什么属性。 你先把服装洗完,比如说 e p, 先就把那边给他什么挤上,然后后来我们接下来条件就可以去加。这时候可以加上一个 vivo。 一点一 ptid 等于什么 一点一了吧。直接写。最后你可以回去把那个长的字段以别名去点出来一点零逗号,再来个什么一点零。好,那这样的话就一次到位了,不用说中途去改啊。来,那下面我们再次写。结果还是十六十六行没问题啊。这就是我 的一个类连接,查询中的第一种影视类连接,他的一个语法。那么演示完之后呢?还有一种叫显示他的结果其实是一模一样的,但是语法层面有区别。那下面我们再写一遍啊。 再来个韩式,先写型号,单位符号。第一张表,我就写个员工表,他说这个表面不区分先后顺序,爱写木门的前面可以。然后呢,再来个木门表,角度一。那注意接下来中间这个逗号。他还是属于 隐私的语法吧。在显示中多多表现有通过一个 inner 作为关联字取得关联因,那就是内部的意思,所以说是内意思。那作为你就是关联。好,其中这个引哪还没什么首位调。那么最后来到家庭条件,这显示通过 要加的。那现在要换成 on 来加,但是一个 on 只能用来加观念调节啊。那我写上一个一点 bptid 等于一点二 it。 最后来去把我们前面的一个查询的字段给他换一下一点零,再去写上一个逗号。峰哥,一点零搞定。来这地方来一点一,这个两个,一个是一点零,一个一点零。 宝贝,给我给我封号。写在前面去了啊。来,你儿子在这封号。那上面把它选中一下,执行结果还是输入。好吧, 没有区别。那这个就让你可以把它复制下来,把中间那个音那给它去掉,你看下来他有没有区别。这个结果应该是不会有任何区别的,就直接拽就完了。好,那下面我们再执行。 海水水滑也没问题。那到这关于咱们的这个就是呃,那一年的查询,他的联网语法就也说明。但这里面存在一个细节问题。我这写了三个语句,我不管用哪一条语句,你注意关注一下查询结果中的一个自我秉承。 那好像一个叫一点零,一个叫一点零,是不是能区分开?但是我想说一下,这个人区分开是我们 idea 这个工具层面,他帮你区分开了。从数据库的底层,他给我们返回的结果。其实不找这个,就这个表头。这 那么到底长什么样呢?我就不用这个 ico 工具啊,我就使用这个 masco 默认的客户啊,有机玩迷你行工具。我去登录到 masco 里面去啊。 mascoga 价格入口。干屁,我写个一二三四。回车,谁又连上去了?连上去之后,现在我们正在使用的数据故事零零三二。所以说你要去 us 一下这个什么 一比三。那然后呢?我就把刚才的这个词语句一模一样啊,他的右键粘贴起来,然后回车。 你看他都教你。其实真正在数据库里是仿佛的是这个记录,这才是真正的记录。就 ido 很聪明,他把你加了一点,他帮你把一点一点也显示出来了。那在程序中他是不带玩,那怎么办? 起名名啊,对吧?你这是查询的资料吗?那查询的资料是也可以起名名,有一个我就叫伊宁,懂了,第二个我就叫什么。 那现在我把这个笔的二字型他是一定的,你就算把它放到我们原始的这个工具中去。然后呢,我们再走一遍它,整体一下,回车注意看,这最终都是一个点点为准。所以说呢,对于这些查询的字段,如多张表中的字段,名称是一样的。 那建议呢,把这个名名要给他起上,否则最终在我们程序中或者加号贷款中。最后啊,他返回的这个结果是一模一样的。那你就区分不开到底这个名字是员工的名字还是部门的名字。 好。那那电影节的细节呢?就整个已经给他去说完。那说完了之后呢,你们需要这个事,先把课程资料中他所提供的那个哎数据准备的时候导进来实现一下,然后就把这个任意接到 语法来,快速去完成一个练习啊。到时候呢,我们这个内年级查询呢,就算是已经学习完了,语法其实本身并不复杂啊。而后期呢,其实我们开发商用的居多的,正常情况也是内年级。 为什么呢?因为他的结果是满足这个什么条件的结果。那接下来呢,我们开始学习第二类语法,就是我们的这个万年金茶曲。 通过之前的介绍,咱们知道外连接他又分为左外连接和什么右外连接。其中左外连接他查询的是左边的全部以及中间的交情。右外连接呢,就是右边的全部以及中间的交情。 那从语法层面分来看一下吧。左眼睛那这个左和右怎么区分?其实你写的左边的 表,一般我们称之为叫左表。写的什么右脸的表呢?就称之为叫右表。而左列列则是左表和右表之间的连接。关键字是内服的凹 左啊,是有任何的单词,这是左。其中呢 offer 跟之前的音乐一样可以谁要? 那么外面的查询他的连接条件,只能够通过什么啊关键字去进行练习啊。这必须是啊。当然指的是连接条件啊,就是你啊,跟主播间相等。但是如果你有别的条件在后面可以加微,这个咱们一会儿练副的。需要你看到 来,右耳眼睛跟他相比,只有一个单词不一样,就是把这个什么 net 换成一个 right 而已啊。那么语法层面呢,我们看了一下之后,接下来我们就还是直接通过需求 演示来打开第三个外连接三孔,里面一样是之前的需求。那上面呢,我把它粘贴到我的工具中来。 跟这一样好。他是要查询员工的姓名和对应的共鸣充。但是前面加了个前提是员工表的所有员工姓名和对应的什么共鸣充,要求咱们用主外连接来起核。 那这样我就接受了啊。跟之前的套路一样,你先写个新号账位 pro, 那么员工表的所有员工的姓名。这个时候你就思考,如果让你用阻碍连接器,那你得把哪张表放到前面 阻碍。你就是左边表的全部和什么中间的交情。那么所以说你既然要员工中表 所有姓名,员工表肯定得放到什么左边才行啊。放到前面。所以我们先起个名一。那第一张表已经搞定之后,那中间的连接多张表的关键字就变成了 net 的什么 out。 然后呢,我们的这个 gree, 当你发现啊,哎,这个他提示什么?他其实不会给你什么提示的高是吧?通常都给你省着掉,优先省着要。那我第一次你写上 outgree。 然后呢?第二张表当然就是什么 部门表。当然这个 id 很聪明呢,已经把一半给解释完了,拿出来我们继续什么写一下。第二表,我起个名叫做什么,叫做一。 那么接下来他们之间的关键条件必须通过一个什么按关键字来加,那就是地表中的 dttid 还是等于地表中的什么 id。 最后呢,我们调过来,把这个查案的例给他换一下员工表的姓名。一点而令。一次性到位啊,你起个别名吧。一令逗号分割一下部门的名称。一点而令还是起个病名叫一令。那一句都写完了。 那么写完之后,我们执行。你要关注他和之前那年间查询的结果。查疑,这次你发现是不是不是十六行,这是十七号结果,之前没有查询出来的那个成油量。 你说有了,那这哥们他的部门一没有部门,他就一个什么空照位变所。左边表的全部数据是查询出来的,但是右边表的数据查完了吗?注意看一下,这有教研部、学工部和咨询部啊,一共有这么三类部门。但是 其实如果你去看我们的部门表的话,你会发现在部门表中可不止三个部门啊,他有五个部门。那这个街舞业不合人是不是没查出来?为啥呀?因为我们员工表中没有任何员工,属于什么 就业不合人事故。所以说啊,那么他就叫不满足规则。而我们左边的这个员工,表中的所有数据是不会全部查出来。 因为别秒钟呢,不秒你就得去满足这个条件的数据才能出来。这个就叫左挂链接。所以说左挂链接查询的是左表的 全部。从十二楼面试,他查询的是左表的全部,不是左表啊。好,左表的这个全部数据以及右表中。然后呢, 满足这个关联条件的数据啊,这个就是在数据库中。他那个什么意思啊?关联条件的数据。 那么怎么来管理这块呢?接下来相同的内侧需求。他让咱们用了你的性格啊。那接下来这有个意外,他这个是部门的所有名称和对的什么 月供气。让咱们用右腕连接了叉。那说完你就看前面部门表的所有部门。比如所以你在看图。那这次你得把谁放右边呢? 那你肯定得把部门表放这吧,因为这也是右边这张表的选不合理的什么交警。所以顺序跟之前其实什么没有变化,只是把关键字由这个 left 换成了一个什么 right 而已。那下面呢,我们就玩重新写一遍吧,因为他的查的资报我都忘顺序了。我而且写个心 fra。 那左面标的话只能写什么 员工啊。那么英文连接就是 reit 中呢啊,它的座椅。当然啊,它可以审。这次我审一下啊。啊,它的座椅写上我们的 pb ept。 好,接下来加到这边 d 条件还是用二。那还是我们写上一个一点 b p t i d 等于一点 i d。 这次来为了好看,我把部门表的部门名称放前面,我写了一个一点 零,一零多号一点零,然后来再来个一零啊,这就是我们的意外。那下面我们去点击执行注意看啊。我们 那个之前有两部门是没有所谓的员工的就业部,再还有一个什么叫做人事部,是这两个部门也考虑出来了。但是你在看员工那个诚意有样是没有部门 id 的啊。没有推部门是用量查出来的吗? 没查出来。所以说右边这张表他需要去满足咱们的第二个啊,就是所有数据,但是左边表要什么满足条件。所以他俩的结果其实就是把左右的顺序的什么 一换就完啊。这呢查询的是右边表的全部数据,那就看相关顺序嘛。在右边呢,就是右表,然后来一起左表中满足关于表的数据。但是你把这个两种语法看完之后,那你有没有发现,比如说我的第一个需求, 我能不能用医务管理机搞定?可以,我要操心所有员工是不是也可以用管理机,我写个医务管理的事情。 好,你这少敲一个空格啊。那我们如果一个一二一的起兵吧,死了这个场景自动我就不改啊,还是那样的。那接下来你的表的顺序怎么可以在上换一下?你把谁放一边去? 员工表会对吧?把部门表里的什么放在左边,不是说的吗,来上一个 reture 啊,后面去放咱们这个 emc 表。那么接下来请这边一 条件没变,还是之前那个条件,员工的部门 id 等于部门的 id 啊。当然呢,这样你写的时候,你不一定非得把员工放前面啊,你说我写二五年字,我就非得把那个部门低点 id 放前面, 然后呢,等于一点 d, p, i、 e, 这有区别吗?啊,肯定没区别吧。啊,这个是右表的全部,和左表满足关联的数据一查,其实呢,还是所有的员工从右边变得出来啊。那么最后包括第二个需求,你说我问你用左半可不可以?可以 可以啊,你把这两张表的顺序给他传,你换不就完了吗?中间的关键字换成奈何,但你又不能取物,你就得把 部门表放到前面来,然后把这个什么员工表放到右边。那么多,这不也变成左表的玄关,而左表就是部门的。 所以说啊,这两种连接团的,其实我们只需要掌握什么其中一种就行了。而在我们的这个实际开发中呢,其实我们去用一个什么阻碍连接的,这个威胁你们 手表全部拥有啊。那这就是关于我们的一个外引进查询,他的一个语法。而外年级来,他的使用场景相对来说稍微的少一点点啊。你得看看需求,在需求中,如果他明确的告诉你要某某表的全部数据, 我们才会用到这个什么挖掘机。那如果他没有这种特殊要求,没有说明,我们就默认认为他是什么。要满足条件,那肯定是用内里的扫雪 来。那 one 连接查询的语法,我们也已经给大家去说完。那说完之后呢,同样的大家去把这两个需求快速的去完成一下就行了。

这是用 java 这个软件, java 语言来访问 my s 卡数据库,也说 java 与数据库连接,进行数据库编程的,那么主要讲这个 gdpc 驱动程序以及数据库编程这些基本的技术。 这是下载 msql 数据库这个软件的网址,那么有的 msql 软件需要多 nice, 四点五点二甚至更高版本的支持。 这是下载 dornet 的网址,下载 connect 车的网址,那么下拉列表里头显示各种操作系统下的 connect 啊。有时候我们安装 max k l 八点零这个版本的, 需要 vivo 加 vivo c 加加二零一九这个分布式这种运行环境,那么如果电脑上没有这个软件呢,需要给他进行安装,这是六十四位机下的,或者说我们装低版本的 maxcl 十五,比如五点七。 呃, max k l 这个人家安装的时候,如果是八点零的版本,他需要 real studio 这个二零一九的运用环境,并且需要至少是四点五点二那个点耐特更高的版本,那么我们可以把这个 max k l 的版本可以降低一下,我可以装一个 max, 是我的五点七点三零,这样呢,他要求的运行环境代价就稍微低一些,我们要安装过程中输入他的密码,这样就可以安装上了。 那么有的时候呢,我们这软件里会自动安装 connector, connector 用于 gdbc 这个运行环境。呃,有的软件呢,它这个 door net 啊,八点零下的 connector, 它也能给你安装上, 我们屏幕可以广播一下, 大家看一下这个屏幕,那么这个软件它自动给你检测呢。呃,这里头可耐克车是用于用加瓦和迈车数据库连接的, 那么还有可耐克 odbc, 你看他就缺少这个环境,所以我如果我们要选择和数据库连接 odbc 的,比如连接微软的 xcr 十二网,有可能就连不上了。 那么如果 java 用 d d b c 这 connect 车,这是可以的也,这是 my q l, 这是文档啊,这些例子,然后我们再进行下一步, 那么我这次装的是什么呢?是 mask, mask 啊,是,我是五点七点三啊,那么五点七 一点三,那么他的运营环境相对来说要求就低一些,我们看这个控制面板里头,控制面板里头卸载程序啊,里面 这里头有 vio 系列家的运行环境,我们刚才装这个是,呃, max q 八点零的时候呢,他要求这个 vio 系列加二零一九的运行环境,因为我没有, 是不是啊,那么所以说我就推了一个 maxkl 这个五点七这个版本的,他满足这个 c 加加这个运行完性。另外一个呢?我这点 nit, 呃,刚开始是四点五点一版本不够,我至少升级到四点五点二以上了,又装了一个刀 nit 四点六, 这两个条件都满足了,那么这个 maxql 五点七他就能装上了。如果想装上 maxq maxql 八点零的版本,那么唯有西夏家的运行环境,我这阵要升到一 一个二零一九这个运行环境,需要这两个条件要满足,这是里头,最后我们检查一下这里的版本, 那么输入他的登录的密码, 再次确认 max q 二,五点七啊,就安装完成, 这个是安装了 vivo studio 二零一九运行环境好刀。 net 四点六这个版本,这两个运环镜满足之后呢,就安装上了 max q 幺八,我们启动是在这啊,这是 max q l, 在这启动啊,所有程序里面有个 mask l, 这是它的运行界面, 然后我们输入它的密码就可以启动了。这个代码是用加瓦连接 max q l 这个数据库采用的是 g d b c java 和 max k l 的连接,需要加载驱动程序,这需要一个 max k l connect 车 java 八点零点 二九这个架包,我们需要把这个八点零点二九这个架包复制到工程里面,在工程里面指定他的架包路径。

哈喽,小伙伴们,大家好,欢迎收看刘经理的零基础加我语言教程第三十六期,今天我们来学习练式写法啊,这种写法我们学会以后呢 会更加方便通,通过我们这节课程,我们会进一步了解加我当中的一些便捷写法以及技巧,那么我今天先了解什么是练式写法,以及我们通过一个字符上的实验来进一步的去理解这个练式写法。那么什么是练式写法呢?这种写法其实我不知道大家有没有之前学习过这个一个 一个脚本语言啊?啊,类似于这个类似于这个脚脚本语言,这个叫做什么呢?有一种叫做加 bosk 啊, 那么在我的一个其他的课程当中啊,一个网页开发课程当中,其实有给大家讲过这个 gs, 对吧?那么类似于这个贾沃尔斯 corparp 的这个脚本语言,那么他就可以什么样可以使用啊? 其实这里面啊,便捷处啊,便捷处,便捷,这个叫做便捷啊,便捷处是什么呢?便捷处我觉得就是可以使用点啊, 使用点的方式啊,使用这个啊,使用点,哎,就说这个点的方式啊,方式进进一步啊,使用进一步,使用其啊,这个类啊,这相当于是这个对象,对吧?啊, 这个对向下的方法或者属性方法或者属性,那么也就说这样的话呢,就是属于练式写法,那么他可以一节一节一节一节练过去啊,一节一节一节节 练过去啊,比如说我们是 a 帮 a, a 类,对吧?假设啊,举例啊,举例,我们就是一个 a 类啊,某个类对吧?某个类 a 类下面的什么呢?子啊,子类,对吧?子子类, ok, 他下面的什么呢?呃子方法啊方法,然后呢?下面的啊属性 啊,此方法下面的什么呢?某某类某个什么对象属性啊, 这样的啊,一一个一个一个东西,对吧?那么我们在这之前其实我们也已已经用过了类似的这个方法哈,还有一个类似的这个举例是什么呢?类似的是这个 cst, 大家记得吗?啊? c 乘点 out 点啊, pent l n, 对吧?那么我们在这里面来进行输出啊,这里面输出输出结果啊输出结果。那么在我们在这里面的话呢,我们通过类 次于这样的形式来一级一级的通过点的方式一级一级的进行扩展啊,我们可以通过这个思损大类下面的一个子类下面的一个子方法,对吧? 啊类似于这种方式啊,这就是一个练式的一个写法。什么是练式写法啊?点点点点,那简单的技法就是通过点的方式一连串的可以连过去,对吧?那么如果说这个地方有一个返回一个怎样的一个结果也可以进行也可以进行这个呃练式写法,那么呃这个地方字符串 也是一种啊,一种特殊形式,那么这个形式是什么样的一种形式啊?就是每个啊字符串的类类型啊类型都是可以被啊,都是什么呢?都是可以被进一步啊处理的啊,那么可以通过练 式写法不断处理啊,可以通过练式写法啊啊不断处理啊,不断进行 字符串处理啊这样的一种形式。那么我们接下去的话呢,就通过啊这种字符串处理的形式来进一步的给大家进行讲解。好,那么字符串的话呢?我们举例啊,假设我们来一个, 呃,这个我们自己来举一个例子吧,好吧,随机举一个,举一个例子啊,那么我们来处理,呃,假设, 假设我们的一个字符串啊,假,假设我们的字符串是什么呢?我们这样的一个字符串吧,好吧,呃,鎏金玉编程对吧?编程创造城市啊,城市 这个 lj y 啊,编程对吧?然后呢是一个 继续啊编程创造城市。对,那么我们假设是这样的一个东西啊,这样的一个字不串,那么我们现在要将这个字不串,我们要进行呃简单的处理啊,那么我们简进行简单的处理。怎么处理呢?我们首先啊假设我们 啊这个地方,我们这个地方分成几步处理吧,好不好啊?处理,那么处理的时候的话呢?我们假设我们先是第一步,第一步我们什么呢?先转成大写啊,字母,字母转什么呢?大写啊,字母转大写,这第一步对吧?第二步,第二步什么呢?第二步我们将这个 编成两个字啊,将编成两个字母啊,变成什么呢?呃,变成变成这个,呃,这个用,用什么替换呢?用我们的这个,呃,这个假设我们再用这个 bc 大 写的这个 bc 来替换啊,来替换好,来替换啊,这两个连着的,对吧?那么这这个地方一个地方替换啊,这个地方啊,一个地方替换,那产生大写啊,然后我们用小写这两个来替换好了啊, 好,那么我们在这个地方的话呢,我们就会也得到一个那样的一个结果啊,就是我们这个地方会会会,这个地方是一个小写,然后其他的都是大写,对吧?然后第三个啊,第三个,我们再来 啊,再来,再来一个啊,我们假设我们在这个地方,我们把编程创造城市啊,这 这几个字,我们来,呃,我们最后吧,最后再做一个就是颠倒啊,颠倒,颠倒,第三步我们就颠倒一下啊,颠倒,呃,整个整个字符串啊,字符串 输出啊,输出,那么,呃,我们就这里面就是采用三种方法,对吧?那么哪三种啊?第一种 我们转成大写,转成大写的,我们的都说过了,这里面有个图,什么呢?啊?图图,图 apple, 对吧?图 appleupp 一啊图 apple kiss 啊,图 apple kiss 这个方法,对吧?那第二个我们用替换 replex 方法啊, replelex 方法,对吧?第三个我们颠倒整个字不串,用 redows 方法,那么我们可以通过一次性就可以处理这整个字,不串啊,一次性就就处理这整个字不串,写在一条上面,而不用一慢慢慢慢的写上一条一条一条小的。好,我们现在马上来测试一下啊, 我们来通过我们的实验,呃,来写一下我们的这个代码,我们先来写一下基本的代码,帕布列克 plus, 对吧?好,扭进去编成。好,我们再来写一下我们的帕布列克 skitty skitty, yy 的妹,啊,啊,我们在这个地方,我们用我们的菌类型啊,我们在这个地方, args 啊,我们在这里面,好,我们现在来继续啊,保存一下, 保存到我们的桌面上面啊,桌面上面我们现在有一个这个文件夹,这个文件夹我们同样的使用这个流均匀编成啊, 这个大小写都是要一样的,对吧?我这里面继续强调一下啊,好,我们在这个地方来继续,好,我们接下去的话呢,我们要写一部什么呢?要写我们的这个角色,来一个四五串,对吧?来一个四五串,比如说啊,测试 tst, 对吧? tst 啊 ts, 然后接外吧,啊, 好,我们来把这个自负串来,把它拿过来啊,这就这就这一串,对吧?这一串这一串拿过来,我们现在把这个东西给复制过来,然后呢,我们按照这个步骤来进行处理啊,来进行处理,好,我们现在第一步,第一步是什么呢?第一步的话呢,我们 是要处理的是一个将字母转成大写,对吧?要将字母转成大写,也就是说把这里面的字母啊,所有含字所含的字母全部变成大写,怎么来转呢? tss 要接话点, 是不是?我们是不是?这个是一个 sj 类型,我们可以直接去转他的一个大写啊, turpupp 一啊,对吧?点啊,对,点啊,突 airpoks, 对不对? cs 一啊, cs 一,好,我们在这样的话呢就已经 ok 了,我们来看一下,我们用 ccut 加 out, 可以来输出一下啊, cctv 二,特点啊 three, 假设我们这个地方返回一个新的自负圈啊,新的一个自负圈,我们不然的话写到一起了,对吧?我们这里假设,假设我们是腰间外啊,刘俊变成思俊, ok, 那么这个地方我们用了一个新的自负圈来返回啊,这个地方我们来看一下,我们来输出这个刘俊变成思俊。 c 寸点啊, 这点 plus l, ok, 我们这个地方流进编程 g, 好,对吧?我们来输出一下 f 六来看一下啊。 呃,我们来得到的这个结果就是啊,我们已已经把它转成大写了,大家看到吗?已经把它转成大写了啊,那么我们通过这种方式我们已经把它实现了,第一步啊,实现了,第一步转成大写,对吧?转成大写。那第二步我们用把这个 bc 啊两个字啊编成应该是大写的这个 bc, 对吧?大写的一个 bc, 编成两个字,把它用小写再来替换一下啊,把它用小写再来替换一下。好,我们怎么来用小写来替换呢?我们应该这 这两个字 bc, 两个字应该是一个小写的小写的 bc, 对吧?啊?我们现在来这个地方继续啊,这个地方继续可以到后面继续写,因为他这个地方呢,大家注意啊,这个地方其实返回的是一个结果,就代表某 某个字符串啊,其实他就是某个字符串,对吧?就是代表什么呢?就代表这个字符串啊,就代表这个字符串。那么现在的话呢,我们可以继续使用我们的练式写法继续写下去。什么叫练式写法?我们现在继续,是不是继续在这原来的基础上啊? 我们继续点点下去,因为这是我们就可以把它看成是一个字符串啊,就可以把它看成是一个字符串,对吧?是一个字符串这样的一个东西啊,啊,这样把它可以看成这样的一个字符串,我们先给他恢复看成这样的一个字符串,对吧?这个字符串就是我们现在是下面所圈的这个,我们现在的话呢,采用替换的方式啊, replex 啊, replas 啊, replas, 对吧? replas, 我们老的这个自助串是什么啊?然后呢?替换成新的这个自助串是什么?对吧?啊?我们来看一下啊,新的新的这个自助串是什么?老的自助串是什么?我们先来看一下老的自助串是大写的 bc, 替换成新的这个小写的这个 bc, 我们再来 测试一下 f 六,我们来看一下,得到这个结果是你看大写的这个 bc 就变成了小写的这个 bc, 对吧?大写编程就变成了小写的这个编程。好,我们现在的话呢,我们 ok 了,继续采用练手的方式来实现第三步啊,第三步颠倒整个字幕上的输出,那么我们就意味着就是要要变成了什么 c c s c c c c b 啊, c b y j 是这种形式啊,是乘什么什么什么 啊,变成预警流,对吧?啊对对对,好这样的一种形式啊,倒的这种方式,那么颠倒的话呢,我们这个 redows 这个呃, re boos 啊,这个 redows 这个方法的话呢,我们并不是在 俊这个类里面啊,我们是在思君八否里面啊,注意注意啊,注意啊,注意这个地方,注意。这个方法在在什么呢?思君八否啊,在 s 君,比如 f f 一啊,阿斯君把否中,那么我们如何来给他结合使用一下,对吧?那么这个 rebox 方法啊, 那么前面的我们是可以的啊,我们前面的 ok 的,那么所以说我们在这里面,我们使用的时候,我们要先把这个东西作为一个字不串进行传入啊,你比如说他是一个字不串,对吧?我们现在来把它作为一个字不串,我们现在来声明一个新的君八 fbo f f 一样,对吧?那么我们假设是 lgy bu f f, ok, 那么我们这个地方啊,啊,那么我们在军把否啊, buf f, ok, 我们就这样的吧。啊?我们用一个妞军吧否,好吧,妞军,呃,俊 巴否,比如 f 一样,对吧?我们现在来把这个东西给传进来,传进来之后我们来使用这个第三步这个倒置的方式,我们来 把它来输出,比如星巴佛点 redows 啊 repos, ok, i e v e i s e 啊,那么我们这样的话呢,我们就可以来得到最终的一个 结果了,我们可以看到我们已经把整个字幕上给倒置了,所以说我们都要注意啊,思俊巴否的话呢,他并不是在我们的这个思俊类内啊,这个这个这个地方啊,这个 revox 这个方法并不是在我们的思俊类内啊, 呃,如果说你想要让他倒置的话,我们就需要将它传入到我们的这个思君八凤,刚好我们这节课程也可以将我们的思俊以及思君八凤两者之间互相的来进行转换,并且进行使用,对吧?好,那么我们今天的话呢,呃,这个地方这个案例应该来说是非常经典的啊, 那么接下去的话呢,我们最后来总结一下我们今天的这个课程,好,那么我们中间的话呢?我们呃今天主要是给大家讲解了这个什么 是,对吧?要理解,理解,理解,要首先要理解啊,理解链是 练式写法,那么这个练式写法的话呢,在我们的这个加威斯库瑞的这个语言当中也是类似的啊,所以说大家学环一门这个编程语言的时候,其他的编程语言其实也是会变得有些有些类似好, 那么我们相当于是编掌握了这个编程的思想,一些编程的套路都是类都是类似的,很差不多的啊,那么我们第二个的话呢,我们要就是要掌握啊,掌握这个练式,练式这个地方要注意啊,练式写法, 对吧?练式这个地方练式写的时候啊,一些类的处理是不一样的啊,不一样的,对吧?那么有些练 理解类类这个东西,跟理解类式写法类类似的练式的写法是一样的,那么这个类练式的这个写法啊,必须是要什么呢?在基于啊,后基于有其后的啊,有其后的方法, 对吧?方法的基础上,基础上,那么这个地方呢,必须要,比如说我们在这里面不,唯一不同的就是我们的这个思俊以及俊巴否,对吧?我们要这样将我们整个字幕上倒字,使用这个 redows 这个方法的时候,我们是只有在 这个苏宁巴佛里面才使用才有的,所以说我们在这里面还必须要进行一次转化,对吧?所以说这个地方是大家的一个注意的要点啊,那么我们并不是说是练这些吧,一直就可以完完全全的练进去啊,当然我们也会有他的平静的时候,就像我们刚刚所讲的这个方法, 对吧?好,那么我们学习我们这么多的这些知识啊,我们一定要将我们的这个这些知识要用于啊,这个对社会有用的事情啊,要做啊,热爱祖国啊,精忠报国的这样的一个啊,热血青年,好,然后欢迎大家搜索编程创造城市这几个字,就可以找到我的官方网站,并且与我取得联系。 那么如果说你喜欢我的教程,欢迎订阅关注留言分享。 ok, 刘军编程编程创造城市小伙伴们,让我们下期再见,加油!


刚才呢,我们说到 gdbc, 说白了就是一组 api, 是一套公共的接口,那到底什么是 gdbc 呢?咱们过来进一步的分析分析。 那之前呢,反复的跟大家强调过,我们说以后我们不管俗做多么牛的应用程序,无非呢都是操作数据, 那么这些数据呢,就涉及到一个存储,那么这些数据的存储呢,大多通过各种关系型数据库来完成,然后我们再利用扎腕应用程序连接远程的数据库,再对数据库中的数据进行一系列的增山改查操作。 那么这时问题就来了,大家我们说数据库厂商是不是有很多种啊?哎,有买 circle, 有 orico, 有微软的 circle server, 有 ipm 的 db two 等等等等,很多很多种,那么这时大家 要知道,他不同厂商提供的数据库啊,他的内核都不一样,内核都不一样,这就意味着什么呢?就意味着他们的连接方式都各不相同, 那么如果是这种情况的话,那么比如说我们扎腕应用程序啊,要想连接买三口数据库,那要单独写一套连买三口数据库的代码, 如果要连 oreco 数据库呢,要单独再写一套连 oreco 数据库的代码,连三个三码,要单独写一套三个三码的代码,连 db 兔,再写个 db 兔的代码,那这是不是也太麻烦了, 对吧?我们光那么多的数据库厂商,我们光写连接的代码就没完没了了,这就意味着我们渣玩应用程序的可移植性超级无敌的差,那么这就相当于一个什么意思呢?比如说, 比如给大家举个例子,比如说啊,电脑上我们发现是不是都有个 usb 接口啊?哎,我们发现那个 usb 接口吧,他又能连键盘,又能连鼠标,又能连摄像头,对不对?那么假设啊,咱们假设电脑采用的思想是什么呢? 大家都知道鼠标、键盘、摄像头,他们的功能是不是都不一样?那么如果说电脑啊,为了支持鼠标的功能,单独为鼠标建一个接口, 如果电脑为了支持键盘的功能,单独为键盘建个借口,连摄像头呢?又单独为摄像头的功能建了一个借口。 而且大家注意,鼠标光鼠标的厂商是不是就有很多很多种,比如说有雷蛇的,有逻辑的,有双飞燕的等等等等,那每个鼠标厂商他提供或者说他 研发的鼠标的功能是不是也都不一样?那么如果电脑采用这种思想的话,那大家可想而知这个电脑最终会是一个什么样的状态,那就全都是口对吧?别的都不用有了,都是口, 因此电脑是怎么做的?哎,电脑他是不是提供了一套统一的规范呢?这个规范就是 usb 接口, 他的思想是什么呢?他的思想是,你的这些设备要想在我电脑上应用的话,就必须严格按照我制定的这套规范去 执行,那么这个就是 usb 接口,它提供的规范的同时,大大提高了通用性能。理解这个 事吧,哎,大家要注意去理解,那么问大家一嘴对吧?我们说,那你既然设备上他是不是都有功能啊?那问大家一嘴的是, 那你说这个鼠标啊,键盘、摄像头他们的功能的实线是电脑提供的呢?还是鼠标等这些厂商提供的呢? 思考一下。哎,那我们说那是不是都是对应厂商提供的功能的实现呢?因为这些功能的实现只有对应的厂商他们才最清楚吧?这就是为什么咱们每次新买一个鼠标键盘,等 他第一次连接电脑的时候呢,右下角都会弹出一个框,框中写正在安装驱动。那么实际上那个驱动是个什 什么东西呢?就是那个设备具体功能的实现,听懂吧。哎,这就是 usb 接口的强大指数,它提供规范的同时大大提高了统用性,可以连大多数的外接设备, 听懂这意思吧? ok, 那这个道理大家懂了。回过来再看我们这幅图,我们刚才怎么分析的来着?我们说 不同数据观察商,它的内核不同,它的功能连接方式是不是都不相同啊?哎,那我说我渣玩英雄程序要连买 sippo 搞一套,买 sippo 的代码,连奥瑞口来个奥瑞口的代码,三个 sirk、 db two 都来套代码,那可一直性极差,我 全都是连接的代码,别的功能不用写了。因此我们怎么搞?是不是也学学人家 usb 啊,也学 人家电脑啊?我们在这之间是不是也搞一套规范,是不是也搞一套规范?然后呢?我们是不是只需要面对这一套规范即可呀? 然后思想就是,如果你的这些数据库场上,要想在我扎瓦应用程序上进行应用的话,就必须严格按照我制定的规范去执行,那这就是我们的思路。 朋友们,那么大家试图想一下,我们到目前为止有没有学过一个制定规范的技术呢? 那就是接口,对吧?咱们之前讲接口的时候,是不是反复给大家强调过啊?当然那个时候大家呢还不能完全体会到接口的强 指数,那么在这就可以体会了,实际上接口他提供的就是规范,提供规范的同时大大提高了通用性, 听懂吗?那么接口啊,它里边的功能是没有具体实现的,那么我们说那接口是不是得需要实现呢?那么这一组接口提供实现,那么这些实现谁来提供呢? 那就是厂商,所以说你的这些厂商要想在我扎瓦应用程序上运行的话,都得必须针对于这组接口提供 线,而我们要做的仅仅是面对这一套统一的规范即可。比如说我们要连接数据库,我们只需要调用一个叫做 connic 方法即可,我们只需要调 这一个方法,我说我要连买 circle, 他就连买 civo, 我要连奥瑞克,他就给我连奥瑞克,听懂这意思吧。哎,所以说 大家此时注意,我们呢,管买丝儿口数据库,针对于这一组接口提供的那一大堆实现类,我们称之为叫做买丝儿口驱动。 我们管 oraicle, 针对于这种接口提供的那一堆那一大堆的实现类,我们统称为 oreco 驱动,那当然 surp server 驱动, db two 是不是也有驱动啊?那这个就是这样的, 对吧?哎,实际上是这样的,我们只需要面对这一组统一的规范即可,然后数据库厂商对这些提供具体 功能的实现,因为连接数据库啊,各个数据库厂商的功能啊,是只有他们自己最清楚, 听懂这意思吧,那么接下来我们实际上学这个 dbc 学的是啥?是不是学的就是这一组 api 这组接口啊?哎,这就是 gdbc, 大家一定要注意理解啊,注意理解, 那么呢,大家注意,我们说了,那实际上厂商提供的那些驱动啊,说白了是不就是一大堆的实现类啊?那么我们渣玩应程序,那能不能绕过这组接口,直接去创建人家实现类的实力呢? 那肯定能啊,咱们都学过继承和多肽,我创建人家实现类的实力有什么不行的,可以,对吧?但是大家注意,我如果要连买 circo, 要创建这个类的实力,要连奥瑞口, 要创建这个类的实力,要连上个厕所,要创建这个类的实力,那是不是又回到了原点呢?又变得可移植性非常差了。所以说呢,虽然我们可以绕过这种接口直接去扭人家厂商提供实现类的实力可行,但是不建议,因为这意味着 咱们英雄程序没有更好的可移之性,就回归一到原点了,这种接口白提供了。听懂这意思吧,几乎白提供了,可以这么说, 所以说可行,但是不建议我们要做的什么,我们的目的就是面对这一桌统一的规范, 要想连接,我就掉一个方法,告诉你,我要连买色口,我要连奥瑞口,你就给我动态的切换,听懂这意思吧,哎,这个要一定要先理解,待会咱们代码层面那就变得非常 简单了,所以说通过这大家应该明白了,这个 dbc 说白了就是一组 api, 一组接口,但是这组接口呢,包括两个层次,一个呢就是面相应用的 api, 叫做扎腕 api, 它是一组抽象接口,它是供我们开发人员使用的, 这组接口里边包括了我们说连接数据库的考耐克深呐,执行 celoe ego 的 stadmint 呀啊,以及我们说执行 ceocoeo ego 啊,往数据库 服务器发送色购语句,比如说查询,查询的话是不是得有结果呀,拿到结果我们怎么处理呀等等。这一组是面向我们开发人员使用的,那么当然还有一组,那是面向数据库的 api, 称之为叫做扎哇 driver api, driver 是不是就是 驱动的意思啊?那这左一排那是供开发商开发数据库驱动使用的,是由数据库厂商提供实现的,跟我们是不是就没关系了呀?所以说大家此时要注意啊,注意 gdpc, 它是散公司提供的一套用于数据库操作的接口,扎瓦成卷,只需面向这套接口编程即可,不同的数据库厂商 需要针对这套接口提供不同的实线,不同的实线的结合即为不同的数据库的驱动,那么这个过程我们就称之为叫做面向接口编程。 那么咱们在学基础的时候,大家完全体会不到接口的强大之处,那么到现在我们就 可以体会到接口的强大之处了,听懂吧,是不是多想想这个 usb 呀,我们现在是不是只需要面对那一组统一的规范呢?提供规范的同时就大大提高了通用性,这就是面向接口变成 ok 吧,要注意理解。那么这里提到了说 gdbc 驱动程序呢,他有这样如下几个分类,有这么四种,其实呢,咱们都不用管,咱们只关心第四种即可,其他的呢,我们简单看一眼即可啊,就稍微了解一下。第一个呢,称之为 odbc 啊,我们要认识这个东西, odbc 是个什么东西呢? 他是为了在 windows 下啊, windows 平台下提供的一种统一的访问方式。那看到这大家应该已经看到他的弊端了,他是不是有局 天性啊?哎,不能跨平台,温都是下的,他最大的优点呢,是以统一的方式处理所有的数据,但是他有个致命的缺陷,就是温都是平台的对吧?通常服务器那都得是,对吧,拎就是平台的啊。 而扎吧最大的特点就是跨平台,他限制在了 windows 平台,那肯定不行。与此同时呢,他过程也非常的麻烦,效率也比较低,你看 他要面对的是 gdbcapi, gdbc odbc 桥,再面对个 odbcapi, 再通过 odbc 层访问手机库,所以说他的效率是比较低的,我们是不会使用他的。 第二种方式呢,就是部分本地 api, 部分渣玩应程序。那么当然大家与此同时也看到了这个过程,我还要在本地安装一套本地的 api, 所以说也非常 常的麻烦,我们也不使用。那这种呢,跟刚才的类似,我们还要多一个应用服务器,再面对一个厂商提供的本地 api, 过程麻烦不用,我们只关心这一种,就是什么呢? 就是通过网络直接与数据库建立连接,这个远程的连接,咱们之前是不是学过网络编程啊?他底层是通过 so kida 完成的, 也就意味着什么呢?我们只需要面对一套 gdbc api, 再通过人家厂商给我们提供的 gdbc 驱动,直接就可以连接远程的数据库了,哎,既方便速度又合适, 听懂吧,这个才是我们需要学习。好吧,行了,那所谓的 gdpc api 是什么? 咱们这几天就学这几个东西,对吧?比如说有获取代表连接的 comexin 啊, 然后呢?用于发送色口语句给数据库服务器的 sendman 的啊,用于结果级的处理的,瑞造的。大家注意这是不是都是接口啊?这都是一大堆的接口,那么这一大堆接口的实现谁来提供的? 数据库厂商他们提供的,他们功能有什么特点咱们不用管,我们只需要面对这组统一的规范即可。哎,我要获取连接,我就调用连接的方法,至于人家数据库怎么连接的那些细节,不用我们过多大关心 好吧,哎,那么这我们搞定了,接下来我们该考虑啥了?那就是怎么编辑,对吧?

本期视频接着来认识五个文件中的第一个 controller, 其主要任务是为前端提供接口处理浏览器传递过来的查询、新增、修改、删除等业务处理请求。处理结果下行可传到 my batist map 进行数据库操作,上行可以返回给浏览器进行结果展示。