mybites 的 palmer 注解什么时候需要用?在我的印象中从来没有用过,我理解在绝大部分情况下都不需要使用。看完这个视频, 我才恍然大悟,原来要这么用。最常见的是翻翻你有多个参数的时候,为啥必须要加参数?多了 mybites 根本分不清谁是谁, 他会默认给参数排个号,比如第一个叫 pyro 一, 第二个叫 pyro 二。当你写搜索的时候,肯定想写 user name, address 这些有业务含义的名字,这时候要是没有加 add pyro, my buddies 就 不认识这些名字,直接报错,说找不到参数,所以必须用 add pyro 给每个参数起名字。按照它的说法, 有多个参数。在 sql 里面使用参数谜引用执行后没有报错, 执行成功。再来说个要特别注意的参瞄,你的哨口加了多了符号,参数就必须加 and parallel。 有 的场景咱们不得不使用多了符号。比如动态常用列名表明的时候,因为另一个常用的警符号会自动加单引号,你传过 id 过去,它会变成单引号, id 写在哨口里直接出错。警号会自动加单引号吗? 这个我是头一次听说啊,警号不是应该替换成问号吗?脑袋炸了 哦,多了符号,直接把参数拼接烧烤里必须明确告诉 mybit 要拼接的参数叫啥,所以得加 and parallel, 给参数起编名。如果你想按某个字段排序给参数加 and parallel, o 的 by, 烧烤里就写多了 o 的 by 才不混乱。按照它的说法,我在 o 的 by 里面使用了多了符,参数上面没有加注减, 执行成功,最后也是最容易被忽略的,就算只有一个参数,只要冻在烧黑里用它做了判断,也必须加 add power 助减。好多人在这踩过坑,觉得就一个参数直接用就行了,结果一运行就报错。为啥?比如 给你写了个判断,如果 id 不是 空,就加上微妙条件,这里的 id 是 在找参数的名字,要是没给参数加 adouble id, my balance 根本就不知道这个 id 指的是哪个参数。当你学的时候就因为这事查了半天的错。现在每次写东南烧烤的时候,第一件事就检查有没有加 adouble 注解,这里是一个一符一句 id, 没有使用注解执行成功。总结一下就是,不管参数多少,只要在稍后,你需要明确写出参数的名字,不管是多参数加 alt pair 区分,单参数加 alt pair, 取别 名用多了符加 alt pair 定位还是动态判断词加 alt pair 标识都必须加 alt pair。 这四种情况记牢了,下次面试官再问 你,不光能答全,还能特意提嘴。最后那个容易忽略的场景绝对显得你经验足。我也总结一下,这其中场景千万不要记错了,否则面试就危险了。
粉丝5249获赞3.1万

大家看到的这个项目是从 get 克隆并打入 idea 中,我们不敲代码,借助于一个超好用的代码生成器工具,帮我们自动生成 my batist blast。 单表查询,一对一查询,一对多查询,多得多查询。下面来演示操作过程, 克隆项目,然后我们跳转到步骤三,配置数据库,并导入色可脚本,这里面有两个色可脚本,都需要导入 全局配置文件中。配置数据库连接信息,数据库名,用户名和密码。配置完成后,重启项目,我们访问可实话操作界面,项目启动完成。这里提供五张测试表, 其中员工表和部门表模拟测试,一对一查询和一对多查询。一个部门可以有多名员工,一名 员工只能属于一个部门。乘客表、护照表以及关系表模拟多对多查询,一名乘客可以办理多个国家的护照,每个国家可以允许多个人来办理护照。我们勾选点击生成代码, 回到项目,所选表的代码已经生成完毕,这是一对一查询。接下来我们访问接口层,查看代码是否生效。重启一下项目, 项目重启完毕,我们来到皆可列表,查看刚刚生成的太麻以及生效。接下来我们对比单表查询和一对一查询。单表查询员工表中只有部门 id 信息,没有部门的其他信息。 一对一查询后,我们从部门表中取出了部门名称等其他的信息。接下来我们看多对多查询。张三拥有多个国家的护照,一个国家可以给多个乘客颁发护照。这里是一对一查询的代码,这里是多对多查询的代码部分 在全局配置文件中开启或关闭多表链接查询,这里表示开启状态。有关配置文件的细节请阅读说明。文档部分 今天的分享到这里,欢迎关注、点赞、评论,我们下期再见。我是知识徒步,努力做一个有温度的早晚知识分享博主。


