好,首先下午的第一个功能呢,咱们写一个登录啊,模拟一个登录 测试, log in 叫 test。 第四个按方法来着啊,想要写登录的话,首先这个这个,这里输入账号输入密码啊,所以他要有这个输入,还记得吧, scan 是吧? m 脚印啊,请输入账号, 请输入账号,来一个请输入密码。然后账号咱就叫 没有了好吧, input 点 nice 密码 pwd ok。 然后这个嗯,别换哈, 看下效果能长这样对吧?然后一回车紧跟着下边,如果登录成功的话 啊,咱们显示啊,欢迎你尊敬的谁是谁是吧?如果不成功的话就快滚一边去啊啊。咱们应该怎么写下这个功能呢? 好,首先确定你账号密码在哪张表去匹配啊,咱很明显是不就死丢的呢,学号作为账号密码就是这个密码对吧?然后如果成功的话,给我打印出欢迎你尊敬 的金碟对吧?如果我用这个账号这个密码的话,就是欢迎你尊贵的赵青。好吧,好了,来。那这个四口语句咱们应该怎么去写呢?十来个星哎, 死丢的条件是学号等于一个值,并且是不是密码也要等于一个值啊,老给你 pwd 等于第二个值, 就这么搞,哎,就这么搞。然后其实他这块返回的是不是只返回这个名就可以了?所以这块直接就是 对吧?之前讲四口语句的时候说过,能返回具体的列就尽量不要使用这个星对吧?好了,那就是这个四口语句就 就是他简单的测一下账号。照片呢,这呢,照片的密码为 执行这位赵谦啊,如果密码错了是不就没有啊。好了,四口有句粘过来吧,养成一个习惯哈。在写这个东西的时候,先把四口有句啊,在咱们这个透的里边,先运行成功, 然后成功之后 copy 过来定义命令。 这样我是不是能够保证我的三口语句是百分之一百没问题的。 哎,要不然的话,你如果在这硬写的话,你也不知道你写那个玩意对不对,到时候报了一篇错,你还得按个字母去看, 是这意思吧。好了,然后呢?在这个位置,这个位置,这个是不是那个账号啊?也就是咱们所谓的嗯啊,好嘞, n o 啊,变量啊,是不是 n o 啊,拼在这,然后最后这个是密码也要拼在这。 pwd, ok 吧。好,三口语句定义好了,紧跟着要干什么了, 是不是开始正常的逻辑了?开始走了吧。这个什么获得连接啊,你没发现啊,看我代码啊。呃,测试连接在这呢。然后呢,我添加的时候连接这么写的,对吧? 我查询的时候,连接还是这么写的。然后呢,接下来我登录的时候,你说连接会不会变样?还是那样吧。也就是说,我每一个操作所获得的连接代码是不是一直就这样啊? 那我何必写一遍呢?我把它封装成一个方法,掉一下,是不方便很多呀。好嘞,接下来我就要封装一个类,这样一个类,咱这个类呢,就叫 db 数据库嘛。 db 类,然后他放在什么包里呢?我认为这个 db 类啊,里边就装一个获得连接的方法,所以我叫他工具。 哎,兔子工具啊。建了一个包,然后在这个包里边呢,建了一个 db 类。这个 db 类干嘛? 一共方一个方法 啊,提供啊,就是获得连接数据库,连接对象。 好啊,我要封装这一个方法了。 party 和王伟的 get 连接。 然后是把之前的代码往这里一放就可以了。好看着啊,把之前的代码就不写一遍了,一模一样的啊。拿过来。 好。这块是怎么着?为啥?报错异常吧。哎,这个异常呢?在这块我就不需要抛了。为啥嘞?我之前抛往这块要抛,目的是什么?目的是让大家看着这个清晰的 结构。 ok, 如果真实的代码里边不要抛啊。能在这处理的,你就给他揣开始处理掉行吧。好了,把他这两句话是不是也揣开始啊。 ok, 开始了。首先啊,想按这个这个这个,拆开时这个快捷键啊。你必须得保证一件事,保证你即将捕获的这两段代码中不会出现编意的错误。 换就换啥。就是这两句代码除了拆开是没加这两句代码。必须是一点错没有,你才能运用快捷键,否则运用不出来。明白啥意思吧。好了,如果这样的话,其实怎么验证也很好。验证你鼠标拿上来是不告 开始啊。这句话呢,是不是也是这样的开始提示啊。好,把这两句话选中。然后快捷键。其实就是这个啊, 我这分辨率改的这么小都看不全啊。我盖住了。就上面这个。我现在不是这个 logo history 吗?上一个选项看到了吗? store 的位置看到了吗?上面这个。然后你看后边什么快捷键, alt, shift, j。 ok, 就摁他,明白了吧。看着啊,把他们选中,然后就是 out shift 加 j, 换出这个菜单来。 然后按下箭头。看到了吗?看着我的光标移动了吗?来,再来一遍。 下箭头就是第一个,然后回车。就加上了。还得慢慢练啊。告诉大家选中选中,要补货。一补货 异常的代码快捷键为选中。必须得先选中啊,然后是 out 加 shift 加 z, 然后向下箭头向下 向下一个是吧?哎,按一下向下按一下下吧,按向下 就选中了,然后回车。这个一会在做练习的时候自己按两下啊, 多运用就会了。好了。然后呢?我这个方法是不是已经封装完毕了?哎。代码呢?我是完全拷皮过来的,肯定是不会。没,肯定没问题。那现在呢?大家看啊,我就删了。 我想要登录的话。想要登录的话,我下一步应该干什么了?连接对象呢?我已经通过这个方法已经有了。我现在写的假代码啊,就伪代码就可能会报错,你先甭管他。好吧, 是不是通过这个方法,我能够获得连接对象了。然后呢?连接对象是不是就开始可瑞特什么死贼特曼特了 是不?这意思哎。那么以下代码咱们等会再往后写。现在先把这句话搞定。 先把这句话搞定。我如何获得这个?通过这个方法获得连接对象。也就是说我在这里边,我在咱们这个类里边。我怎么调 db 类中的 getcn。 你扭是吧?这扭一个,那扭一个,烦不烦啊?这扭一个,那扭一个。对象越来越多是吧?哎。简单的方式是什么呀? 静态是吧?哎,静态是不是在内存地址中是唯一的呀?哎,这个方法不错啊。静态是不错的哦。怎么弄? st a t i c 是吧? s t a t i c。 好了,就要用这个盖子。那就这块 怎么写啊?叫 d b 类点 get 汤是吧?那这个方法你看一下,相当于掉这里了。我这个方法呢,没有反馈值, ok? 没有反馈值。而你前面这块是不是得用个 c 文来接呀? 其实你看我怎么做的啊,看好了,我需要这个静态。这个静静派无所谓啊。如果是我做这一块的话,我会这么去解决。我会把 c o n 这个对象啊,我给他提取到成员变量上, 初始化为空。然后下边这一块呢,就直接是复职就好,看懂了吗?这块 ok。 然后我怎么得到这 这个 c 文对象呢?看着啊。我首先我首先你看你想啊,在家玩体系中,如何无条件调用一个类中的成员面料?我说把 dp 类一继承过来呀,一继承的话,我这个对象我能不能用到了?能了吧。 ok? 是不是继承啊?哎,要我写的话,我这么写,继承一下比你妞对象好多了哈。好了,那继承之后啊,首先啊,这段代码呢,仍然要执行一遍。那你看这个方法对这个类来说是不是公开的呀? 那他也就是说这个是你父亲,这个是你父亲向你敞开的钱包,你是不是随便上里边就掏啊,对吧。 掉下这个方法呗,你看怎么掉啊,直接掉就行了呗。报错来 这块静态恶心。慢方法恶心呢?这块因为他是静慢慢方法嘛,所以他是静态下边还得调静态是吧。这个讨厌了啊,这个讨厌了。 那么咱们就不给他写在慢方法里,正常的登录是不是也应该封装一个特殊的方法呀?干掉再见吧。慢方法 他们那个卧位的,这个方法咋写卧位的对不对?就叫登录,就叫登录,行吧。哎,就叫登录。然后呢?你看我调了一下这个方法,调了一下这个方法, 然后这个方法掉的目的是什么?拿对连接给了 c o n 对吧?好了,那这个 c o n 一开始是空,经过这个方法之后,这个里边还是空吗? 不是孔是给食的吗,对吧?好了,那我这块接下来就这么做就行了啊,不是一个包内啊,不是一个包内,他是默认的权限哈,给他来个公开吧。 好了,这块呢,他就需要踹开始了,踹上啊。好了,那咱们这句话获得连接。 哎,通过这句代码,咱们就已经获得链接了。然后简直了。这个东西干嘛呢这是, 对吧?哎。引包好 s 七点直行。 什么操作?这是什么操作?查询。所以必须这块是什么啊?款蕊哈四口有句扔进去返回瑞造特造特 set 好引爆。接下来是不是就对二 s 进行循环就好了。但是呢,我这块查询的时候看这个结果, 这个账号,这个密码,如果匹配的话,是不是就返回一个名啊,是不是就一个名,他会返回一个张三李四王五多个名,不会吧。所以呢,这块我根本就不需要循环啊,对吧?我只需要看你二 s 里边能不能拿着值是不就行。 所以直接就是一幅判断二 s 里边如果有值,则直接输出, 欢迎你尊敬的叫啥名对吧?否则 滚是吧, 走开。这个就是判断如果有值哈, 有值啊,怎么说?如果有数据则登录成功 是吧?然后这个名在这块咱们应该怎么获得到呢?上午说了, 通过二 s 对象是不是我拿往出拿呀。名不是死卷类型吗?然后这里边是不是可以扔列的行列号第几列也可以扔列的名称吧。 ok, 这里边扔裂的名称呢?谁都知道是不是死性的内膜扔这就行了。但是如果说你要扔这个这个这个第几裂的话,你应该写几呢? 好,记住了啊。这块我特意这么说的一句,你看啊,这块扔第几列并不是说看你表中这个列是第几个,而是你这个四口语句最终执行的结果中的第几列。啥意思呢?我这个四口语 退回来是这个密码吗?我这个时候有一句最终查询的是不是只有一列啊?所以你这一块必然就是你不可能想 明白啥意思不。哎,就看你这个结果级会产回产生几列,然后这块写具体的第几列。 ok, 好了,写到这的话,关闭资源,咱们暂时先偷个懒。好吧,看一看我的程序有没有问题。执行。执行个屁啊, 慢方法让我干了。这能实行吗?是不是 好,我目的是不是就掉这个方法啊。那还不简单吗?又一个当前泪点。捞个印 是不是这样的?是不是掉了高音了。这行账号 one two 肯定没这个账号密码吧。来找一个十来个星来,就这个吧。 啊,重新运行账号。这个他太长了。这个回车密码 ok。 这样的话我这个登录呢就算是写完了。关键的是刚才我发现这个过程还可以,就是这个封装 dp 类,是不是有点蒙啊。 我把这个方法啊,我把这个方法,这个代码,这个这个方法里边的代码呢,是完全 copy 过来的哈。然后呢,提供了一个方法名 折上。你这么看就简单了。这个类里边干了吗?干了个什么事?声明了一个连接对象,声明了一个方法。 注意啊,当声明的时候,他是一个空值对吧? 调用这个方法也是这么看,程序自上而下,往下直行,直行到此时的时候,就这个。这句话的时候,在我的负累中, c o n 是不还是空的呢? 然后我再执行这个方法,调用了负累中的这个方法。这个方法干啥使呢?就是将 你刚才的空对象复制了一个连接, ok, 所以这句话在这的时候, c o n 是空的。这句话执行完,到这的时候, c o n 是不是就已经获得连接了, ok 吧。 哎。然后呢,我是怎么获得那个 c o n 呢?在这直接拿的,你鼠标放上来,你看这个单词单,这个单词跟别的单词不一样,它蓝色的吧。鼠标拿上来看它是谁的类中的 c o n 呢? 是不是 db 类的?比如说这个是我负累中的对象, ok, 直接拿过来就行了, 负累吗?因为继承了,所以直接拿过来就用。然后呢?该怎么着怎么着,往下边一系列了。最后这注意的是什么呢?二 s 这个 get 一啊,有的人奇奇怪哈,我写个二, 你会看看是什么错哈。直行 没有啊,没有,他进不来这个衣服哈。哎,好讨厌啊。这个账号密码还得重新来一遍账号给他演示一下这个错哈。然后密码这呢 好,看到什么错了吗?无效的裂锁引。不是锁引裂就是无效的裂号对吧?因为你的裂一共就一裂,你写二是咋回事呢? 是不是啊?哎,所以只能写一啊。好了,这就是刚才我写的全部在哪了?
粉丝4066获赞1.8万

