粉丝7.8万获赞29.3万

各位同学大家好,今天我们来学习一门高级技术, my baddis。 那么首先呢,先来介绍一下 my baddis 到底是个什么东西?它能解决什么样的问题啊? 那么买贝贝斯呢,它其实是一款优秀的持久层框架,它用于简化 jdbc 开发的, 那么这一块呢, jdbc 我肯定知道啊,哦,买贝迪斯这个技术呢,是来简化 jdbc 的这么一个持久层的框架, 那么这里边有两个词哈,一个词呢是持久层,一个是框架,那么对于这两个概念,我们第一次接触下来,我们来讲解一下。首先来说持久层, 那么持久层呢,其实是来负责数据保存到数据库的那一层代码,我们称为持久层,那么核心点在于啥?是不是在于这个数据保存到 数据库啊,也就是说将来啊,我们可能会有很多很多的代码,那么这些代码呢,我们为了保证他的职责单一,我们将同数据库操作的那一些代码呢,我们就称为持久层, 就这个意思哈,那么其实在扎挖意义里边呢,有三层架构非常经典,分别是表现层,业务层以及持久层。 那么其中表现层呢,是用来做页面展示的,而业务层呢,是用来做逻辑处理的,而持久层就是用来对数据进行持久化的保存到数据库去的。 那么今天我们来学习的是持久层,那么对于表现层和业务层,在我们后期的课程中会逐渐讲解到的。那么接下来我们再来说框架这个词,框架呢,它是一个很重要的概念啊,其实框架 就是一个半成品的软件,半成品很关键,它是一套可重用的通用的软件基础代码模型, 那么读完了之后呢,可能也没有什么太多的感觉啊,来解释一下。那么这个地方呢,半证明很关键,也就是说啊,有一个软件,人家写了一半,然后接下来你拿到这一半之后呢,你在上面再进行一些代码的编写,那么这个时候合起来是不是就是一个完整的软件产品了? 其实就这个意思哈,那么这个时候呢,有什么好处呢?就是你在框架的基础上来构建软件的话呢,别人写好了一部分,你再来开始写,是不是更加高效? 而且呢,别人写好了一个模板之后呢,你来写更加规范,通用,可扩展。所以将来我们要学习很多很多的框架哈,就是别人写好的一些东西,我们拿过来用,我们在框架 基础上来进行开发,效率会更高一些。那举个例子吧,生活中的例子有很多,可以来印证这个框架这个事情哈,比如说啊,有没有玩过这种给石膏这种雕塑来上色呀? 我们经常去公园,是不是可以看到这样的很多的石膏,很多小朋友在对他们进行涂鸦,对吧?有没有玩过呀? 哦,有的同学说没有,是吧?那你这个童年过得可能比较悲惨一些哈,好,那么比如说啊,这有个石膏,这个石膏呢,现在只是一个模子,他还没有进行上色,那么将来很多小朋友拿到这样石膏之后呢,是不是可以对他来进行上色呀?我们可以上到不同的颜色,那么就形成了不同的产品, 那么这个时候这个石膏的模板是不是就相当于是一个半成品啊?还没有做好吗?但是呢,是不是已经有一个大体的架子了, 然后我们需要做的是啥?是不是就给他涂点颜料就可以了?所以你使用框架来进行开发的话呢,他呢只需要让你做少量的工作,你就可以做出来一个非常复杂的这么一个软件产品啊。 那么还有呢,就是我使用框架之后呢,你会发现我通过一个框架,其实呢完成的工作呢,也就是同一项的,也就是说我们用买呗,得死,是不是只能完成持久层的一些开发的技术,我将来还有表现层的框架,业务层的框架,我们其实都需要去学习的。 那么再通俗的一点讲,就是说啊,你现在一个石膏是一个小女生,对吧?那么这个时候呢,你总不能说你上完色之后呢,让他变成个小男生了吧,就是说一个框架,你不管怎么去改,他,怎么去用他,那么他做出来的东西呢,其实就是来解决这某一 类问题的啊,好,这就是我们所说的框架哈,那么今天呢,也是我们学习的第一个大型的框架,叫做买贝特斯,他呢就是用来简化 jdbc 开发的。 好,那么下边还有一点小概念也来说一下,买贝利斯本来是阿帕奇的一个开元的项目,叫做 ipath, 哎,又是阿帕奇的对吧?好,那么他呢,以前的名字叫做 ipats, 后来呢叛变了,跑到谷歌去了,二零一零年的时候,那么再后来呢,又迁到 github 上去了,这是他的历史哈, 那么买贝利斯呢,也有个官网,这是他的官方网站,我们可以打开看一下买贝利斯这个官网,他的文档写的是非常好的啊,因为呢他支持国际化哈,这里边你看是不是有不同的语言啊,我们当然选择简体中文就可以了,那么你看到了说买贝利斯他的一些介绍,而且呢后边有每一个 操作的详细的步骤和文档,那么待会我们学到对应的技术之后,我们再来看这个文档, 那么搞清楚了买贝德斯是什么,以及他用来干什么,我们再深入的去讲一下。刚才我们说买贝德斯,他是用来简化 jdbc 开发的,那也就意味着 jdbc 的开发一定有一些缺点或者说不好的地方, 那我们接下来就来深入的说一下,像 jdbc 这样的代码到底有什么样的缺点以及繁琐的地方。 那么这一块呢,我有一个 jdbc 的代码哈,那么这一块我们可以简单的看一下这个代码。首先呢注册驱动,然后获取连接, 接下来定了一个色口语句,然后执行色口的时候呢,先要给这个问号站位服来设置对应的参数信息,接下来呢就可以来执行色口了,执行完色口获取出来这个结果机蕊滋到了赛的对象, 我们便利结果机封装对象装载机盒。那么像这个过程呢,应该是非常熟悉的,那么对于这样基础的代码呢,他其实是有些缺点的,分析下来呢,其实就两个缺点,一个是硬编码,一个是操作繁琐,那么下来我们就一个一个来说一下。 那么首先呢,我们先来看这块啊,就是注册驱动和获取连接这个位置,你会发现哈,他这个地方写了很多的字符串吧,这个字符串我们就成为硬编码, 就是将这些字母车的信息写到代码里边去了,而这些字母车信息将来有可能会发生变动,比如说这个密码不叫一二三四了,现在呢,比如说叫二三四五,那么这个时候你是不是要改动代码呀? 改动代码就意味着工作量呀,还意味着要重新去编议,重新去打包,重新去运行,那你想 这个代码的维护性就比较差一些了,这是第一个,就是说呀,我们这个注册驱动和获取连接的位置是不是存在因编码, 那么除了这个位置存在印边码,其实在这个定义色扣的位置是不是也存在印边码啊?把色口语句呢字幅串写到这个地方,那将来要改动色口语句,是不是也要去改动这个代码, 那这是硬编码哈,那么再往下看,再往下看这个地方设置参数这一块,将来呢,我们要对这些问号一个一个的去设置这些参数,那么现在呢,就一个问号设置起来其实还可以,那么将来如果问号多了,我是不是得写一排呀? 比如说我在做添加操作的时候,是不是有一排问号我要挨个的去设置啊,比较麻烦,所以呢,手动设置参数也是一个比较操作繁琐的过程,那么再往下看 这个地方呢,我们在获取完结果之后,对结果进行便利,在封装对象的时候,这么大一段代码是很繁琐的一件事啊,所以呢,手动封装结果机也是一个操作繁琐的地方, 那么分析下来之后呢,你发现 jdbc 这个代码啊,确实比较麻烦吧,其实像这样的基础性的代码呢,操作起来就是比较麻烦哈,那么没关系,买贝贝斯不是来简化他了吗?那么接下来我们就来说一说,买贝贝斯是如何来简化这四个麻烦地方的。 其实呢,对于硬编码和操作繁琐这样的问题呢,他是经常这种基础性的代码都会出现的哈,所以呢,一般我们有一些通用的解决方案,比如说将来出现硬编码的时候呢,无外乎其实就是自负串,不要写到代码里边去了,自负串你将来写到一个单独的 配置文件去。而对于操作繁琐的这种代码呢,一般情况下我们都需要让他自动的去完成就可以了。 买贝利斯其实也是这样简化的哈,我们来看一下,比如说第一块注册驱动获取连接这一块,你不是 有硬编码吗?买呗,这怎么做呢?买呗这次呢,其实就是将这些字母串信息给你写到配置文件去,你看这里边是不是有驱动的连接信息,有 ur 的信息,有用户名,有密码这样的信息写到一个配置文件去,比如 比如说我们这个地方写好了一个买贝特斯的项目,我们可以看一下,有一个配置文件叫做买贝特斯杠杠飞格尔的查麦尔,这是买贝特斯的核心配置文件,你看这里边是不是就是连接的信息啊,不用在代码里边写了,写了配置文件,将来读取配置文件这些参数的信息值就可以了,那么接下来 再来说第二个,第二块呢,死口语句是不是也存在硬编码的问题啊?那么死口语句呢,买贝特斯也是将它抽取到了配置文件里边去,那么同理,我们看一下,在这块呢,还有一个配置文件里边写了对应的死口语句吧。好 好,那么我们再往后看这两个繁琐的,一个是设置参数,一个呢是便利这个结果机,那么这两部分代码呢,写代码比较烦, 对吧?买贝特斯怎么做呢?买贝特斯呢,他一行代码把这所有的事全部搞定了,我们可以看一下,在买贝特斯里边啊,他其实做的时候呢,就这一行代码, 你注意看,你看参数是不是给你了,给了之后呢,大家直接调用一个方法,斯莱克利斯等,然后呢就查询出来的这个集合,并且呢,这个集合里边装的就是 一个一个的有责对象,比如说我们来运行一下,注意看你看集合里边的信息是不是都查询出来了,你发现那么多代码啊,买 bis 一行就搞定了,是不是非常非常的方便啊? 所以啊,我们说买贝德斯啊,他其实就是免除了几乎所有的 gdpc 代码以及参数和获取结果级的工作, 买贝斯的官方呢,就这样说的哈,他说买贝斯的好处呢,就是干这件事,对吧?免除了 gdpc 的代码以及设置参数和获取结果期的工作, 不用我们再去做了,自动完成了。而且呢,对于这种硬编码的位置呢,买贝迪斯呢,也抽取到了配置文件里边,让这个程序的将来的可维护性更强一些。由于啊,买贝迪斯有这么多好处和特性啊,所以呢, 买贝迪斯在持久层框架里边,它的占比是非常高的哈,这有一个分析的图表,我们可以看一下哦,其实持久层的框架不止买贝迪斯这一个哈,市面上有很多很多这样的框架技术哈,比如说 spendice, gpa, 比如说 harbinet, 都是持久层的框架, 那么其中买贝特斯在国内占比是非常高的,占到了百分之六十九点五哈,非常高吧。然后呢,买贝特斯还有个升级版本的,叫做买贝特斯 plus 啊,就 跟 iphone plus 一样的是吧? plus 嘛,增强版,他呢也占到了三十六点五,这是多选的一个图表哈,不用加起来到一百哈,因为有的人可能用好几个的哈。 好,那么我们主要学习的今天就是来学习这个买贝特斯,那么在我们的课程推进到了后期的时候呢,我们还来讲解买贝特斯 plus。 那么对于 spand 的 gpa 啊,像海波雷特这样的类似的持久性解决方案,我们的课程中就不再设计了,因为我们要学市场上最为主流的这样的技术哈。 好,那么介绍完了买贝特斯干啥的?以及呢,买贝特斯的重要性啊,那么下来呢,我们就来学习买贝特斯。那么首先呢,我们先来对我们的买贝特斯课程安排做一个介绍哈, 那么了解了买贝思概念之后呢,下来我们第一件事就对买贝思来搞一个快速入门, 体验一下买贝利斯是如何的快速开发 jdbc 的程序的哈。那么第二块呢,我们会讲一个麦牌代理开发,其实呢麦牌代理呢,就是用来让这个买贝利斯的代码更加的简单,而将来我们用买贝利斯麦牌代理的开发方式是主流的方式哈,那么这两个都 ok 了之后呢,下来 我们会介绍一下买贝勒斯的核心配置文件,就是刚才我们说配这个数据库连接信息的这些配置文件,这里边其实除了写这些连接的信息,还可以写其他的很多东西的哈,我们要来详细的介绍一下, 接下来我们就来完成买呗,这次对于数据库的增山改查的操作啊,这块的增山改查有两种方式,一种呢是通过配置文件的方式来完成,第二种呢是通过注解来完成增山改查, 那配置文件呢,其实就是说啊,我们的思口语句写到这个配置文件里边去,那注解呢,其实就是将这个思口语句给他写到注解的属性值那个位置哈,就是配置的位置不一样而已, 用注解的方式呢,会更加方便和简单一些的,两种我们都会详细的去讲解,那么这些东西学完了之后,我们最后呢再来讲一个买 的高级特性动态蛇口,那么我们整体的买贝特的课程就学习完了哈,好,那么下来呢,我们就来完成买贝特斯的快速入门。

