00:00
就是刚才呢,咱们这个项目结构已经创建完成了,那下面咱来具体做一下这个讲师模块,这个增删改查操作,那怎么做,咱看一下啊,首先我们注意先关掉,咱来到我这个模块中叫service edu,这里边我们做课程和讲师相关内容,那咱怎么做,那么他打开。这个结构各位应该都熟悉啊,Java里边肯定写我们的一个Java代码,Resource里边是不是写那个相关的配置文件这个东西,那比如说咱们首先我先把这个配置文件部分先写出来,为了咱一会儿啊更加方便,那我来建个配置文件来创建啊,配置文件呢,我们叫这个application。你用那个properties或者那个样的格式都可以啊t properties,我就用个properties这么一个文件,然后这个文件写完之后,在里边写一些境外配置,配置也是比较固定的,我就把这段给大家复制过来,然后我来解释一下啊。
01:04
我先拿过来,然后咱看一下啊,里边有什么内容。大家来看啊,首先第一个内容叫server点。大家看啊后是不是有端口意思,这叫什么意思,表示咱们这个项目启动的一个端口号,因为咱刚才说到了,我们现在要创建的项目都是一个web这么一个工程,它要通过浏览器访问,所以你要访问肯定有一个默认的端口号,这里边我们用8001啊,如果你不写它默认,它就用to开那个8080端口,这是第一个端口号,然后第二个是你项目中那个服务名字,就这是为了咱们后面用那个词文可的做到。暂时用不到,咱先放到这里,后面讲四门再具体说,然后咱看这个东西。这个不知道各位是否记得啊,我在上节课应该讲到过。那这是什么呢?我们可以说在回顾一点啊,就是咱们这个项目有这么几种环境的一个设置,第一个叫DV,表示叫开发环,就是develop开发环境,第二个test测试环境,第三个prod叫生产环境,比如现在我们用这个DV就是一个开发环境啊,就是设置我当前的环境。
02:19
然后这部分是数据库部分,在数据库中有一个细节各位注意啊,我上节课提到了第一个就是咱现在用的是的2.2以上这个版本,所以在里边你数据库的驱动就要用这个CD,数据库的地址中就要加上这么一个叫时驱,因为大家知道咱们中国属于是不是叫东八区,所以这加上那个十区,包括有你的用户名密码。然后最后这个东西应该是我们买bet那个日志,能看到你的最后语的那部分啊,所以咱们建立一个配置文件,这是一个practice,包括我在课件中给大家还写了一个样的格式啊,就跟它一样啊,就是你看实际我们现在先都用这个practice,然后面有些内容中再用这个样啊,这个啊是我们的配置文件的创建,这个做到了啊。
03:11
然后这个做到之后,咱们往下来做啊。我在这里边写下啊,咱就来开发。讲师管理模块,那开发中首先第一个啊,咱们就是先创建一个那个叫application.pro的配置文件。啊,创建这么一个配置文件,然后里边配置它的相关内容,然后这个配置之后,第二部分咱肯定要写我们那个代码部分了,也就说在里边我们要写那个controller service和map这些东西,这些咱肯定要写啊,就是第二部分咱要编写那个controller。Service,包括它的map这些内容啊,要编写这个代码内容,那这怎么编写呢?首先啊,最原始方式咱肯定是在里边建个包,然后一个一个进行创建,包括写他注解,再写它的注入,咱肯定是这么来做,但是目前呢,咱们在做这功能中,咱可以依靠一个工具做到什么工具呢?就是由这个my business plus提供的一个叫做。
04:18
代码生成器,咱现在用代码生成器就可以生成出你这个相关的代码啊,就是把这个ctrl service map用代码生成器,我们现在都可以生出来,所以咱现在用这个来做啊,用代码生成器把这做到。所以咱们用工具来实现啊,而这种工具在实际工作中一般也都是这么来做。因为各位要明确啊,一个公司做项目最注重的肯定是一个效率,它最重的往往不是技术,就是怎么快,那我们怎么做,怎么方便,那怎么来,所以代码生成器在实际开发中应该是最常见的,那我们下面咱就用这个MP的代码生成器,把这个代码咱们给它快速升出来啊,那我们来写一下啊。
05:06
怎么做给大家强调啊,第一个有一个依赖,咱看一下啊,就是里边的。这个依赖,这个依赖呢,就是MP代码生成T就要零个依赖,这里边我们已经引入了,然后引用之后我们用一下代码生器,那怎么用它就是一段代码,咱把这代码直接执行就可以了,那这代码我现在啊,在我这个就是资料里边给大家提供出来了,这代码生气不需要各位去敲,别因为它是一个MP,提供一个固定写法,咱把它直接拿回来改就可以了,那咱下面把它就复制过来。啊,咱就来用一下啊,在我资料里边有一个代码,生气就这个啊。给各位啊截个图,这是一段代码,咱把它直接执行就可以了。就这个啊。那我们怎么做,我强调啊,首先第一个各位明确啊,这个代码生成器本身是不是就是一个工具,这代码生成器咱最终是不需要部署给别人去用了,咱只是在开发中使用这代码,所以说这个东西呢,咱就没必要放到这里边去了,我们可以怎么放,放到这个位置。
06:19
太子。T是不是测试咱放到测试中,因为测试中最终你部署它里边没有这个,不会进行打包啊,所以咱把这代码生器放到T中就可以了,但理说我就放到Java中也可以,只是没这个必要,因为它不需要最终部署,那我现在在这里边我就给他建个包,然后咱们用一下代码生器啊,比如说我随便写个啊叫com点这个。硅谷点这个就叫DEMO了啊,然后在里边把我们那个代码生气这个类给它就直接复制过来。啊,咱给他就拿过来。到我们这位置啊,名字就要这个名字,然后复制之后,里边肯定有一些相关这些就要导包的,但是咱们啊依赖都有,所以它就直接有这个内容,那代码生成器咱看一下啊,这里边它主要什么内容,我强调啊,这个不需要各位去写一遍,但是要求各位会改就可以了啊,不要你写,要要你会改,那咱们从上往下一个一个来看一下啊,看它什么意思。
07:23
首先啊,我们来看一下第一部分。他是先new了一个代码生气的对象,然后下面都是各种的设置,最终把这个代码生器做个执行啊,主要这么一个过程,那咱们从上往下我们来看一下啊。首先看第一部分。第一部分叫全局设置,那什么意思呢?给大家强调,咱这么看啊。咱看这条代码。这是什么意思呢?大家看这位置叫s RC Java,你看啊。是不是就是它呀,Src门Java,它就表示这个单词啊,叫output d是不是叫输出目录,它就表示你的代码最终会输出到什么地方中去。
08:11
这是一个输出目录,而这目录啊,其实我们一般来讲不需要变,但是这个代码中啊,就是这行代码,它是得到你当前这个就是文件夹的路径,就是有的时候呢,这路径得到可能会有问题,所以我建议各位啊,把这路径写成一个叫绝对路径,因为你这么写的话,有的时候会有问题啊,什么叫绝对路径,就是找到我的项目那个路径。啊,那比如说我找一下啊,我这个项目应该在一排。我靠。然后里边咱叫这个鼓励parent这个。然后这里边有个service叫Switch edu,大家看这个是不是叫绝对路径,咱们把这个路径直接复制过来啊,给它复制到这个位置来,给它写上一个路径,然后它就会这样代码生成你的这位中来,因为咱代码最终肯定要放到这个照中,所以你加上一个绝对路径,这么加绝对没有错啊,但是路径你要加上你那路径别加我这个啊,比如你在别的盘,什么D盘,什么E盘,什么F盘。
09:14
把你的路径加过来啊,这是第一个各位需要注意地方,因为你写他的原始代码可能会有问题,它路径可能不对。啊,第一个啊,然后第二部分,这一部分就简单了,首先啊,这是什么呢?就是你那个代码生之后有个作者上面加个注释,你作者叫什么,然后这里边还有一个叫做。资源管理器,这是什么意思呢?也就是说啊。这个纸其实一般写出写fo无所谓,它是什么意思呢?比如说我现在生成代码之后,他把我代码生成之后的文件夹都给我自动打开,你写photo就不打开啊,这个没有太大用途啊,然后下面还有一个叫这个overri。这什么意思呢?我解释一下啊,这个值一般也是写boss,它的作用就是比如说我现在啊,第一次把代码生成了,然后我生成之后代码中呢,可能改了很多内容,或者写了很多代码,当我代码代码器进行一次之后,如果你这个值写成了处,那他会把你写完代码给你覆盖掉,但是咱们写的代码应该是不能覆盖的,所以这个值一般写false啊,这个不需要改。
10:24
然后下面还有一个,这个东西我觉得是最没用的啊,这是什么呢?是一种命名规范,比如说我们写service,咱可以写一个叫user service,但是如果说你不加这句话,你service前面会多个字母叫做I。啊,就这个就意思啊,就是你加了之后,这个I就没有它生入就是user service就给你多了一个命名,一个特点啊,去掉这个I的这个字母。然后下面这个不知各位是否记得啊。是咱们在上一课提到的。这是什么呢?是咱说那个主键策略ID worker,应该还有一个叫ID worker,这个叫S条。
11:08
啊,不知各位是否有印象啊,我再重复最后一遍啊,以后这个我就不再提了,这是咱们上节课提到的。它是什么意思呢?如果说你那个实体类中的类型是浪类型,咱用的是不是叫ID worker,如果说你是字符串类型,用的是不是ID worker,加S撇R啊,主要这么一个策略,那咱们看我们这个类型,先看数据库中应该是个叉,这个应该是string啊,所以咱就加个SR,如果你是long,那加个ID worker。然后下面啊,这个东西,这是什么意思呢?它会定义生事一类中的日期类型,然后它的含义就是比如说我们现在。这里边的创建修改时间是不是叫data time,而我们在Java类中的类型是不是叫date类型啊,加上这个之后会生成这类型啊。另外还一个叫。
12:00
开启swag,这是咱一块提的啊,这主要为了做一个测试啊,这咱一块儿讲swag再具体说,所以里边主要这些,而咱们在这部分需要改的话,第一个就是改成你的路径,第二个看你的策略是什么,就是你是long还是string,如果是LA用ID worker,如果是string加S啊,主要这些,其他的不需要改,这是第一部分啊,大家知道,然后第二部分就是你的这个数据库的配置。我这里强调啊,咱们MP的数据库跟我项目用的不是一个配置,你MP需要单独去做,这就是大生器需要单独配置数据库,它不能去用到你这个信息啊,你需要单独配置,那咱给他配置一下,我给他改一下啊。因为它里边这个需要加个时区,把这个复制过来啊,咱加上这个时区,然后这个我们加一个叫CG。啊,小写啊CD。加上这么一个驱动买色点啊CD啊这个值,这是我们把我加上用户密码,这是你的数据库类型啊,咱是买circle,这是第三部分,就各位改的时候改成你的数据库,包括你的用户密码。
13:13
第三个啊,然后这个说完之后,咱看第四个,第四个什么呢?就是你要生成肯定代码中有包,你的包叫什么名字在里面会生成,那我来把这先改一下啊,然后咱说一下什么意思,比如说我叫这个。At硅谷。啊,假如说我这个就叫edu这个service。啊e service,然后这个什么意思呢?啊,包括这个咱拿下面的啊。然后它的含义就是什么,比如说咱们一会儿把代码一执行,它在我的账号里边会生成你的包,而包叫什么名字,这个名字它就叫做com点。At硅谷,然后再点上一个名字,叫这个edu service,这就是咱们的包的名字,而在包里边还有几个子包,比如有这个CTR了啊,就是它生成应该这样给大家也说一下啊,比如下面还有几个包。
14:10
那我们生成应该就是比如这里边有一个controller,那它就点上这个controller,包括点上n PP service map,把这个包会给咱们生出来啊,这是你包叫什么名字,就是这个啊,顺序无所谓啊,就你上下都无所谓,主要是按照这个结构来生成,就终生就是com.a硅谷e service,然后里边有controller enity service map这包你可以改名字啊,默认我都用这个名字了。这个啊,第四个就是包,各位写的时候改成你那个包的那个名字。这个啊,咱提到了。然后这个说完之后,下面呢,是你的那个具体策略配置,那这策略什么意思呢?给大家提一下啊,首先第一个不知各位是否记得啊,咱们之前学过一个叫逆向工程。
15:01
这各位应该知道啊,之前我也在各位也在大概提过逆向工程什么意思,它就是啊,根据咱的表,把我那个map部分是一类的这些东西是不是能生出来呀,而现在同样用代码生气,它也是根据你的表,然后把你的代码都生出来啊,所以咱们在这个过程中只需要改一个地方,就是这个地方。大家看啊,这地方有一个叫set include里边加什么的,就加上你那个表的名称,就是你根据哪个表生成,把表名称加进来,因为咱的表的名称,咱看一下我们这个表是不是叫edu,所以咱把这表就直接拿过来啊,当然你可以有多张表,那你加个逗号,再加上你的做账表啊,看你的实际,咱目前只有一张表,我就写一个表就可以了。啊,这个是一个表,然后其他的不需要改,其他的是一些策略,什么策略呢?比如说咱看一下啊,首先有一个什么下限的策略,这是什么策略呢?比如说咱们之前也提到过,我这个时间是不是叫GMP_create而它在生成到就是我们那个。
16:13
把这往下拉一点啊,升入到咱们实体类中,咱实体类中的那个属性是不是应该叫GMT大写的这个create是不是这个东西,这就是它里面设置的策略,另外里边还可以加一个叫longb,就是加那个date,那个相关注解啊,这个是咱们用它能生出来,所以咱们啊,这是代码生气部分。最后重复一遍啊,我们在用的时候,各位需要改几个地方,第一个就是你那个项目的一个绝对路径,比如说我们思维CEDU这个地址,这需要改一下。第二个策略看你的实际改成ID worker或者加it条,第三个数据库改成你数据库,然后第四个包改成你示意的包,最后一个就是表名称改成你要生成这个表是什么名称,用这个做到,所以这个是咱们代码生气部分,用它我们可以把代码自动生成。
17:09
啊,就是这么一个东西啊,各位把它知道,然后这个做到之后,最后再来执行一下啊,看一下结果。大家看啊,目前Java里边应该什么都没有啊,然后现在把它执行,或者说你写个main,方法是一样的啊,我就用一个单元测试了,然后把它直接执行,咱看最终结果就是代码生气的部分。我们等他啊执行。因为第一次嘛,他要去编译你的代码,第一次会比较慢点啊,咱们多等一会儿,最后看代码能不能升出来。好,我们来最终试一下啊。等他执行啊。这个啊已经执行了,就是执行之后你发现最后有一个啊,有一个叫文件生成功,就代号生器里边的,那就表示这代码就可以了,然后我这里边提示成功,如果你失败啊,一般失败的可能就是因为比如你这个文件可能路径写的不对,或者说你依赖可能少,一般就是这种错误,现在我这是成功了,成功之后咱到这里边看一下啊,大家仔细看这个代码。
18:14
你注意看啊。大家看到了吗?这个代码不是我写的吧?是不是咱们由代码生成器生出来的?所以这就是MP代码生气的使用,你发现里边有什么controller。实体类service接口,实验类map的接口和配置文件是不是全都有,这就是由代码生T最终给咱们做到的啊,就是这么一个结构。啊,所以大家啊,一会把这给他就是直行生出来就可以了。啊,这是我们完成的啊,而在里边大家注意啊,它在这个就是map里边呢,把这个差文件也生出来了,而这么生成什么意思呢?也是我之前提到的,他让我们就是也可以自己写所数语句,那咱怎么自己写,那就写到我们的叉L中,就是在map里边定义一个接口,然后叉中写你的so后语句啊咱后面也会有这种场景,但目前这些都有,比如说这个实体类,你看啊,这些都有。
19:14
啊,这咱一会具体说,这是那个swagger的部分啊,包括你看这个date注解有啊,这些属性都存在,这个命名规范也都对,然后另外就是service有接口,有实验类,Map有接口,有东西,但是你注意啊,它的CTRL里边只有一个类,没有具体内容,这CRL中内容需要咱们去写啊,他没有把这生成咱需要写这个,但是它的service和map部分都给咱们写完了。这个啊,是咱们做这个给他改个名字啊,不改也可以啊,我就习惯叫teacher啊。所以这是关于代码生气部分,咱就用代码生气,把这个代码就最终做到了。啊,这个啊,咱们的这么一。
我来说两句