比较简单。好,我们来看一下啊,这是如何去获取拜拜蒂斯东一个至尊的一个主键,这种场景呢?肯定都是我们在哎多表操作的时候,对吧?这个,嗯, 需要获取至真的主键,这种呢一般就是在什么?在多表操作, 呃,只在在同一个信中操作多表,对吧?那么我们需要关联的 吗?关联的一定信息反,这个是我们的场景,那这个时候我们怎么去做呢?其实,呃,单纯,如果说你是利用什么?利用这个麦拉丁塞去做,对吧?那么让我们 一表简单或者的忙了,或者你也可以利用我们讲的一些对应的不同的数据库,它本身也特性也可以,对吧?比方说如果说我们是至尊的一个主键,到或者说我们通过这个 oracle 数据库里面这个 shell 式训练, 对吧?那么呢都可以去解决到一个问题,哈。那么真的是在 mybit 里怎么去做?我们来看一下在 mybit 里我们要去获取这个支撑的主键,来看一下怎么去做啊?我们这儿给一个查询语句,我们来看一下展现在这里我们给个查询语句,然后呢在它里面呢?我们要用手,其实 用一个什么呢?用一个,呃,就是 slinger, 我 们要用一个 insert, 找一个 insert, 嗯,一个 insert, 嗯,好, boom 在 里面就给给一个 insert, 然后在它里面呢?你就你做一个插入手,它里面有个处域,就有幼稚 jerry 起的 key, 就是 使用它帮我们去生成的这样一个主键,对吧?这个我们给一个处,这是第一个, 第二个的话,那么了你所生成的,对吧?你所生成的那一个我们给个 key property, 那 么我们比帮我们给个 id, 对 吧?给个 id, 那 么这样了,其实就表示嘛,就表示当我们 执行这个语句的时候啊,当我们去执行这样一个事故标签中的这个操路操作语句的时候,那么了它会去通过我们的主键侧点去生成我们的一个主键,对吧?甚至我们一个主键那儿把主键信息呢会存储到我们这个 id 属性里面去, 主义压迫成熟到我们在 id 属性里面去啊,那这一栏的话,呃,因为你操作之后我们本身是一个偶尔,嗯,对象是一个密尔,对,是一个什么?呃,密尔对象里的操作,那么证明呢,你传过了一个一热对象,对吧?那么一热对象同论,我会把生词这个主键绑绑定在里首 传递过啊,这个对象中的这个 id 属性,那么你操纵文件之后就可以干嘛?就可以拉到,就可以拉到该对象中的这个属性,就可以干嘛?就可以就像物理的一个操作了啊。所以这一块的话,那么也就是我们讲怎么去获取我们这个知识点,那么第一个呢,就是 在我们的标签里面啊,我们用这个 minsat 标签,那么我们给个 id, 或者我们给一个啊 top, 然后呢我们通过到了什么?柚子, 柚子,呃, derity 的 t n 呀? a t e e k s 的, 我们首先用这个使用探索星辰的,然后呢给个 t 普普 t 那 property 你 啊, t one property, 而对应的离绑定在哪个上面,那么就 ok 了, 这是我们的一档蒙见,对吧?蒙见,那么也就是你再去操作上的可能就是,呃,我们对你一个加奥代码 n 一下加奥代码,那么最快的就是,呃,我们肯定要用这个, 嗯,我们发这个 user, 再把 user 等于六一个六一下啊,然后点用这个 user map, 点 insert 方法,然后把这 user 全过来的啊,全过来,然后这儿呢?呃,随时唱嘛,点奥恰,点 print, 嗯奥, 自尊的总结, edit 加号就是 you 的 get edit, 是 吧?你再一个操作啊, 其实我们你在写的这个标箱里面,对吧?那么我又把你 c 层的这个主键呢,那么绑定在你传播这个对象中的这个属实领域去,那么你这边之前的一个音设置操作哈,那么我们后面是以文字缩写拉法,拉到你给我们的这个至增的再一个主音信息,那么就可以呼及到。

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 插件了。 关于这个插件更多的功能,大家可以直接去他的官网看,写的还是很详细的。以上就是本期视频的全部内容了,我是鱼仔,我们下期再见。