大家好,今天我给大家讲 jsp 链接数据库啊,我们这里有一张烟皮表,有个固眼的一个啊,烟皮数据库有个固眼的一个类,这里有两条数据, 张三和李四,然后现在我们要把这两条数据呢读到我们的网页上,我们给大家看一下这个效果,先运行看一下效果 好,然后我们这个效果就出来了,已经把这个,呃数据库里面的数据呢,成功读取到页面上,把数据库里面的这个数据已经读到页面上,那这个我们是怎么实现的呢?我们比较简单呢,我们看这个工程 那个结构,就一个 index 页面啊,然后还有一个我们的一个卖色口的水库的一个七通包啊,我们先简单的看一下这个啊,这个代码啊, 大家可以看一下啊, 这是我们通过 gdbc 的一个技术了啊,定义一个启动,呃,这个 数据库他的路径,数据库用户名密码链接啊, stat 们的对象,然后加载启动获得这个链接,然后创建那个 stat 们的对象,然后 色口雨季执行,色口雨季获得我们的这个结果机,然后读取相应的一个结果机, 然后输出到页面,然后关闭,我们的一个结果就是他们对象链接,然后这个就是我们的一个代码。

打破双清尾派机制,首先呢,咱们的双清尾派模型啊,并不是一个强制性的约束,而是扎瓦设计者推荐给开发者的类加载器的加载方式,那么双清尾派呢,它是可以防止类的重复加载,并且让类加载有一个优先级的层次关系。 但是呢,这种机制啊,有时候会存在一个弊端,因为类加载有一个机制是当前被加载的类引用另外一个类的时候,训机就会使用加载第一个类的类加载器加载被引用的类。那如果抱着这样的机制啊,去实现 gdbc 加载驱动的过程,你会发现它是没有办法实现的, 因为咱们的 dryworm manager 是咱们的 boss triple colus loader 去加载的,那么 drywam manager 在加载买 sarco 的驱动也是咱们的 com 点买 sauco, 点 gdpc, 点 drawer 是,那么如果也采用 boss triple colus loader 去加载的话, 明显是加载不到的,因为 gdbc 是咱们扎瓦端提供的一个规范,一个约束,具体的驱动实现啊,是要由咱们的数据库厂商去实现的,那我们就需要以导入依赖的方式去获取买 cep 的驱动, 那么它就存储在咱们的克拉斯 pass 下,那克拉斯 pass 呢,需要由咱们的 offices and cus load 去加载,那么 gdbc 呢,就实现了负类加载器去请求子类加载器去完成类的加载行为, 这样的话就已经破坏了咱们传统的双亲伟派行为。而 gdpc 呢,本质啊,就是基于 spi 机制,绕开了咱们的漏的 class 方法,基于当前现成获取关联的内加载器去加载数据库厂商为咱们实现好的驱动,哈哈哈哈哈哈,哎呀,腰疼。