什么是 my betas? 相信很多人都不是真的了解这题,我会我来告诉你。 my betas 是一个持久层框架,用于简化 j、 d、 b、 c, 更加高效地完成开发,它的使用更是便捷。 第一步,先导坐标。第二步,编写核心配置文件,填写好 misco 连接信息。第三步,编写色扣映射文件。第四步,进行编码,定义时,体内加载核心配置,获取色扣对象,执行色扣语句。增加使用 s, 删除使用 delete, 修改使用 update, 查询使用 select, 也可以根据 a 的进行查询。下面进行实战查询所有用户信息。啥情况,怎么爆红了?让我来看看什么情况说没有查询所 所有的方法,我这已经定义方法了,我大概找了半小时原因重写了一遍,还是这个错误,现在好烦啊,跟着写怎么还会出错啊。

supreme 是如何整合买 babys 管理 mop 接口的?那这道面试题呢,也是出自于阿里的一道面试真题,主要呢用来考核一下你对 supreme 的一些拓展是不是掌握好了。 我们都知道啊,买 babys 的这个 mop 接口呢,它是没有实心类的对不对?那么我们是如何能够在我们的这个,比如说我们的业务逻辑类里面进行自动注入 mop 接口,为什么可以做到呢? 对了,本视频的文档我已经整理好了,并且与往期内容一起汇总成了二零二三年最新加法面试文档,放在了视频的最后面,坚持看完一定对你有帮助。那很多同学都知道,其实 mob 的接口呢? 买 base 它的实线是什么呀?动态代理对吧? j d k 的动态代理,这个慢慢儿接口的一个核心实线是 j d k 的动态代理,因为 map 他是一个借口,你肯定不能说我直接调用他的一个方法就去操作入库。所以说买 babys 呢,是利用 j d k 的一个动态代理来去实现的这个 map 借口。 但是关键是 spring 又是怎么管理的这个 mobile 接口呢?又是怎么管理的这个 jdk 的动态带对象呢? 所以说你必须对 supreme 的这些困难点非常熟悉,那么你才知道,我们就来说一下,好吧,当然这个知识点啊,徐老师之前也讲过一节专门的公开课, 咱们有兴趣呢,可以找一下 up 主,或者说找一下我的助理老师,单独的去要一下 supreme 整合 my base 的一个原理。当然我在这里呢,就把那些关键的点给我们说一下,好吧,首先我们刚刚说了 my base mover 接口呢,它的核 型是 jdk 的动态代理,其次呢,我们要知道啊, three 他肯定是管理了这个 mob 接口的动态代理对不对?否则你是不能自动注入进来的呀。 那么 supreme 它是怎么管理进来的呢?我们要知道啊,当我们 supreme 内部去注册一个病的时候,去创造一创建一个病的时候,那首先会将它注册成病体分离审, 对不对?那么注册 beautification 的时候呢,它就是去扫描你所有的这些类,然后呢,发现你上面有个恐 pod 的注解,就会把你呢 视为是一个有效的组件,然后呢判断你是不是一个接口,或者是不是一个抽象,如果是的话,会把你给排除掉。所以说 spring 它内置的这种扫描注册 beautiful nation 的方 是呢,是不会去注册你的接口的,也就是说他会把你的接口给排除掉,这是他默认的这种注册病例分离审的方式。所以说既然你 spring 你内部没有办法去注册接口的话,我只能怎么样?我只能我自己通过某个扩展接口 去注册 indefination。 那么哪个扩展接口可以注册 indefination 呢?其实我们之前就已经讲过,对吧?有一个叫做 indefination registry post process, 这个扩展接口呢,它又可以去动态的注册 indefination, 因为他提供了一个注册器,我们看一下,也就说你只需要实现这个扩展接口,那么实现这个方法呢,他就提供了一个这个注册器,这 这个注册器呢,就可以动态的注册并 definition, 知道吧?但是虽然现在你可以自己去注册, 但是你不可能说我手动一个一个去注册吧,对不对?你不可能说,比如说我有一百个 mop, 你不可能手动的去调用这个 redressed, 并且分内容去手动注册一百次吧。 所以说呢,你还是得去利用 supreme 的这个扫描类去给我们解析 component 的这个能力。 所以说呢,你可以呢去重写一个这个扫描器的一个子类,你去继承 supreme 内置的这个扫描器好吧, supreme 它内部呢有一个这个扫描器负责呢啊, 他是负责扫描我们所有的 lay, 其实就是我刚刚那个图里面说的啊,刚刚这个图里面说的他呢,其实就是负责拿到你所有的点 class 文件,然后呢判断你上面是不是恐怖的的,是不是抽象,如果是的话,他就会帮你去注册并基本历史。 所以呢,我们不可能说我自己还去完全的实现这一块,对不对?那工作量就大了。所以说呢,既然 supreme 它已经实现了,那我们就可以拿过来,但是你拿过来的话,它会排除掉接口呀,那么我们就可以呢创建一个子类,对不对?我们去实现它, 实现它这个副类,就是将这个 skin 呢作为副类,我们就实现它,然后重写它排除 接口的这个方法,其实就是这个方法好吧, is candidate 孔 bonut 这个方法呢,就是用来排除接口的,嗯,就是这个好吧,重写这个排除方法, 那么我们呢就可以将接口给它注册进来了,但是虽然接口注册进来了,但是无法去给它实力化并啊,因为你要知道,哪怕我为你把这个接口的 indefination 注册进来了, 你也不能够在病的创建过程当中呢,将这个接口进行实力化,对不对?那么又应该怎么做呢?这个时候呢,我们就可以呢去修改它的病 definition, 对吧?去修改它的病 definition 当中的这个并 class, 然后呢这一步我们管它叫做偷天换日,之前如果你不改的话,之前 indefination 的这个并 class 呢?它是一个接口,对吧?那么接口它是不能实力化的,那么你把它改成一个能实力化的不就完了吗? 关键是我们改成哪一个对不对?因为我们要知道买 babys 的这个 mopper 接口,它是动态代理啊, 那么你给它改成哪一个并 class, 你可以为它创建动能代理呢?其实利用这个 factory 并 就可以。这个病呢,我们之前说过他是一个特殊的病,他可以通过这个 get object 的呢,我们就可以在里面自由的去控制这个病的实力化过程,就可以在这个 get object 方法当中去创建 j, d, k 的动态代理。 能不能明白?所以说几个关键点,记住这四个关键点就完了。好吧,所以说我们需要呢在这里改掉并 definition 的并 class, 把它改成 factory 并, 然后呢你就可以在 get off jack 里面呢去控制他的动态代理的创建,从而呢去管理所有的 mob 接口。 ok, 记住这几个关键点就行了。首先呢,我们需要自己去注册,然后呢需要自定义一个实现了他内置的这个扫描器的一个子类,为什么呀?因为我们不可能自己去实现整个扫描,这个 扫描这个 indiffection 的整个的这些代码自己实现的话,工作量太大了,对不对?那么我们只需要实现它内部的 去,去继承他内部的,然后重写他的排出接口的方法就够了,那么工作量就减少了,对不对?然后呢?虽然注册进来了,但是他不能实地化,那么这个时候就需要偷天换日改掉他的并 class 改成 factory 并,然后再 get off gear 的当中呢,就可以去创建 gdk 的动态代理了。 ok, 那如果你没有看过原码的话,肯定听起来有点坐飞机对不对?因为你要知道我两节课的一个知识点,我压缩成十来分钟就就给你讲完了,那肯定是有点晕的对不对?那你跟面试官你也不可能弄,你也不可能说我十来分钟跟你讲对吧?你最多讲个四五分钟 对吧?甚至一两分钟就就讲完就够了,对不对?所以说把这些关键点说完就行了啊。那么在讲面试题的时候,我不可能说详细的去 给你讲他的这个过程,好吧,需要详细学习这一块内容的,去拿到徐树老师之前讲的这节公开课, ok, 那么这个面试题呢?就给他们讲到这, nice。