嗯, my betty 始终的这个 map 接口,那么实现的本质就是嘛?是指的代理模式吧?代理模式,那么我们在去用的时候呢?那么大组队一规定着我们来看一下。呃, red 我 带一个 map, 带一个 u 转 map, 然后对应的呢?我们在这里也申明一个 map 接口,就这样 y 一个 map 接口,那么它们的对应特点啊,就是首先第一个名称,对吧? u 转 map, u 转 map, 名称是一致,对吧?名称一致。第二个就是叫 它的圣名里面一个 number stage 名称空间,那么这个名称空间的传递路径的名称要必须是我们这个接口的传递路径的名称, 看一下 come 的 波哥 map 的 uran map, come 的 波哥 uran map 的 uran map, 也就是名称空间必须要跟我们这个接口的传递路径的名称要保持一致,那么还一个的就是我们对应的这个接口中所声明的方法, 那么在我们这个易设文件中必须要有同名的,对吧?必须要有同名的加一个 id, 对 吧?必须要有这个 id 在 这里面啊,这些这块大家去注一下啊,必须要有那么满足这三个规则,那么了就 o。

a map 接口方法名称,呃,第一个就是我们讲这个 map map, 哎,哎,音色 文件的 number space 呃的值必须是 map 接口后对应的全类路径的名称。这第一个,第二个呢,就是我们讲这个 map 接口, map 接口,嗯中的方法名,方法名必须在这个 map 点儿,它们文件中,在我们对应的 map 的 印色文,印色我们念作啊,印色文件中,呃,有或 文件中有对应的舌口啊 id 的 这个呢,必须也得有啊,哎,必须也有哈。然后还有就是我们讲对的方法啊, map 中 map 接口中的方法的入餐类型 map 接口 中的入餐类型,那么,呃,必须和这个 map 映色文件总你的每个 cycle 的 parent 啊 parent tab, 呃,类型相同,这个理营业也是一样的,就是我们讲蹦迪方法奥 map 七口中的出餐 出餐类寻和必须和 map 映色文件中的每个 settle 的 法这个 res of time 类寻相同啊。第五个啊,第五个就是我们记性得有约定,就是啊, map 接口名称接口名称和啊 map 印社文件同名, 这个了也得干嘛也得去保证啊,他们俩是同名的,哎,那么来就看看你满足这几个鬼子心项链二三射都是保证一个就是我们这个接口中的方法得我们这个 id 斯,呃, cico 标签中的 id 要保证一。

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。


一天一道面试题, my betes plus 有哪些功能?一、通用 map 提供了一组通用的 map 接口和实线,可以快速进行增删改查操作,无需手写涩口语句。二、分页插件 提供了一种简单易用的分页功能,可以根据传入的分页参数自动计算出分页信息,无需手动编写分页色口语句。三、自动生成代码可以根据数据库表自动生成实体类 mapper 接口、 mapper x m l 映射文件等代码, 大大减少了开发人员的工作量。四、 love 的表达式支持可以使用 love 的表达式来构造查询条件和更新操作,使得代码更加简洁易读。五、色口注入器提供了自定义的色口注入器功能, 可以自由扩展麦 bates 的色口语句,实现更加灵活的色口操作。六、性能分析插件提供了性能分析插件,可以帮助开发人员分析色口执行效率,优化数据库操作。