00:00
好,如果我们想在我们的这个呃项目当中采用第二种方式的话呢,也就是延迟加载的这种方式呢,那我们呢,就需要定义has to这个属性啊,这个是我们要做的第一件事情啊,那那既然要做这件事情的话,我们就需要知道就has children加在哪,是需要加在我们的数据当中的,那所以呢,我们找到我们后台的date这个实体数据,因为我们想要展示我们的这个数据字典嘛,啊,所以呢,我们要找到数据字典所对应的实体数据。找到他啊。然后接下来呢,在这个数据字典所对应的实体数据上面呢,咱们给它加一个has children准这样的一个属性,当然了,它应该是一个不好。嗯,加上这个布值之后呢,我们需要给它再加上一个table field,然后呢,给它写上exist false什么意思?就是正常情况下,在Di这个实体类当中,你所有配置的这些属性,它在数据库当中都应该有一个字段来跟它一一对应,所以呢,包括上面的这个ID呀,拍ID呀,实际上数据库当中都是有字段的,那如果我们这个has children也定义在这了的话,那数据库当中呢,也应该有一个字段,如果数据库中没有字段,那我们在做增删改查的时候呢,就会出现问题,它会找不到这个字段,那现在呢,我们这个字段呢,是我们扩充进来的表达逻辑概念的,和我们的物理表没有任何关系,所以呢,这个地方我们加一个等于false。
02:15
好,那这块呢,就是我们所说的has children,然后接下来呢,我们就需要在我们的呃业务当中呢,去返回这样的一个带has children节点的这么一个数据列表哈,所以那这样的话,我们的接口就应该如何定义呢?其实就是还是定义这个date列表的返回,我们打开我们的这controller,在这controller里面定一个接口。我先写这这么写啊,叫类似白拍ID,就是我呢,因为要做一个延迟加载,对不对,什么叫延迟加载,延迟加载呢,就是假设说我第一步加载的时候,我先加载所有的一级类别,那一级类别的parent ID呢是一对吧,所有的一级你看行业是一级类别,学历是一级类别,收入收入来源这些都是一级类别,所有的这些一级类别的parent ID都是一,所以呢,我要加载一级类别的话呢,我就得根据一来加载啊,当然了,我们要延迟加载,所以子类别呢,在这个步骤当中不会加载,然后接下来当我想加载二级类别的时候,那我就要根据这个一级类别的ID加载,比如说我想加载行业下面的所有的二级类别,那我呢就要啊parent ID检查一下是2万的,那我就要加载这个对吧?啊,然后我要加载呃学历下面的二级类别,那我就parent ID是3万的,那我就加载这条记录。所以无论你是加载一。
03:46
一级类别还是加载一级类别,下面的二级类别,那么都是呢,根据负类别ID来加载当前类别,这个可以理解是不是好,那所以这边我们就写一个方法是根据负类别ID来加载当前类别啊好,然后呢,这边呢,我们就在这面吧写一下艾特API。
04:11
Parater啊。写一个Y6啊,等于上级节点ID好一块等于数,然后接下来呢。我们在写那个啊,我们想用pass给他传,所以这块呢,我们写pass。嗯浪,然后这款呢是parent ID,然后那如果是这样的话呢,前面这个我们就要应该get买。杠啊,By ID。好,然后这边呢,我们再写一个。
05:02
拍red,然后这边呢,我们再写一个API operation,然后呢是根据上级ID获取子节点数据列表,对不对?好,然后接下来呢,我们在这个地方呢,就写。啊,从service写啊,把这个service调一下这service,然后咱们呢,打算在service里面写这么一个方法,当然这个方法呢,还没有定义,先写出来list by parent ID好,这面能不能写parent ID好,然后呢,我们返回的是list好,然后这边呢我们写好,然后接下来呢,后面再写啊。二点ok.data list list好这块呢,就是我们整个的一个接口层的一个实现,那当然这个接口层写完了之后呢,我们还要把这个。
06:14
业务实现出来。好,那这个就写好了,呃,写好了之后呢,我们把这个业务层的方法给它填充一下,填充的话呢,我们就根据负ID来查询当前的列表,所以呢,我们要写。Carryry rapper,还记得这个rapper吧?啊,然后我们查的是Di,然后呢,嗯,弄出来一个Di query rapper。好,然后接下来呢,我们可以通过这个的carry.eq parent ID。嗯,然后呢,把这个他上,他一定能给它传起来对吧。
07:04
Controller的。让派ID是不是啊,把这个啊派ID给它传进来啊,传来之后呢,其实这个就是根据负ID来组织我们的这个查询条件了。啊,这样的话呢,我们这个查询条件组装好之后呢,我们就可以去执行查询了,Base map。我想一下啊,类by parent ID。Base map.select list对吧?啊,根据这个rapper。啊,然后呢,咱们来进行一个。查询,所以呢,得到的就是date list啊这样的一个数据列表,然后呢,Date list这个数据列表里面呢,我们得填充什么,我们得填充这个字段,Has children这个字段,所以呢,在这个地方呢,我们在填充还是。
08:09
说准字段,然后接下来呢。Take list,点点for each有填充就行了,然后。嗯,然后这个里面我们写什么呢?就是写判断。判断当前节点是否有子节点,是否有子节点,Has children的话呢,就是有子节点,Has children等于false的话呢,就是没有子节点啊,所以呢,实际上我们嗯要给这个。点set has children去给它赋值,那给他负的这个值呢,我们得去计算一下,怎么去计算呢?就是得看当前的这个data,就是根据当前的这个data的ID再找到有没有其他的数据,呃,Parent ID是当前的data的ID,对吧?如果有的话,那就是有子节点,如果没有的话呢,就没有子节点,所以呢,找到。
09:23
找到。当前的Di。下级有没有字节,那这个怎么找呢?我们可以写一个辅助方法啊,在这个地方叫做private辅助方法,咱们就写private,返回boy has children,就是判断一下呢,根据一个ID来判断一下这个ID下面有没有子节点,那怎么写呢?还是这个查询条件。
10:01
同样的查询条件啊,根据parent ID来查,只不过这个地方我们定义的是IDID。拿进来,然后这块呢,是判断当前ID。所在的节点下是否有子节点?好,然后接下来呢,我们在这个地方呢,就嗯判断一下吧,就是base map。然后点select count query re,好查一下这个通过这个查询条件能不能查出数据来,并且查出的这个数据呢,我们直接呢,用呃,这个select count的形式去查,也就是说直接查它的数据数量哈,那么count如果数量大于零,就是有子节点,如果数量不大于零,就没有子节点,所以呢,就是count。
11:04
第二,Int value如果大于零,那么就return true,否则的话就有can false,这是我们的判断,然后这个判断也就是说这个辅助方法咱们写好了之后呢,咱们可以在上面这个位置date that has children这个地方,咱们前面调用一下,所以这面呢,就是this.has children,然后把IC的ID呢给它传进去,传进去之后呢,这边就有了一个has children,我们把这个has children呢复制到这个位置当中来啊,这样的话呢,我们的这个date呢,咱们就又进行了一个重新的封装,那么去处理了一下这个has children这个字段,所以最后呢,我们再把date给它返回就可以了。好,那这面呢,我们就写好了这样的一个业务层的方法,以及controller层的方法,我们再来简单的回顾一下哈,首先我们在take里面呢,添加了一个has children是吧?然后接下来呢,我们在呃接口当中呢,定义了一个接口方法,根据parent ID获取parent ID下面的子节点列表,那当来了,它可以根据顶层类别获取一级类别,可以根据一级类别ID获取二级类别列表啊好,然后接下来呢,再在service里面,我们定义了一个辅助方法啊,判断节点下面是否有子节点,最后呢,我们又定义了一个业务层的一个业务方法啊,把这个所有的当前节点下面的这个呃数据取出来,那么有可能是根据顶层取一级,也可能根据一级取二级啊,然后接下来呢,把这个每一个节点啊的has children属性呢,给它做一个填充,判断它是否有节点,好,那这样的话呢,我们就重新启动一下我们的服务。
13:12
好。啊,这边启动完成之后呢,我们来。在我们的W里面先测一下。好,然后接下来呢,在这面我们找到这个数据资源管理啊,数据资源管理这块呢,咱们找到,嗯,Get get这块呢,咱们先点一下try it out,然后这面呢,是上级节点ID,上级节点ID这面呢,我们先来看一下上级节点ID是一的吧,好,我们先把所有的上级点ID是一的取出来,看一看是不是所有的一级类别,所以这面呢,我们就写一,然后execute,然后下面这块呢,啊来请求异常哈,我们来看一下是为什么啊,然后呢,我们来找到咱们的。
14:03
嗯,SRBSRB这边呢,有一个叫做missing URL template variable parent ID,也就是说我URL定义的那个地方有点问题,在这个位置。Controller这个位置啊,嗯,这块写的是。API operation get my list by parent ID,然后这块呢,是parent ID,很显然这两个写的不一样,是不是啊,这样的话不就匹配不上嘛,匹配不上呢,它不就没吗?他要的是这个结果呢,啊,你你你这边定义的是它对不对啊,所以这样把它复制一下,改一下就行了,好然后我们重新启动一下。好,这边已经启动成功了,然后接下来呢,咱们再来点一下直接就可以了。
15:05
刷新一下。感觉什么还错呢是吧,数据字典盖啊。List by parent parent应该没错的,然后这块呢,写一,然后写ascu,好,这样的话我们就把它取出来啊,这个是一级类别,有行业,有学历,有收入,有收入来源,有关系还款方式等等哈,好,然后呢,我们再取一个二级类别,比如说呢,我们取行业下面的这个二级类别,那我们的ID呢,就应该传2万了。所以这个地方呢,我们写2万,然后点as acute,好,这边呢,大家看现在呢,就是行业下面的这个二级类别,有这个it,有医生,有教师,有导游,律师等等,是不是啊,所以这块呢,就是我们的。整个的这样的一个,嗯,定义了那。
16:03
呃,接口定义好了之后,下一个步骤呢,我们就应该去做一个前端的开发。
我来说两句