前几天啊,一位硬件神去面试变化,在一个 mybetice 中比较基础的一个问题,说 mebeditch 中的井号和多了符号有什么区别?那今天呢,我给大家来详细介绍一下。 另外呢,我花了一个多星期准备了一份十万字的面试题解析配套文档,想获取的小伙伴可以在我的个人主页就能找到。 那曼贝里始终提供的井号和多了符号其实都是实现动态赛口的一种方式,通过这两种方式呢,可以把参数传递到参妙之后啊,在执行之前,曼贝的时代会对这两组战略符进行一个动态解析。那么下面呢,我给大家详细介绍一下井号和多了符号的区别。 首先,那个井号,它是等同于 gdb c 里面的问号,它是一个站位符,它相当于是像扑了 plus, daddy 们的运输领域中 去设置一个参数。而 prada state 门中的 c 口渔具呢,是预编意的,如果在设置的参数中包含有特殊制服,他就会进行自动转移。所以呢,井号张卫符可以防止 c 口注入。比如说,专业的代码在解析前是这样的, 那么在解析之后呢,就是这样的,来使用多了符号呢,相当于是直接把参数拼接到了原始的 c 股里面,而慢慢的词呢,不会对他进行任何的特殊处理来看这样的代码。那么在解析前呢,是这样的, 在解析之后呢,变成了这样。所以啊,多了符号和井号最大的区别在于,前者是动态参数,后者呢是占位符,那么动态参数呢,是无法防止 c 口注入的, 而在时间用作呢,应该尽可能去使用井号占位符。另外呢,多了符号的动态传承,可以应用于一些动态 c 口的场景中,比如说动态传递表明、动态设置、排序自断等等。 我们在日常的编程过程中,一些小细节如果不注意的话,就有可能造成巨大的损失。在技术如此成熟的互联网时代,还是会有些网站经常出现借口注入而导致信息泄露的问题。 好了,以上就是我对曼贝迪斯配置中的井号和多了佛的理解,我是被变成单位的文艺汤,如果我的分享对你有帮助,请你动动手指,一键三连分享给更多的人!关注我,面试不再难!