每天一个计算机小知识,什么是 hibernate? hibernate 是 一个开源的 java 持久化框架,它对 j、 d、 b、 c 进行了轻量级的对象封装,是目前主流的全自动 o r m 对 象关系映设框架。它将 java 中的 p o j o 简单 java 对 象与数据库表建立映设关系, 让你可以用面向对象的思维来操纵数据库。一、核心运作机制一、自动化 c 扩生成海本内特,能根据映射规则自动生成并执行 c 扩语句,极大地减少了手动编辑 j d、 b c 代码和复杂 c q l 的 工作量。 二、对象状态管理它将对象分为瞬时态为关联 session、 持久态,受 session 托管且同布置数据库和游离态 session 关闭后三种状态, 自动维护数据一致性。三、缓存优化内置一级缓存 session 级别和二级缓存 session factory 级别,通过减小重复数据库查询来提升性能。 二、关键组建一、 session factory, 全区唯一的现成安全对象,负责创建 session 并缓存映设原数据。二、 session 代表与数据库的一次会话,是执行 c r u d 操作的核心接口。 z h q l hibernate query language, 一 种完全面向对象的查询语言,屏蔽了底层不同数据库的语法差异。 三、核心对象状态解析一、瞬习态 transent 刚通过 new 创建,既没有数据库标识 id, 也未与 session 关联。二、持久态 persistent 已受 session 托管,且在数据库中有对应记录, 其任何属性更改都会在事务提交时自动同步到数据库。三、托管肽游离肽 detach 曾是持久肽,但因塞性关闭 close 或清除颗粒而脱离了管理,此时对象有 id, 但修改不会同步至数据库。四、移除肽 removed 通过 delete 括号标记,待事务提交后从数据库删除。总结,如果你需要更灵活地控制 sql 性能,可以对比了解 my bodies。 但若追求快速开发和跨数据库迁移, haborate 是 首选的透明持久化方案。

