00:00
各位同学大家好,咱们继续往下来学习,刚才呢给大家演示了MP实现添加操作,那下面呢给各位演示两个细节的点,首先第一个质点就是MP中的日志输出,第二个是里边的主键策略,那首先我们先看一下什么是日志输出,给各位说明。大家注意啊,我刚才的操作中,不管是查询也好,还是添加也好,它最终肯定都会操作数据库,而操作数据库用到的肯定都是SQ语句,只是说咱目前MP给咱封装了,比如现在啊,我想看到它底层的SQL语句到底是生成,是长什么样子,然后里边是怎么样一个结果,它里边有哪些参数,那这个怎么做,MP中提供了一个日志输出,让咱们就能看到,那怎么做,过程很简单,给大家演示一下这过程啊,我们来做一下。
01:02
它的做法就是咱们在项目的配置文件中加上这一段配置就可以了,那我现在把它咱就直接复制过来。放到咱们项目的配置文件中,我就放到下边了。各位看啊,这段配置就能看到当前MP中的日志的输出,那咱们来做一个测试,看一下效果怎么样。比如现在我还是试这么一个添加操作,把里边值稍微改一下,比如说上一拱咱加个名字啊,什么up up。啊,加个名字,然后这里边给他随便改几个值,现在把这方法咱来执行,然后看一下它的日志输出到底是长什么样子。我们等他执行,在控制台能看到他的这个日志。然后各位看啊,现在已经输出来了,然后在里边日志怎么看,它是在这个位置是他的日志。
02:00
咱们一行看啊,首先大家看第一行它是什么。创建了一个新的一个对象,叫circle session,这就是买杯的中的一个对象,这各位应该记得啊,买杯的中应该提到过,然后这个对象中往下看怎么做啊,这句话gd bc connection是不是创建了GBC连接,然后这里边用JDBC进行操作,下面你看啊,有它的circle语句,Perters是它里边的参数,然后最终有最终这个结果,包括最后关闭这个对象,所以这时候我们看到它的日志,有它底层的语句参数,包括最终的结果。这是我们看到的,通过这个日志,我们很多时候经常用于排查我们的问题,比如现在数据效果不对,或者数据没有出来,那我们可以看到它的底层语句对不对,参数对不对,结果是否正确,这就叫做日志的输出,然后日志中啊有个细节给大家强调啊,各位看这个地方。
03:00
说一下什么意思啊,各位应该记得我们学GBC的时候,应该学个东西,叫做数据库的连接,而MP呢,它本身是自带连接池的,当然连接池我们可以改,它默认是这个连接池,这个连接池呢,翻译过来有那个光的意思,是由日本人开发一个连接池,据称是全球最强的连接池,所以它默认是带连接池的,这连接池呢,一般来讲啊,咱也不需要改变。因为各位同学啊,应该都明白一个道理,什么道理呢?就是原装的东西永远是最好的,你改的话,他肯定会会有些问题,原装有最好,所以它原装就是带这个连接尺,咱一般不需要改,当然可以改,只是没有必要,所以你记住MP是自带连接尺的,是这个连接尺。啊,这是我们看到它的日志的输出,这个咱们做了一个说明,所以现在我们后面在排查问题中,通过日志能准确看到语句参数和结果,这是咱们的第一个小内容,咱就说到这里。
04:03
然后这个说了之后,下面呢,给各位再来说第二部分叫做主见策略。什么叫主见策略呢?大家看到啊,我刚才添加的时候,它的ID是自动生成的,然后生成之后它是不是长这个样子的,这用的是一种策略MP,它会自动生成你的ID,通过不同的策略能生成,比如他ID最终会变成什么样子,怎么生成的,下面给大家讲这个叫主见策略,也就是通俗说ID最终是怎么生成的,或者说生成出什么样子。那这里边给各位做一个介绍,我写到图里边啊,MP的。主见的策略。然后这个策略怎么做呢?大家注意啊,我刚才的代码中,我们仔细看到咱们好像啊,并没有做任何关于策略配置,所以这个不配置,它有一个默认策略,但是咱们可以配置,怎么配置说一下啊,这里有这么一个注解给各位拿回来。
05:08
我在图上写一下啊,首先它的配置方式就是你在这个表对应的实体类的上面进行配置,怎么配置在你实体类作为主键的属性的上面。添加上注解就可以了。这句话应该不难理解啊,大家看我现在是一类是谁U,它的主键的属性是ID,所以在ID上边我们加上这么一个注解,就这个注解,咱们看一下这个注解啊,Table ID。后面type等于叫ID,加一个叫凹凸。凹凸什么意思?是不是自动,当然里边有很多策略,咱们看一下啊,就这些给各位截个图,咱们来做一个说明,就是里边的这些策略分别都有哪些,然后我一个一个做一个介绍。
06:07
咱们来具体看一下这些策略啊。我把它呢,直接截到我这个图里边,咱们来做一个详细的说明。拿过来咱们来看啊,首先策略中呢,最后三个加了一个删除线,他们是过时的,这三个咱就不考虑了,因为目前基本上已经不用了,咱看上面我们目前在用的策略主要有这么12345这几个策略,那大家看到啊,首先我们先说第一个,这策略叫no,这应该最好理解啊,Ne什么意思,就是没有策略,就是你不用策略。这是它第一个,然后第二个叫input,这个我写一下什么叫input input是不是叫输入啊,它就表示啊,咱需要自己来输入你的那个ID值,就是手动往里边塞你的值,这是叫input,另外还有一个策略,咱再来看,这个叫做凹凸。
07:05
凹凸是什么,是不是自动啊,它就表示啊,让你的ID做一个叫自动增长。这个策略,但是自动增长用的时候呢,有这么一些前提条件需要咱们必须要做到,我在里边给各位写的详细一点,就是那个自动增长怎么去用,首先第一个啊,就是你表里边的那个主键的字段。必须设置成自动增长。在这里啊,设置成。自动增长。这是它的一个特点啊,并且你这个自动增长的主键的类型需要是一个ID类型,就是表里。主键字段的类型需要是一个int,就是或者说整形的这么一个类型,这是它一个特点。比如说你在表里边,你把它的ID变成那个叫to increment,也就是这个名字,各位应该见过啊,写下。
08:03
凹凸。Increment。变成这么一个名字啊,A to写错了啊,A tocment变成它,并且是一个int,或者说b int这种类型,这是它一个前提条件。另外你。就是实体类中的属性不能是字符串,也需要是一个跟它对应的类型啊,这个叫自动增长,就是你表和实体类都需要做改变,然后再再看上面还有两个这么一个策略,首先有这个策略,另外还有这个策略,我们先说一下啊,首先咱看第一个策略,第一个策略叫呃散的ID,它是MP默认的这个策略。也就是说你不配置就是它,然后这个策略什么特点,咱们看到啊,就是这个特点。大家可以大概数一下这里有多少位,一二三四五六七八九十一十二。
09:00
是不是有19位,所以它一共是这么一个特点,生成一个19位的这么一个数字的这么一个值,这是它的一个特点,而你看这个啊,UYD,这好理解,生成是一个就是带这个数字和字母的这么一个值。所以咱一般经常用的其实是第一种方式,就是它的这个默认的策略,一般来讲各位可以这么理解,默认的一般都是最好的策略。这个各位知道啊,所以咱们这个做一个说明,然后这个策略中呢,它生成是为的数字,还有一个最大的好处,给各位说明一下啊,它有什么好处。我在这里边给各位演示一下这个好处。怎么演示呢?首先呢,我把表中数据先都给它删掉,咱重新加下数据,我的各位看的更明显,我先删一下啊,Delete from user直接把表数据都删掉。目前表里边什么都没有,然后现在我往里边给他加入数据,这一行为了测试我先注掉啊,咱们做个添加试一下啊,首先我加入第一条数据先加进去。
10:08
等他执行。咱们稍等一下啊。看一下。现在已经可以了,然后各位看表里边是不是多了一条数据,并且有这个ID值,比如现在我再加一条数据,这个数据我就叫上黑谷啊,就这个名字。然后把它执行。咱们看第二条数据,因为咱就比较它的ID有什么特点,因为咱刚才提到啊,ID生成是19位的数字的值,这个生成一个好处,它先生成着,我先提句啊,大家看啊。如果说你用UUID的方式,它每次其实都是唯一的,因为主键ID肯定是唯一的,但是它有数字字母,它的最大的缺点是什么呢?有同学可能会说啊,这个东西比较长,其实长不能算缺点,它的最大缺点是什么?它不能做排序,你有数字,还有字母又是随机生成的,它就不好做排序,而你都是数字,它就利于咱们做排序,这是一个很大一个优势,那我们看一下啊。
11:15
第二条数据加进去了,比如咱再加第三条就能比较出来,比如写一个上硅谷这个北京。然后咱们再做个添加,咱们看它最终的特点是怎么样的,等他添加成功,咱们来做个说明。啊,现在都可以了,然后大家注意观察这三个数据,刚才我加的顺序就是上硅谷up up,上硅谷,上一股北京,然后各位看三个值都是生成的,就是唯一的也是每个值都不一样的数字的19位的值,然后你看特点啊,第一个值,第二个值,第三个值,咱们明显发现。
12:00
第二个值比第一个值大,第三个值比第二个,第一个是不是都大,所以它里边它大不是大一,不是大二,它是不一定大多少值,但是有一个原则,就是后面值跟前面值肯定不一样,后面值比前面值肯定要大,所以最终我们可以根据它进行排序,包括比如咱升序这样的一代降序,那就是另外一种情况。这样的话啊,我们就看到它的一个特点,所以以上就是LP中这个主见策略里边主要是有这么几个策略,所以大家把它知道一下啊,咱们实际中一般来讲用的比较多的有它这个默认的生成19位的值,或者用它的自动增长,这些都会经常用的。或者各位看它的源码中,你看到啊,源码就是一个什么枚举类,然后里边有这么几种策略,包括auto n input ID u ID啊,这是以上咱们说到的P中的的策略。
13:02
也就是说MP里边。把ID生成方式给咱们封装了,咱用它能直接生成唯一的。这么一个ID址,这是我们提到的两个细节啊,这个咱们就说到这里。
我来说两句