介绍完买 bidis 的核心配置文件之后,接下来我们来使用买 bidis 对数据库的数据完成增山改插的操作,这也是买 bidis 最为核心的一些功能。 那么在增商改查这一块啊,买被这次提供了两种不同的方式,一种呢是配置文件完成增商改查,还有一种呢是注解完成增商改查。 那么其实啊,说白了就是配置文件的话呢,是将这个四口语句写到那个配置文件里面去,刚才我们是不是就这样做的呀?那么注解呢,其实就是把四口语句写到注解上边,那么我们待会也会详细来讲解哈。 好,那么这一块呢,提前说一下我们这个动态 soco 这一块呢,也会配合我们对音的配置文件完成增产改查的时候一起来讲解哈,因为呢,我们这一块呢,是要通过 一些案例来完成这个资金山改查的讲解,那么这个动态 saco 和这个案例结合起来会更紧密一些。 好,那么下来呢,我们先来说一下完成的这个功能的一个需求哈,我们要完成品牌数据的增山改插的操作哈。哎, 之前我们在讲解 gdpc 的时候,是不是已经做过品牌数据最为基础的增生改查了,那么这一块呢,我们讲买贝利斯,我们呢再来完成这些增生改查的操作哈,当然我们还要完成他的一些高级功能哈,那么首先呢,我们打开这个产品的原型来看一下哈, 打开之后呢,进到这个产品原型的网站界面,然后呢我们在这个地方点电商后台高保真原型,把这个配置词给他隐藏掉,然后呢你点到这个商品的品牌这一块,就可以看到这个品牌数据的列表了, 那么在这里边呢,其实我们之前讲 gdbc 的时候,是不是已经做过想查询所有啊,删除一个呀,还有编辑就是修改啊,新增呀这些基本的功能哈,那么在这一块,除了这些基本的功能我们要完成之外,那么现在呢,我们还需要做像这种的,你看 有很多的条件框框让你去输吧,输完了之后呢,你可以点搜索,是不是进行条件查询呐? 那么还有呢,比如说像这个地方删除这块,你是不是可以选多个,然后一点删除按钮,是不是可以来完成批量的删除,像这些功能我们也都需要去完成的哈, 所以呢,在这个功能列表里边呢,我们要完成查询,那么查询这一块呢,像查询所有查看详情以及条件查询,我们都会去讲解,然后呢再来做添加,添加完成了之后呢,修改,修改,我们也 会讲两个哈,修改全部的以及修改动态的字段,那么最后呢,我们会介绍删除,删除一个以及批量删除哈, 那么像这些功能呢,其实将来是一张表最为基础的功能哈,如果这样的功能你都能把它完成了,之后呢,其实将来啊,你不管遇到了什么样的业务呢,你都能做出来哈,比如说你把这个品牌的这些基本的功能给他做出来,然后呢你看商品的规格,你发现长得一样吧, 这个界面都一样,它的功能列表和清单呢,也基本上都是这些功能哈,你都能做出来了,再比如说你像商品的一些评价,你发现长得是不是都差不多,是吧? 所以呢,你只要能做出来一个,其实呢其他的你也基本上就能照葫芦画瓢都把它完成了哈,这就是我们所说的一通百通哈。好嘞,那么在完成这些基 的功能之前呢,我们先来把这个环境呢准备一下,那么这一块呢,我们要准备一下数据库表 tb bread, 然后呢我们再来把对应的实体类 brend 的实体类给他创建出来,再来呢写一个测试用力,将来的代码呢都写到这个测试用力里边去。 那么最后呢,我们再来安装一个买贝利斯叉的一个插件,那么这个插件呢,他是来快速开发买贝利斯的, 所以呢这个插件待会我们也把它装一下哈。好,那么下来呢,我们就一步一步来完成哈。首先第一个创建这个 tb 不乱的这个表, 那个表呢?在今天的资料里边,我们已经提供好了 tb 不按的点 circo, ctrl a ctrl c 把它一复制,然后呢粘到我们对应这个买贝利斯的数据库里边去, ctrl v。 好,然后呢全选执行一下,执行完之后呢,最后一条查询与 就把我们这三条记录是不是都查询出来了, ok, 第一步就做完了,接下来第二步我们要来去搞一个实体类,不软的的实体类,那这个实体类呢?其实呢我们以前写过哈,在这呢我就不再去书写了,我们直接把它 ctrl c, 然后呢复制到我们代码里边就可以了。 在今天的工程里边,我们有一个 pojo 这个包,然后呢直接 ctrl v 把它粘进来就 ok, 对吧?这是我们对应的不乱的的实体类号。 那么第二步也做完了,之后呢,我们再来看第三步,写一个测试用力,那么现在我们用了没文的功臣,那么将来的测试代码是不是要写的泰斯特这个文件夹下啊? 那么在这呢,我们有一个招啊,我们在这下边去创建对应的包和类号,我们比如说写个包 com, 点 it 黑马点 test, 点 买 bace test, 哈,测试买 bace 的,好嘞,将来的代码都写到这里边就可以了。这三步其实都做完了,那么下来呢,我们来安装一个买 bace 叉的这么一个插件哈。首先呢,先来介绍一下这个插件, 那这个买被这次插的插件呢,是一款基于矮第二的快速开发插件,他为效率而生哈,这两个字很关键哈, 那既然买贝特的叉呢是说为效率而生的,那我们先来分析一下,之前我们没有用这个买贝特叉这个插件的时候,那么他的效率有什么低的地方吗? 我们打开这个麦克文件来看一下,这里边呢,将来是不是要写四口语句啊?这个四口语句呢,其实呢,我们专业的称呼啊,一般我们叫他为 statement 啊,就是死爹特们特,我们说我们写了一个死爹特们, 那么这个死 day 特曼特和我们这个麦克接口里边,这个方法是不是要映射起来一一对应呢?而且呢名字要一样,对吧?那么经常我们会两头去看这个东西哈,就是我在这边看一下,然后在这边看一下,你发现我这个过程麻烦不? 有同学不麻烦呀,你这挺简单,点一下就行了。其实呢,将来这个方法有很多的时候,你挨个去找,你是不是要来回切这两个文件呐, 还是挺麻烦的哈,而你装了买被子插这个插件之后呢,将来呢,你,其实呢,在这个地方有一个按钮,你一点就跳准了对应的麦牌接口对应的方法的位置了,就很方便了。 这是第一个问题,那么第二个呢,就是说啊,将来呢这两个名字啊,这个名和对应的接口方法的方法名是表一模一样才可以, 那这两个名呢,有可能会写错,而你装了这个买贝特斯叉之后呢,他会自动的生成这个死 dayton bent 这个 ce 寇的 id 的名称哈,就永远不可能写错了哈。好嘞,那么说了这么多之后呢,我们下来装上来体验一把,一看你就懂了哈, 那么装插件非常简单嘛,打开 sat ins, 在这块呢,找到普拉格 ins, 然后呢,你搜一下,就是买 base x。 好,搜一下,搜一下之后呢,这个地方是不是可以点 instant 啊,点一下,点一下之后呢,就安装成功了啊,稍等一下下, 好,安装成功了之后呢,他会告诉你说让你重启 i d e 啊,我们重启一下瑞 star。 好嘞,那么重启完成之后呢,你待会发现这个界面呢,就产生了非常有意思的变化哈,稍等,我们来看一下哈,注意, 正在加载哈,稍等一下,加载完成之后呢,你注意看这个地方,加载完成之后呢,你会发现有一些小鸟就出来了,你看, 哎,小鸟出来了吧, ok 啊,你注意看哈,有两个颜色头绳的鸟哈,这个红色头绳的鸟呢,代表的是丝扣的映射文件,而这个蓝色头绳的这个小鸟呢,其实代表的是你 map 的接口哈,来看, 那么这个时候呢,你注意来看哈,在这个位置呢,比如说我点到了这个死迪特曼特这个位置,我现在呢,看到这个方法,哦,这个方法是斯莱克特新 fm t b u 字。现在呢,我想找到他对应的一个斯莱克奥的一个方法。我以前怎么办?我是不是点到这里边再来看呀? 现在不需要了,现在怎么办?这不是个鸟吗?你点过来,你看,直接到这了吧,那到这了之后呢?现在你又想 看到这个方法对应的社会语句怎么办呢?再点这个鸟嘛一点,哎,到这了吧,非常的方便吧。然后再来,比如说呀,现在呢,你又想写一个方法,这个方法呢,叫做 select by id。 好,这么一个方法你写完了,写完了之后呢,将来查询出来一个游字对象没问题,是吧?然后呢,接下来你里边传了个印特类型的 id, 好,写完了,写完了之后,这个接口的方法有了,有了之后呢,你注意看,他报错了, 他其实呢,不是报错哈,他告诉你说有检查说这个死 datmant 就是你的 cico 语句 vize id 等于四 like 八, id 没有定义 在你的 map 文件里边,而且呢,他跟你说他可以帮你定义,你按着 out 加 enter, 然后在这个地方呢,点一下一创建,你发现他是不是帮你把这个地方的斯莱克帮你定义好? 好了呀? id 是不是给你指定好了?类型是不是也给你指定好了?只不过这个地方他没有用别名吗?你把它改一下,用个别名是不是就完事了? 在这里边是不是可以写对应的一个死口语句了,比如说 select, 对吧? t b uzer, 然后呢, where id 等于一个值,当然这个值呢,我们现在还没有学怎么去写哈,我们在这个地方呢,先提前剧透一下,这样写就可以了。 你发现现在这样用这个买呗的叉叉件来开发,是不是确实比较方便呀? ok 啊, 这就是我们所说的这个插件哈,待会呢各位把它装上,而且这个界面呢很有喜感哈,其实呢,这个红色头绳呢,是不是就是买贝特斯的一个 logo 啊?蓝色头绳的呢,其实就是买贝特斯叉的这么一个 logo 哈,好嘞,那么这个事呢,我们就说完了,环境呢,我们也准备好了这四个步骤, 那么接下来呢,我们就正式的开始来完成这所有的增山改查这些功能哈,首先呢,我们先来做第一个功能,就是查询所有数据。