你是否还在为性能测试手动准备数据而感到头疼?当我们数据量巨大或者需要动态实时数据时,用 csv 文件依旧比较麻烦,那么今天教你解密的进阶技能直连数据库进行参数化,我也整理好了相关的详细的脚本和实践案例,如果有需要的话可以直接找我要。我们可以想象一个场景, 比如说你需要模拟一千个真实用户登录,但用户名和密码都存在公司数据库里面,手动导出再做成 csv 文件太慢。 用 jmeter 的 j d b c connector configuration 和 j d b c request 的 主键就能让性能测试脚本和数据库对话。它的核心呢就是 j meter 充当一个客户端,通过 j d b c 驱动连接到数据库。比如说我们常规的买水果数据库 发送我们 request 这样的一个请求,我们常见的就是发送一个查询语句,比如说 select username from s y s user 这样的一个表,从这个表里面把查询结果一行行取出来, 复制给他一个变量,比如说 username 共后续的我们这个 hdd 请求等取样器的一个使用,这样的话你就能用数据库里面现成的可能每天都在变化的真实数据来做压缩,这样的话我们测试的结果更加的贴近真实的一个场景。具体的操作步骤呢,只需要是四步, 第一步呢,我们就是引入数据库的一个驱动,一个夹包,就像杰米特安装一个翻译器一样,让他能够听懂数据库的一个语言。 这个架包的名称呢,就叫 my circle connector java, 然后后面是一个版本点下这个主要是放到我们 jmeter 安装目录的 nib 文件夹下面,这个是一个环境的配置。第二步呢我们就是配置数据库的一个连接,也就是我们 j d b c connection configuration, 我们在测试计划里面添加这个主键,这里的关键填写呢,主要是填写我们下面的这些数据。第一个就是我们 database url, 也就是我们数据库它的一个连接的地址。 然后第二个呢就是我们 j d b c driver class, 这个我们一般就是选择 com 点 my socket, 点 j d b c driver。 第三个呢就是我们 username 和 password, 这个也就是我们连接数据库的用户名和密码, 这个所有的设置好了之后,等同于我们就设置好了我们的网络和登录权限。那么第三步呢,我们就是编辑,我们搜索查询并提取我们的变量,这里呢我们编辑搜索查询的时候,要针对于数据库里面它的表明以及它的字段名,我们要去拿 username 和这个 password, 我 们就要把这两个字段拿出来,这里呢我先演示的是拿出一个 username, 这个 password, 我 们就先把它写死,这里我们就是 selector username, user where user id in, 这个我们就是根据它的 user id 取了前三个数据,那这里搜狗语句写完之后,我们就到了最关键的一步,也就是我们要去给它复制一个变量名,也就是我们这个 visible names, 这里为什么说关键呢?是因为我们这里复制了一个变量名,在后续调用的时候, 调用的变量名必须和这里保持一致,不然我们就调用不到这样的一个对象的值,那在哪里调用呢?也就是我们在实际的接口请求的时候调用, 这里的调用呢也是通过 dollar 符号加大括号以及我们刚刚复制的那个变量名 username 来进行一个调用,这样的话我们就实现了通过 my socket 数据库提取数据的一个参数化,我们来执行一下,我们这里提取了三个数据,所以我们相当于就登录了三次这个验证码,它是前置的验证码的一个提取。 我们来看一下请求,第一个呢我们用的是 username, 对 到这里 username, 第二个呢我们用的是 cyl, 对 到这里 cyl, 第三个呢我们用的是这个菜狗一二三,菜狗一二三就使用到了我们提取的这三个数据, 那么我们数据提取实现成功了,我们还要注意两个避坑指南。第一个呢就是我们连接数据库的这个配置一定要设置比较合理,也就是我们在这个 j d b c connection 这个里面,我们设置这个 max number of connections, 也就是最大连接数,我们要去把这个值设置的合理一些,就这个 这个设置的合理是避免压缩时,我们把数据库都压空了,那我们这个数据肯定就提取不到了。第二个呢就是我们结果变量使用时要循环呢,我们一般就是通过这个负一次控制器来进行一个循环的获取,比如说我们这里设置了循环的这个起始和结束, 也就是对应我们要提取的具体的一个数量,这样的话我们就可以实现循环使用不同数据。那我们掌握了这一招之后,不管是我们测试用户登录、商品查询,还是订单处理等等场景,只要数据在库里面,我们就能够轻松的调用,让性能测试真正的火起来,效率呢和真实性有双双的都可以拉满。 那么你在使用这个数据库参数化的时候,有没有踩过什么坑,或者有没有什么高效的查询的一个技巧?一起来分享一下你的实战经验。