好,那下面呢我们来看一下,首先呢我们从根的汉堡上去下载买白历史的最新的原码,乘三点五点七, 那么下载好之后呢,我已经放在我本地瓷盘这里了,然后呢就把这个原码解压下来。好,解压的当前我们先讲好,那么这个原码我们就解压好了,解压好之后呢,这是他的原码,然后我们通过 id 把这个原码呢导进来。好,那我们打开 id, 打开点之后呢,我们这个地方呢,我们就打开啊, oppo 呢,然后找到我们原码锁的位置啊,那么这个时候我们找到我们的他,然后点, ok, ok, 之后我们要信任一下这个工程。好,那么这样我呢就打开我们这个项目工程了。好,打开这个项目工程之后呢,那么再就是卖白的源码。好,接下来呢他就开始去加载那些啊 音量的插件,以及音量的第三方一些包。好,那么这个过程呢可能需要一段时间,但是呢我这边呢,由于之前我把这些包呢都提前下载好了,所以我这边加起来就比较快了, 他一会就加上好了。好,那么他原码就在这个地方啊,这里面是他原码。好,那我们看这个原码对不对呢?我们通过麦克呢给他构建一下啊,那么这个是我们通过这个编译抗配啊,编译一下,看看这个原码有没有问题。 好,变异,好,那么变异的时候看看,等他走一下。好,那么变异的时候我们发现了他已经报错了啊,报了很多人的错误。 好,那么这个时候我们来听一下,好,把它停了,停了之后呢,那么这个错误什么原因导致呢?就是我们这个地方呢,要把一个文件删除,就是把这个 nices 点 tnt 这个文件删除一下。好,那把它删除 之后我们再去啊变异下。好,那么这时再双击扛票变异。好,那么这个时候我们看一下他有没有问题。 好,那么这个时候他就对着成功了。好,那么这样的话我们这个满白的圆码就搭建 ok 了啊,非常简单,注意就是把那个 nice 点 tst 那个文件给他删除一下,否则的话你变异会报错的。 好,那么这样完了之后呢,我们这个原码啊就可以了,然后我们可以在里面写一个太子的内,然后进行测试,然后跟踪调试,我们这个买半是原码。