兄弟们,第二十三、今天我决定让 j d b c 正式退休。写了几天的原声, j d b c, 我 真的是写吐了。注册驱动获取连接,手动 set 参数,手动 get, 结果写代码变成了搬砖,这谁顶不住啊! 于是我上网买 betas, 感觉就像是给 j d b c 请了个管家,我只管在叉秒里面写 siri, 剩下的创建连接处理结果机买 betas 全包了,你看这代码量瞬间少了一半,这才是写代码该有的样子嘛。 最让我惊喜的是这个 result map, 以前数据库的叫做 students name, java 里面叫 name, 查出来就是 non 得手动,一个一个的。对,现在配置一个映涉关系,它自动就给我装备好了。这就好比两面插头不一样,奶贝特斯直接给了个转换头,直接通电, 再配合自己服装的工具类,以后再来改查就是一行代码的事,不用再担心忘记关流导致内存泄露,也不用写重复的 try catch 了。第二十三、买 betts 基础拿下,但这只是开胃菜,明天我们要挑战买 betts 的 进阶玩法,动态 circle 和逗表查询,听说能像写代码一样控制 circle 逻辑,咱们明天见!

每天一个计算机小知识,什么是 my botis? my botis 是 一款由 java 编写的优秀持久层框架,前身为 ipad 的 i botis 项目。它通过封装 j、 d、 b、 c 操作的繁琐细节,使开发者能以极简的方式实现数据库交互。核心专注于 c 扩本身。 一、核心定义与定位一半自动 o r m 框架与 haborate 这种全自动框架不同, my botis 需要开发者手动编辑原声 cquill, 因此被定义为半自动。这种特性赋予了开发者对 c 库性能的绝对控制权,尤其适合业务复杂或性能要求极高的互联网项目。二、关注点分离它将 c 库语句从 java 代码中抽离,存储在 xml 配置文件或注解中,消除了硬编码,实现了 c 库与业务逻辑的结偶。 二、主要技术优势一、高级映设自动将数据库结果及业务逻辑的结偶。二、主要技术优势,一、高级映设自动将数据库老式加哇对象, 免去了手动解析 resultset 的 工作。二、动态 sql 提供强大的 xml 标签,如 if where, 允许根据不同条件在运行时动态拼接 sql 语句,极大地提高了代码灵活性。三、轻量与集成由于不强制使用复杂的对象继承学习曲线平缓,且能与 spring 等框架无缝集成三、架构层次, 其功能架构分为三层, a、 p、 i。 接口层供开发者调用。数据处理层负责 c 扩解析与执行和缓存层减小重复查询开销。总结,如果你正在开发一个逻辑多变且需要精细优化 c 扩性能的应用, maptus 是 比 hibernate 更具灵活性的选择。