一位工作五年的小伙伴去模拟面试,并问到一个 my bats 的问题,当时问的是何时使用一级缓存,何时使用二级缓存。 那么去之前呢,他还特地复习了一下 mibeis 的生活知识,想着自己用 mibic 用的比较熟练了,竟然在这个问题上翻车了。那今天呢,我给大家来分享一下 mibics 的缓存机制。另外呢,我花了一个多星期准备了一份十万字的面试题解析配套文档,想获取的小伙伴可以在我的个人主页简介中找到。 买贝利斯里面呢,设计了两级缓存来提升数据的检署效率,这样的话就避免了每次数据的访问都要去查询数据库。先来看一级缓存, 他是 c 哥 c 型级别的一个缓存,也叫本地缓存,因为每个用户呢,在执行查询的时候呢,需要使用 c 哥 c 型的执行,那么为了避免每一次都去查数据库, 满倍的时呢,就会把查询出来的数据呢保存到一个叫做 caqc 型的一个本地缓存中,那么后续的 c 口一句再执行的话,如果命中的缓存就可以直接从本地缓存中去夺取数据,那如果要实现跨 caqc 型级别的一个缓存,那么一级缓存就无法实现了。因此呢,我们满倍的时呢,就迎来了二级缓存。 那么当我们有多个用户在查询数据的时候,只要有任何一个 c 股申请拿到了数据就会放入到二级缓存里面,其他的 c 股申请呢,就可以从二级缓存去驾驶数据。 那么接下来呢,我给大家来详细分析一下买背的是缓存机制的实现原理,现在看一级缓存的实现原理,那在 c 国 c 型里面呢,有一个叫做 exq 的一个对象,那么每个 exq 的中呢,都会有一个 local case 的一个对象,当用户发起查询的时候,买背的时呢,就会根据执行语句 在 local catch 里面去查询,然后如果没有命中的话,就会再去查询数据库,并且呢写入到 local catch 里面,否则的话就直接返回。所以呢一节环境的生命周期呢,只在这个 c 型这边 来多个赛过申请或者是分布式环境下,就可能会导致数据库的写操作出现脏数据,那么这个时候呢,就要用到二级缓存 下面呢来看二级缓冲的具体时间。原理,二级缓冲中呢,使用了一个叫做开心 xq 的一个对象,他是对一个是 q 的进行了一个封装,也就是用的装饰器模式,在进入一级缓冲的数据查询流程之前呢,会先通过开启一个是 q 的进行二级缓冲的查询, 开启二级缓存之后呢,会被多个这个申请共享,所以呢它是一个全局缓存,因此呢它的查询流程是先查二级缓存,然后再查一级缓存,最后再查数据。 因为呢马贝利斯的二级缓存呢,相对于一级缓存来说,实现了一个 c 和 c 型之间的一个缓存数据共享,同时呢缓存力度呢也能够控制在 nospace 级别,并且呢还可以通过开启结果来实现类的不同组合对开启的可控性呢也更强了。 以上呢就是我对麦贝利斯缓存机制的理解,那么在实际业务场景中呢,多级缓存的设计思想呢,是非常值得我们学习和借鉴的, 我们学习底层技术的目的呢,是为了能够提高技术的思维能力和积累解决方案,这样的话我们才能过去胜任更高岗位的一个要求。我是被编程耽误的王一汤,如果我的分享对你有帮助,请你动动手指,一键三年,分享给更多的人!关注我,面试不再难!