兄弟们, day 二十四昨天学会了简单的增删改查,但如果用乌苏的条件不确定该怎么办?以前在 j d、 b c 里,我得疯狂的拼接字母串,满屏的加号和引号,稍许一个空格就报错,简直是控制人地狱。今天学了买贝蒂斯的动态 circle, 感觉瞬间通透了。你看这个衣服标签,就像在叉标里面写扎我一样, 名字不为空,它自动帮你拼接 circle, 参数没了,它自动帮你去掉 end。 这种把逻辑交给框架的感觉就是两个字,优雅。最硬核的是这个多表连接,以前查学生代班机得查两次库在手动组装。现在配置好了, association 来贝特自动将两张表像拼乐高一样拼在了一起。 虽然中间报了几次错误,字在名对不上,但我直接把报错丢给 ai, 改完后绿条一亮,那种成就感觉了。现在状态就是越写越有感觉,虽然有些配置还有查文档,但先保通再理解才是王道。 买贝特斯这一关算是过了,明天我们要深入 java 后端的深水区, spring s o c 和 a o p, 那 才是面试的重头戏,咱明天见!

兄弟们, day 十三今天是个大日子,我的 java s e 基础部分终于学完了,最后一关是 j d b c, 也就是让 java 代码和 m c c 数据库正式联姻。 以前觉得连接数据库很难,今天上手一写,发现全是套路,加载驱动获取连接、执行 c c 口释放资源,流程雷打不动。虽然代码看的多,但只要理解了原理,根本不用死记硬背,先让别人就形成接受记忆了。 当然,作为一名特种兵,我肯定不能忍受每次都写几行的重复代码,所以我把连接过程封装成了 j d b c youtube 工具类,把配置丢进 properties 文件夹里,再看现在的代码一行获取链接清清爽爽,这才是写代码该有的样子。不 过今天也看到了一个著名的安全漏洞, circle 注入。如果用普通的 statement, 别人在密码中输入二一等于一,居然能骗过数据库,直接登录成功,太离谱了! 好在有 prepare statement, 预翻译一下漏洞直接堵死大家。以后写 circle, 千万别用字母串拼接技术打牢地基,移稳 date 三 j d b c 拿下 javase, 正式毕业,明天开始进军 javaweb, 听说要开始做网页了,有点激动,明天见!