介绍完将来企业中最为主流的一种开发方式,买盘代理的开发。那么接下来呢,我们就来正式来学习买贝德斯里边的核心的细节点了哈。 那么第一块呢,我们要介绍一下买贝特斯这个核心的配置文件,这个配置文件是不是叫做这个买贝特斯杠杠飞哥的场面刚才说过这个名呢,其实你可以随便写哈,但是人家官方都叫这个名啊,我们也叫这个名就可以了。 那这个文件里边其实除了我们刚才写的这个数据员的信息,还有对应的这个 map 映射文件的这些信息,其实还有很多的信息可以在里边写的哈,我们来介绍一下怎么看呢? 打开官网看呗。好,我们打开官网哈,在这个位置我们拉到最上边,在这个地方呢插面配置,这就是我们配置买贝特斯核心配置文件的这个位置啊,他说啊,买 买贝特斯的配置文件包含了会深深影响买贝特斯行为的设置和属性信息,配置文件的文档顶层结构如下哈, 可以写这么多信息哈,那么刚才呢,我们是不是讲了麦克斯这个印设器配置的位置啊?然后呢,我们还讲了这个环境数据原配置的这个信息,其实还有很多很多的哈, 那么这里边这些东西呢,我不会挨个的一一的现在去讲解,因为很多东西我们现在讲完了,没有后续知识的支撑,我们可能听不太懂哈,我们在这呢,我们讲一部分, 待会我们讲到具体知识点的时候用到了,我们再来这里边配置哈。好,我们现在在这里边呢,先把我们现有的这几个呢加个注释来说一下哈,那么首先第一个呢,是 environments, 就是环境的意思哈,你可以看一下它的描述哈, environments 就是买 bates, 可以配 制适应成多种环境,这种机制呢,有利于四口音设为多个数据库,啥意思呀?环境?环境嘛,就是来配置数据源的嘛,是吧,那它的意思就是说啊,将来呢,你其实可以配置多个 environment, 配置多个呢,你可以连接不同的数据库啊,比如说我再配一个,对吧?我这个地方呢,我配的是举个例子哈,我这个地方呢,连接的是这个开发的 development 的库,那么将来呢,我们可能是不是还需要去搞一个测试的库啊,就是 test, 对吧?那你配置好这个 test 的库之后呢,将来你把这个 id 一复制,然后你放了个 dford, 这个位置是不是 ctrl v 就可以了?将来是不是可以动态的来切换不同的数据源呢?现在我是两个信息一样哈,将来有可能 dyloper 就是开发的 库和测试库肯定是不在一起的,加上还有生产库都不在一起啊,所以呢,你可以配置多个数据园的,我们来加个注视哈,在这个位置呢,这个 environments 就是这个环境信息哈, 好,就是来配置数据库的,连接环境信息的好,可以配置多个, 叫做 environment, 就是这个信息, ok 吧?然后呢,通过对应的 d f, a, u, l, t, d fort 属性来切换不同的 这个 enviroment 就可以了,那么当然它是要指的像对应的 enviroman 的 id 的好,那么现在这个事呢,我们还是切回到我们对应的这个 development, 就是开发的一个环境哈,那么 下来呢,开发环境下边要配一个传 section manager, 就是事物的管理方式,我们这块呢,用的是 jdbc 的事物,我们也不要去改他了, 因为这个信息啊,其实将来啊,我们并不需要用买贝利斯来管理事务啊,因为呢,将来我们学到更高级的框架,比如说像 spring 的时候呢,这个操作呢,就被接管了,被 spring 接管了,所以这个配置我们不用去管他,然后带下来对他。 soulse 就是数据库连接池吧, 买贝利斯里边默认的数据会连接词呢,就是这个破的,就是这个破的数据会连接词里边可以配这样的信息,那么同理哈,将来呢,这种数据员的信息啊,其实也会被 spring 所接管哈,所以呢,在这呢,我们也不做任何的修改, 配置好对应的数据库的 gl u r 的用户名密码就可以了。好嘞,那么再下来呢,这个麦克斯刚才我们说过, 我们就不再说了,那么在这呢,我们再讲一个哈,额外的一个配置哈,就是我们对应的这个别名 type alice, 这个别名是啥呢?别名呢,就是说我们在这个位置啊,你注意看,我们刚才呢,在这个地方写对应的 uzer map 英式文件的时候,我们是不是要写这个蕊字道 type, 这个瑞遭太婆呢?我们是不是得把这个包名和类名都给他写上呀,其实还是比较麻烦的哈, 而买背电视里边呢,可以自定义这个别名,什么意思呢?一配完你就知道,很简单哈,我们在这个位置呢,写的这个 inference 上边哈,就叫做 table alice, 好,那么写完了之后呢,我们里边可以配置 pak 纸, pak 纸呢,就是包扫描,扫描哪个包呢?扫描对应的 id 黑码下的 pojo 这个包,那么这样配完了之后啊,就相 相当于你给这个 pujo 下边的所有实体类起了一个别名,这个别名默认的情况下呢,就是这个名字就不区分大小写了,也可以不用带包的名称了,那么也就意味着将来我们在写这个返回类型的时候,这个位置呢,我们就可以这样写,有字, 对吧?不区分哪些啊?大写小写都可以哈,那么写完了之后我们再来执行,你发现这个位置呢,是没有任何问题的,对吧?没有问题,那如果你把这个别名呢给他注视掉,你注意注视掉,那你再来看,他会报错的啊,他说不识别这个 u 字的类型啊, 你发现报错了吧,你发现他说这个地方呢, count 放的 class 优字,就是没有发现这个字节码文件,或者说这个类叫做优字哈,所以呢,你用别名的方式是不是可以简化你的配置呀?好, 那么这是这个别名,我们经常会开起来哈,非常的方便哈,当然你想去学详细的这个别名的配置啊,其实呢,有这个地方的一个类型别名的这么一个联想的页面,你可以去看一下哈, 你可以一个一个的去配,对吧,每一个都会单独去配置哈,那么单独去配置非常的麻烦,我们最方便的就是这个包扫描, ok 吧。好嘞,那么当然啊,还有一些基础的类型呢,他自动的帮你配了这个别名哈, 比如说基本的类型 stry, 对吧?那么将来你如果返回 stry 的话,你这个地方写大写的 stry, 行,写小写的也可以哈,包括基本的类型都可以去不区分大小写的去写哈, 让我们的书写更加的方便一些。好嘞,那么这个事我们就说了一下,那么我们就对这个核心配置文件做了一个 详细的介绍,那么这里边还有最后一个细节点需要重点强调一下,就是配置各个标签的时候啊,需要遵循这个前后的顺序,这个顺序呢,就是这样的一个顺序哈,也就意味着我们刚才在写别名的时候,你注意看这个别名呢,我如果把它挪到下边去写,那就会报错的哈, 这就是我们所说的 xml 的约束嘛,对吧?你看他会报错,有提示的哈,他说你这个地方呢,配置呢,没有遵循这个约束的信息,对吧?这个约束呢,他说你不匹配,对吧?所以呢,这个地方一定要严格遵守这个顺序啊, 那这个顺序呢,就是刚才我们在 ppt 里边展现的这么一个顺序,要不遵守的话就可能报错,当然啊,这个位置呢,嗯,你看一看大概知道就可以了。好嘞,那么对于核心配置文件的详解,我们就讲解完毕了。

hello, 大家好,我是鱼仔。输入一个方法名就能直接生成 circle 以及对应方法的出入餐。 在 mabetis 的叉 m 有文件里可以通过各种提示进行快速代码编写。 当遇到买 batis 标签时,用快捷键 co 就能自动生成复议,去标签一幅标签时自动给出后面的提示,并且可以像写加法一样在 xm 文件中写代码。如果你的项目中使用了 my batis 或者是 my batis plus, 那你一定要试试这款我个人觉得最好用的 mybatis 插件。 mybatis code helper pro 没用这款插件的时候,在插还没有文件里写搜口,既没有搜口提示,又没有错误检测,效率低,而且容易犯错,用了之后直接起飞。从他 的官网可以看到几乎所有提升 my battles 编码效率的功能,这款插件都具备。插件的安装很简单,在插件市场中搜索 my battles code。 hilbo pro, 选择排在第一位的插件,然后重启 idl 即可。接下来就可以开始使用了。 使用前需要先在 idea 的 database 里连接一下数据库。假设在现有的需求下,我建好了一张 person 表,接下来就是要通过这张表去创建对应的 domain mapper 以及 mapper 的叉 i。 没有文件, 只需要选中表。右键选择 mypetis generator, 然后按照想要的格式去生成代码。我这里选择默认的生成方式,点击确定后,对应的实体类和 map 就生成了,以及附带了一些默认的方法。你可以通过左侧这个红 色和蓝色的小鸟在 maple 和叉 m 文件进行跳转,这些都是基本的功能。现在我想写一个查询符合 name 和 h 条件的总人数时,只需要通过方法名就可以自动生成色狗, 写下 content by name and edge, 右键选择 generate circle 直接连同方法名和 circle 全部自动生成了。 当遇到一些复杂的色口时,就需要在叉还没有文件里进行编写了。这种场景下,这款插件的代码提示功能就很有用了。 我现在定义了一个 select 白 condition 的方法,先自动生成一个 select 查询模板,然后我可以像在专业的搜狗编辑器上那样编写搜狗, 不管是表格自动的提示,还是买拜特斯的一些标签提示,都能让你写代码写的很舒服。如果写错了表明或者是多加了一个逗号,这款插件都会 会给出报错提醒。另外,如果配置了搜口,在控制台打印在 mybatis 搜口处会将搜口直接输出。在这里也是一个很常用的功能,用了这个插件后,就不需要再用任何其他的 mybatis 插件了。 关于这个插件更多的功能,大家可以直接去他的官网看,写的还是很详细的。以上就是本期视频的全部内容了,我是鱼仔,我们下期再见。