买贝迪斯是如何来简化这四个麻烦地方的?对于硬编码和操作繁琐这样的问题呢? 他是经常这种基础性的代码都会出现的哈,一般我们有一些通用的解决方案,比如说将来出现硬编码的时候呢,无外乎其实就是自负串,不要写到代码里面去了,自负串你将来写到一个单独的配置文件去, 而对于操作繁琐的这种代码呢,一般情况下我们都需要让他自动的去完成就可以了。 买贝利斯其实也是这样简化的哈,比如说第一块,注册驱动获取连接这一块,你不是有硬编码吗?买贝特怎么做呢? 买贝迪斯呢,其实就是将这些字母串信息给你写到配置文件去,你看这里边是不是有驱动的连接信息,有 u r 的信息,有用户名,有密码这样的信息写到一个配置文件去, 比如说我们这个地方写好了一个买贝特斯的项目,我们可以看一下有一个配置文件叫做买贝特斯,刚考飞格的查麦尔之买贝特斯的核心配置文件,你看这里边是不是就是连接的信息啊,不用在代码里边写了,写的配置文件将来读取配置文件这些参数的信息值就可以了。 那么接下来再来说第二个,第二块呢,思口语句是不是也存在硬编码的问题啊?那么思口语句呢?买贝德斯也是将它抽取到了配置文件里边去,那么同理我们看一下, 在这一块呢,还有一个配置文件里边写了对应的死口语句吧。好,那么我们再往后看这两个繁琐的,一个是设置参数,一个呢是便利这个结果机,那么这两部分代码呢,写代码比较烦,对吧?买贝特斯怎么做呢?买贝特斯呢, 他一行代码把这所有的事全部搞定了,我们可以看一下,在买贝特斯里边啊,他其实做的时候呢,就这一行代码, 你注意看,你看参数是不是给你了,给了之后呢,大家直接调用一个方法,斯莱克利斯等,然后呢就查询出来的这个集合,并且呢这个集合里边装的就是一个一个的游子对象,比如说我们来运行一下,注意看 你看集合里边的信息是不是都查询出来了,你发现那么多代码啊,买 bids 一行就搞定了,是不是非常非常的方便啊? 所以啊,我们说买贝迪斯啊,他其实就是免除了几乎所有的 gdpc 代码以及参数和获取结果级的工作,买贝斯的官方呢,就这样说的哈,他说买贝斯的好处呢,就是干这件事,免除了 gdpc 的代码 以及设置参数和获取结果级的工作,不用我们再去做了,自动完成了。而且呢对于这种硬编码的位置呢,买贝德斯呢,也抽取到了配置文件里边,让这个程序的将来的可维护性更强一些。 由于啊 max 有这么多好处和特性,所以呢 max 在持久层框架里边的占比是非常高的啊。