今天我要给大家说说 mypetis 中插件的运行原理。在 mypetis 中有四大组建对象,分别是 executor、 staticism handler, parameter handler 和 reserved site handler。 他们在创建的时候都会调用 interceptor 亲的 plugino 方法, 该方法最大的作用就是便利所有的插件,然后在四大组件对象的代理对象中调用来插件。换句话说,在 martis 中也只有利用这四个组件才可以定制插件。以下是这四大组件对象以及他们可拦截的方法的介绍, 接下来让我们结合原码来看一下 mebetis 中插件的运行原理。一、 mebetis 启动阶段会解析配置文件,并将解析后的结果保存在一个肯飞哥 research 对象中,其中我们配置的插件会被解析并保存到肯飞哥 reset 对象的 intercept 沁对象中。从名字上看,此处使用了责任链的设计模式, intercept team 对象本质上就是由一个 interceptus 集合和几个操作 interceptor 的方法组成。 二、 my bets 的执行阶段会首先创建一个 circle session 对象,在该对象的创建过程中会创建一个 exactor 对象,而 exactor 对象的创建过程中就会调用 intercept 亲的 plugin all 方法 三、接下来咱们看一下 intercept 亲的 plugin all 方法,它的主要作用是便利所有的拦截器,如果拦截器上配置了 executor 类,那么就会为目标对象,也就是当前的 executor 对象创建一个 jdk 的动态代理对象并返回。如果有多个满足条件的拦截器,那么将在现有的代理对象的基础上继续生成代理对象,最终返回的是一个被层层代理的一个 zach 的对象。该方法使用了责任链加装饰器加动态代理的设计模式。代理对象的时间逻辑在普拉根的引乌克方法中, 强烈建议此处使用 debug 的方式跟踪一下源码。 四、接着让我们看一下 play again 的 invok 方法。 my pts 中所有的查询语句都会调用 executor 的 query 方法, 所有的增山改方法都会调用一个 zach 的 update 的方法,也就是说,满背电子中所有的增山改查语句都会调用该因无可方法。如果拦截这种配置的改方法,则会调用该拦截器的 intercept 的方法进行拦截处理。实行完后会 执行目标对象的方法。如果该目标对象已然是一个代理对象,则会继续调用引不可方法。以此类推,直到所有的拦截器逻辑都被执行结束,才会执行真正的增山改查操作。 mvc 中插件的代理顺序和执行顺序可以参考下图,小伙伴们关注威哥,更多精品内容持续与你分享!

我们面试的时候呢,面试官有时候会问你一些看起来比较基础,甚至说简单到让你想问候他家人的问题,那比如说会让你说说 my bettys plus 的配置有哪些?那你有没有想过面试官为什么要问这些问题呢?大概率是出于以下两个原因, 一、验证下你简历上写的技术站是否真实,就比如说你写了熟练使用 mybetis plus, 二、验证下你是否的确有去看过这些配置,而不是说紧紧的拷贝复制。那如果面试官真的问到了我们 mybetis plus 的配置问题, 我们可以说说哪些配置呢?下面就让我们来回答一下这个问题。就比如说我们常用的 configuration 下的配置,这个是驼峰命名是否开启,以及如何指定日志记录的,具体实现方式就 log 杠 in play。 那这个一般的常见的有这么几种,一个是 std out, 这个表示是将日志输出到控制台,还有一个呢就是 是 log forg, 这就是如果我们系统中的是 log forg 的日制框架,那推荐用这种,那还有种呢,就是 s l f for g, 那这个也是看你是否使用这个 s l for g 作为日制框架的。我们还可以说说,比如说 mapper locations, 就指定我们 map 文件的具体路径, 以及 type allens package, 那这个配置是用来指定我们对应 d b 的实体内的这么一个路径,那如果这些你觉得还不够,你也可以说说 global config 下的,就全职配置下的,比如说 d b 的配置。 logic debate value 就是逻辑删除的值是什么, 那以及对应的 logical not elite value 就逻辑不删除,这是什么?那一般呢?这个是配合 art table logic 这个注解加上逻辑删除字段使用的。那更多的配置呢?我们也可以直接看官网进行查阅好 本期视频呢,就到这里。呃,学习交流及源码可以查看我的主页信息,欢迎大家点赞关注,收藏留言。后续我们还会继续聊聊面试中的一些思考,让我们下期再见。

买白迪士框架上的色口语句调用加瓦代码好,什么意思呢?就是在我们的这个买白迪士的这个麦破点参标文件里面,我们有个色口语句, 在这个收购语句里面呢,就用加瓦代码,我们这里往这个商品表插入一条数据。好,那么这个收购语句呢?我们把这个商品的名称的拼音,那我们是通过一个加瓦代码,把他的原来那个名字转成拼音存到对应的这个字段上, 那么这个呢,就是我们的加法的一个工具类,然后这是这个工具类的一个方法啊,然后这是我们内蒙这个参数,那么这个参数是通过这个 good, 是这个对象啊传过来的, 所以这样的话,我们把 id 内部还有他的拼音啊,然后还有他的库存插入到我们这个勾的是表。好,都来看一下, 我这里有一张孤落子表啊,有这几个字段,然后呢?这个目前里面是空的,我们现在运行一下, 那我这个 good 时,我传了名字叫华为手机啊库存,然后做插入,那么他那个名字的拼音,我们到时用的是内蒙这个字段,把它转成拼音存进去,好,走一下。 好,那么现在我们这个程序执行结束,执行结束我们看一下数据库,这个是我们看一下。好,那么这个拼音就成绩在哪? 那么这个拼音就是通过我们加号代码把这个名字啊转成拼音存在这个字段上,那也就是在我们的麦破点参妙这个收口语句里边,通过这种方式,我们可以调用我们的加号代码。好,那我们这个是来看一下,我们加号代码,就是这个工具类点进来,在这里他掉了,我们 这个方法,我们第一个断点,我们再跑一遍,第八个去跑一遍。好,那么这个是我们走右键,然后第八个运行。 好,那么这个时候我们可以看到他要进入到我们这个迪吧格里面来了。好,那么他除了参数就是华为手机啊,这个中文的,然后我们通过这个转身拼音,转身拼音之后,然后在这个地方他存入到对应的阶段上。 好,那么这就是我们买白历史啊提供的这个功能,可以在这个收购率里面调用家务的代码。