00:00
来继续来写,下边写CT,你从底层往顶层写,下边写cler,在市场活动的CR这边加一个方法,这个方法叫保存创建的市场活动,好,下边我们来加一个方,这些都是设计好的,那我们来看看在市场活动的map这个control到里边加方法,市场活动control在这里边加过来一个方法就行了,那这个方法其实大体上咱们都已经设计好了。那首先它是个CT存的方法哈,返回值,再看返回什么类型的。这个范围值定义成什么类型的?对定义什么类型的?对他定义成什么类型的,你看将来前台发请求,请求到这个CTRL方法,它返回数据,返回什么样的数据。对,返回什么数据啊,对,咱们这个地方返回的,根据咱们的设计是不是返回阶层字串,对,这是咱设计好的,那为什么就返回界定字符串。
01:00
因为前台发请求发的异国请求,阿贾克斯发的,所以我们想应要返回阿贾克斯,阿贾克斯能解决出一定是个阶层总国,所以将来我要让这个ctrler方法要访问一个阶层字符串,那ctrler方法如何访问阶S字符串?式对我对,把我们要返回的数据附到一个加va对象里边,1RETURN就行了,是不是这样的对1RETURN,所以那1RETURN你要这个方法,你要返回一个什么加构对象,将来你肯定要把你的数据封到一个加构对象里边,那封装一个加构对封装什么样的加构图象,你这个地方返回什么。对,我们要发挥什么,要怎幺对,就是那return object是吗?啊,其实大纲那有可能还要封装别的呢,你不管封装是什么,我为了我的代码那么复用的话,将来我不管你封装什么,你封装到什么加固对象是么,都可以返回,那这个东西定义什么?对,敖不杰克是吗?敖不杰克,敖不杰克是Java里边所有类的负类。
02:05
那么将来我返回值只要是属于object的都行,那么将来你可以把你的阶层里边那些数据封装到什么Java对象里边都可以委托,这样的话我的代码更灵活呀,知道吗?这是我们说的这种父类定义成父类型的这个返回值,将来真正返回的时候是返回子类的对象,其实这就是咱们前面以前给大家讲的那什么对多肽的一个典型的一个应用,是吧,方法的反值定义成负类型的反值。真正返回的时候是个子类的对象,这是一个多肽,一个最典型的应用,知道吧,所以这些都是大家以前学过的这些思想,这语法你要知道,你要知道他用到底用的是哪一块知识。那么以后你写代码也可以用,也可以这么来来写这什么,这是我们啊这好,这是我们知道,哦不行,那下边写方法名,方法名我们说建名之意,我这个地方就叫CC保存创建的市场活动艾克这样就行了,知吗?好,那这样的话,这CTRL了,这个方法我们就写好了,写好之后,那么将来他要处理来自客户端的请求,那处理什么样的请求,要给他分配一个ul。
03:20
那分别一个URL用什么对request的map,然后呢,在这里边给到分别一个URL,这个UR,我们说理论上可以随便写,但是实际开发的时候不可能让你随便写,你要随便写,那么将来我们这个应用就乱了,这个这个工程这个项目就乱了,是吧,以后就不好维护了,那我们的原则是将来这个地方写什么,要和这个CTRLL方法,他处理那个请求的时候法,那么处理的那个资源路径保持一致。那那他这个这个CL这个方法,我们说他的资源路径是什么,你就看他处理完请求之后,响应信息返回到哪个页面,那个页面就是他处理的资源路径。
04:03
那个页面所在的路径就跟他的这个URL保持一致就行了,那现在呢,我问你啊,它处理他将来这个访问值,它处理完响应之后,这个响应信息返回到哪个页面里边。哪一个页面。短带看他返回哪个页面,我一点保存带看他将来返回哪个页,是不是还是创建这个页,还是这个市场活度主页面上,其实还是返回到这个模态窗口,这返回模特模态窗口本来就这个什么,在市场活动主页面这。所以它将来响应信息一定是返回到市场活动主页面的,那它这个URL要和市场活动的主页面所在的路径保持一致,那市场红的主页面在哪呢,看看。涡和奔驰下边这个地方市场的轨页面,所以说它这个UR应和这个页面的资源路径保持一致,就是因为它处理完响应之后,响应信息,处理完请求之后,响应信息是返回到这个页面里边,那你说老师你怎么知道他返回到这个页面里边。
05:07
这个能看出来吗?对,能是吧,他发的请求从这发的请求是吧,响应信息就他没跳转页面,他肯定是来到这又返回到这个页面就账了,那这个页面自源路径,那看怎怎么找。这个页面资源路径是不是从视图解析器往下找,对视图解析器,视图解析器从这个什么配置往下找,找谁啊walk奔驰找什么activityiv就行了,这是他这个路径,所以大家这个地方一定会找,知道吧,以后你也要这么写,这么写,这个你要不这么找找以后就有问题了,嗯,好,下面我来看看这个地方,然后呢,它这个地方一个斜杠,然后呢,沃克奔驰知道吗?然后呢叫埃克特,那说老师为啥加斜杠,咱们前面一开始第一个功能就给大家讲了,为啥加斜杠啊,其实前面应该是个什么完整的UR,这我前面都是那个什么啊,又是I,又是协议IP端口应用名字啊,然后呢,前面就省略了,用这个斜杠来代替了。
06:12
然后呢,这是我们说这个路径,那下边资源的名称和方法名保持一致,这样就行行了。好,这是我们这个URL就分配好,分配好之后下面我们继续来写这个方法,那这个方法我们说将来返回阶算字符串,我们要让它自动生成阶算字符串,前面加一个response包,我每一行,每一行代码都有原因的对好这样的话我们就可以可以完了之后这个方法将来他什么,他处理请求,如果前台发布了参数,他要定义行,他接入仓数。那前台有没有参数,是不是有啊,表单里边所有的参数都已经提交过来了,所以它有很多参数,有几个,单看有这些参数,你看对六个参数,按理说在这儿你得定义六个形态来接束参数,那六个形态我这有定义太多了,我先解起来太麻烦了,对,但是我们在意什么?分析将来是么?我们接受这个参数之后,要把他们什么封装一个实体类对项。
07:14
所以我在想啊,这个地方能不能直接定义成实体类类型的型餐,在接收的同时就封装了,可不可以啊,对,可以的,我们这都是我们以前学的语法,所以那这个地方我来写一个什么实体类,对I object,这个什么叫activity的实体类类型的一个形态,然后呢,这个这个什么刑餐的名字,你随便起了,我就建名这就这了。然后呢,大纲这样的话,在前台传过来呢,几个参数之后,全六个参数之都分成这个实体的对象数啊好,这是我们说的这。忘了。那那些参数都放到里边以后,我就可以把它传给测数,传给外部层来保存了,大家再一分析前,在传过来了六个参数,那么将来这个参数的分数的对象里边,这个对象要传给serve层,传给map,传给server语句去保存数据,大家我们刚才写server句的时候,不知道大家注意没注意,写这个Soo句的时候,它需要几个参数,你看。
08:15
几个一个知不知道,这是一个两个三个四个五个六个七个八个九个,你知道吗。对,算数需要九个参数,你现在只往里边封装了六个参数还不够,还有三个参数没封没封装也说从前台没传过来这三个参数,但是so语得需要哪三个参数,你看看ID还有谁啊,可谓time by time是表示这一条市场活动什么时间创建的,这一个BY是表示这一个市场活有谁创建的,应该保存一个人的信息知道吧,所以那这三个参数那前台没传过,为什么,为什么没传过来,对没有前台没有是吧,但是我搜就又得需要,那怎么办呢?对自己生成,然后自己生成之后封也是封成这个对象了吧,对将来传给S传给玩不怎那所以说大家这个参数我们定义这个实体类类型的参数,它只是分为了从前台成为那些业务参数。
09:22
至于由我们自己生成的这些数据,他没有封装,没有封装,我们还还要对这个实体类进行二次封装,继续封装参数啊,封装参数,这样那封装参数就往里边写数据吧,那来来往里边设置数据就行了,那往里边设置数据看有哪些,首先有个ID,这个ID我如何给它生成。对UUID是吧,对UID用什么?用UUID那个什么,用UID生成一个32位字符串就行了,那如何生成一个UUID32字符串,对这个地方咱们以前学什么Java SE的时候应该有这个类是吧?在Java叫YouTube包下边有一个叫什么对UUID的一个工具类知道吧,那哪些工具类我们这个地方简单简单来先给大家写一个测试程序,大家可以看一看。
10:14
大家可以看一看这个地方,简单写个测试程序来测试UUID的它这个用法,然后呢,这个地方来这个地方写个包简单测试一下,这是测试程序,嗯,然后呢,CRM这个地方来个UUID再测试一下,然后呢在这里边写个包啊写写一个类。写个测试类来测试UUID,然后呢UUID叫这个地方,然呢test吧,知道好在这里边我这个地方来写个测试程序,就是用一下JDK给我们提供那个UID生成了个工具类,让他每次调的给我生成一个32,每次都不重复的一个32位字符串,那我这个地方写下,那我说生成一个32位字符串,它不牵扯到前台页面,那这个地方我们写这个测试程序,不用写测试页面。
11:04
直接只只需要写一个测试方法就行了,在这边一运行每次结果设那个每次不一样的一个32字符串就行了,那我们来看看写一个测试方法public that包么?然后在这里边用我们那个UUID的工具类,这个工具类是JDK给我们提供的,我们可以直接调哪一个叫这个对UID叫他看吧,Java u to包下知吗?它里边有个方法,哪一个方法呢?叫这个看。叫random u ID随机生成一个UID,但是它生成是个对象,是个对象啊,我们那么他把那个什么,而且它这个对象里边也这么就包含那个32位字符串,知道吗?就包含那30字符串,你要你要直接用它的话不行,它只是把那个30字符串作为这个对象的一个属性,一个属性,知道吗?作为这个对象的一个属性,那我要直接用这个什么对象不行,它是拿到一个什么一个对象的,在内存里边一个地址,那我就想拿那个30字符串怎么办呢?它对它里边有个方法叫死病,他对那个对象的突死病做了覆盖,一突死令,它只是返回32字符串那个什么属性的值,让你这就是那个UID,大家可以看一看,我们这个地方来,这个地方来一个UID,这就它每次给我生成一个字符串,那这个字符照每次生成永远不会重复。
12:30
知道吧,所以你微信我们这个都可以打一下子啊,这个地方我们可以打一下,每次都有什么,当然这个有个报错,这个来一个get return,先return一个,要不然我们测试不了,知吧,好,这样的话,他每次就给我生成一个字符串,你知道吗?每次不管是高并发这个环境下,还是什么时候,不管什么时候运行这个字符状永远不会重复,但你可以来运行下一个右键来运行一下。每次生成一个字符串,你吗?大家看我。
13:00
这个你可以看一下,大概后四位,这个是C99E,你看再再运行一次。永远不会重复。看到吗?它永远不会重,每次整都,这就为什么不会重,因为它是按算法生成的,它怎么生成的,就在这个方法里边生成的。就在这个方法过程。那这个方法到底怎么生成的,你要感兴趣,你可以对看他的源码是吧,我们说Java是开源的,这种技术源码都给你了,你要感兴趣,你可以看他那个,看他到底怎么生成的,按照算法生成的,永远不会重复,知道吗?就是我们如何找啊,这是这它这个算法的特点呢,就是最终得到一个32位的字符串。那女老师31位行不行,不行,知道按照他这种算法,至少32位,就至少三位,如果31位的按照他这种算法,重复的几率就大了,知道吧。所以至少三个,你说老师33位行不行?
14:00
三个摊位也行,可以多,但是不可以少。至少32位,当然我们那那我们肯定只是三三十二位就够了,那所以我们33位将来它会存到数据库里边,你要33位的话,它每次都多存一个字符,那除了占用你磁盘空间没有别的好处,所以30位够了,一般来说都三个好,这是我们说的,这这是他是算法,他已经帮我们实现了,你不用写了,正因为这一点,我们说我们什么在公司里边用它用的最多,因为这种算法不用你实现了,不用程序员管,你直接调就行了,知吧。啊,这是我们说的这这啊,但是这个地方呢,你数一数这些数字不是32位是吧,对,这是36位是吧?多了哪几位,多了四位哪四位,对就这几个杠啊,这几个杠,然后为什么加这几杠,就是它这个凸string这个方法,它覆盖这个object里边,这个方法的时候,他说让大家好看,为了大让大家好看,它用杠隔开了,这样你数的时候好数知知道,当然我们说你说老师我带着这些杠作为主键值存到数据库里边可不可以。
15:12
也可以,但是怎么说这些杠并不是32位这个主键这个它这个字符串里边的一部分就让大家看到好看,带上它和不带上它效果完全一样。啊,只不过那你要带上它,那可能存储数据库的时候,你每一条数据多占四个字符,所以一般来实际开发的时候都是把这些杠去掉,他们不属于UUID这个主键,这这是字符串的一部分,所以一般来讲都是把它去掉,去掉之后把这四个横杠去掉就是32位了,那如何把这四个杠去掉?对,替换掉是么?现在我们得到的是这么一个字符串,这么一个字符串,那我要把字符串里边所有这个什么一个什么一个字符替换掉怎么了?对里边有个什么,对字符串里边咱们以前学的里边有个方法叫replace吗?
16:02
Replace,它只能替换某一个字符,我要把四个这个字符全替换掉,哪一个叫replace or吗?把里边所有指定的字符,然后替换成指定的其他的一些字符,知道那我要把什么?把这个字符串里边所有的横杠都替换掉。那就把这指定这一横啊替换掉,怎么替换掉,对替换成一个什么空字符串就行了,这样的话这一横啊全去掉了。好,那我再一运行大看这一层刚都没了,这才是32位的字符串,这才是32位。好,这是我们知道,那有同学说,老师,万一它生成30字符串的时候,里边就有正常的横杠,怎么就是UUID字符串的一部分,怎么你也替换掉了,它不是不是32位的了吗?可不可能出现这种情况?对,不可能,为啥呢。
17:01
对,按照它这种算法,你看吧,它这里边字符来看,它这个32字符串里边有横杠吗?没有,都是有什么字母和数字来组成的,不没有特殊字符,这是它这种算法,他他说算法的特点,所以你不用担心说啊,我本来有正常的横杠也提完没有,没有正常好这样的话,他看我这个什么,这个我们说应用UUID这个工具类,它就每次能够设成一个不重复的,永远不重的一个UUID。这么一个字符串了,我就可以用它了,那用它的话怎么用在我们这个地方来,我就可以这么这么来用,然后呢,这个地方来一个字,然后呢,直接把它写到这儿就行,知道吧。三十二四串,每次不管什么情况下掉,永远不会重复,按照这种算法啊。啊,当然我们说以后我们用的UID的地方还很多,每次用都得写这行字。所以这行代码我说这么长,每次都写比较麻烦,所以我们可以什么封装一个工具,工具类里边谁用谁直接掉就行了。
18:06
好,所以下边我们就准备把它分成一个工具类里边,那工具类的话,它我们说这个地工具类它是属于公共的代码,不管业务管理功能还是系统管理功能都有可能用能,所以写到comment里边,然后呢,它属于工具类,那工具类写的YouTube这报下,所以下边我们看到UUIP来个这个是叫U求字,这个工具类专门是用来生成UUID的这种,这个UUID的这个字符串下边里边提供一个方法,那工具方法固定的写法power了,然后呢,死在这返回值,我们这个地方返回一个30字符串,那肯定是字符串就行了,你问老师是不是工具方法都返回字符串,不一定,不一定,还有它返回别的呢,根据你自己的实际情况,当我这个地方要得到一个30字符,那还有字符串,然后呢,这个地方来定一个方法名,方法名我就鉴明这义了,叫get u u ID,这样好,这样我们就可以了,然后把我们这个代码写到这里吧。
19:06
每次一掉它就生成这么一个啊,每次一调就生成为字符串,然后把这个字符串给他染,诶把这个字符串给他人就行了,然呢这个地方这样我们就可以了。好,然后呢,这个地方我们可以给他简单写个注释,这个地方用来获取,然后呢,UUID的什么字符串啊,UUID的值吧,这样就行了,谁需要谁调这个方法就行了,那如何调,那直接在这个地方调就行,好点叫get u u ID。静态的方法可以通过类名直接掉啊,这样的话大家这个ID我就封装好了。ID封装好,还有别的数据,哪一个这个地方继续玩赛,还有什么可谓的type同们创建时间表示这条市场活动在什么时间创建的,这个地方应该写什么。
20:01
对,系统是什么时间创建的,是不是当前系统时间啊,当前系统时间怎么怎么创建啊,怎么获取当前系统时间啊,对你一个data塔是吧,但是你一个data大家你发现报错了是吧,这个对吧,你会发现报错了,引进来,引进来也报错了,是为什么报错了,因为大概我们前面给大家给大家讲了,我们的所有日期和时间在数据库里边都是以字符串的形式存的,那将来它生成这个实体类对象,这个日期,这个时间,它也是按字符串的形式来定义的这个属性。所以说大看它这个是个字符串啊,你看这个字符串,那我们说那你这个封装的时候,来我们这个地方来封装的时候。哎,这个这来封装一样,这个东很捉着它这个封装你给他传一个data塔对象,它肯定包括了,那怎么办呢?是不是把这D塔对象转成字符串给它,给它什么给它复制过去啊不是,那转成字符串咋转。
21:00
对,已经写过是吧,已经写过叫data塔U图已经封装好了,它可以对一个data类型的对象转成我们所需要的字符框,你知道吧,而且按照我们特定的那种格式转。是吧,那这个地方来调方法,那调方法我们前面分了三个方法。既有年月日,又有十分秒的用,第一个只有年月日的用这个,只有十分秒的用这个,那我们这个用哪一个,对第一个创建时间,年月日十分秒都有,那直接用它,直接用它,那什么给他传一个data对象,这是把当前的系统时间转成这种字符串,然后他复制过来,好,这样的话我们就可以了,下边继续来,还有一个需要封装的叫可BY啊可瑞BY说这一条市场风有谁创建的,有谁创建的。谁创建了这个市场活动?那个表。对,谁创建的,谁点的这个保存按钮,是谁创建的?对对谁谁点的这个保存按钮。
22:04
右上角都登录这个系统,系统账对谁登录的是不是谁点了,那谁登录谁来到这,那谁点的,那谁登录的是不是就是当前那个用户啊,就是登录的那个用户就是当前用户是吧?就也就是说放到session里边那个用户是不是就是他就是他,所以我们获取当当前用户就行了,那当前用户在三里边我要获取对要获取那个session了,那个获取三怎么获取,对,让他注入进来一个三,这样就行了,然后从三里边来获取当前用户就行了,因为他登录完了成功之后,他一定往30边把他的信息放这了。所以我们就从session里边来获取它就行,那session里边来获取它叫get和tribu,对,来个contain是contain,然后呢,第2SESSION u知道吧,然后呢,我们来拿到这个什么U,然后呢,拿到U所然后呢,这个地方得强壮一跳,得强壮一下啊,这样我们就可以了,这样就拿到当前用户了,然后把当前用户的信息设置到这里边就行了。
23:13
那当前用户有ID有名字,是把ID还是把名字附到这?名字还是ID啊。对名字的话,名字是不是有可能重名吗。有没有可能重名啊?假如说孙泽有两个张三,那你这个地方是谁创建的?知道吗?对账号也可以是吧,但是按照数据库设计的原则,这个字段对这个字段你看看啊,按照数据库设计的原则,谓的败这个字段看吗?可谓败这个字段看吗?对,按理说他是吗?他是不是得以他是他是不是得引用那个什么用户那个表的一个什么。
24:02
组建直角引用数据库,用户那个表里边某一条记录去。那引用记录咋引用?肯定引用那个记录的标识是什么标识,所以说按照我们这个数据库设计上,它应该是个外键,引用什么用户表的组件知道吗?要为什么是这样,其实大家从我们以前数据库设计的原则来讲的话,市场活动这个表应该说跟用户这个表有关系。跟用户这边这俩有关系。这个表和这个表有关系,有啥关系,就从这站在这个角,这个字段的角度上来讲,他俩有关系,有什么关系,一个用户可以创建多个市场活动,一个市场活动。只能被一个用户创建,他俩是个啥关系啊。对多谁是啊。对,U字是一,它是多,所以我们设计数据库的时候,按照咱们以前那原则,是不是应该在多的一端加个外键,引用一的一端主键,对多的一端就是它加个外键谁啊,就是它引用它的主键去,应该引用它的ID去,大家能理解这个意思吧,对。
25:12
应该是账号啊,那有点他账号,他的账号有可能还能还,还可能会变,那能明白这个意思吗?要这这个账号我有的,我看这个账号我我就我我以后改了。我有有可能改吗。就是你的就就像你用QQ那个昵称一样是吧,我有我有可能改了呢,大家明白这意思吧,就账号有可能改,但是组建值不会改懂吧?啊因为账号有业务含义啊,有业务含义,所以说大看一般来讲,我们说我们像这种情况都是么?他这种外键引用它的主见。所以它里边应该保存用户的什么。名字还是ID啊,对,ID引用用户的ID,所以这个地方,所以我们这个地方看获取用户的ID,然后复制给他就行了,这样的话我们就保存这边不是账号,虽然账号也是唯一的,但是账号有可能变,账号有业务含义的,业务是不稳定的啊,万一账号变了,那么他这个地方也得跟着变,那账号你维护就不好维护了,知道吧,所以这是我们说到这个好,这样的话,他看我们说这三个我们自己生成的参数也封装到里边了,那客户客户提交过的这些参数也封装里边了,现在九个参数都封装好了,封装好之后,现在我们这个流程已经来到这儿。
26:36
来到这个地方了,来到这个地方,那下一步应该怎么办呢?20第20步做完了是不是?二第21步了,调service方法,把这条市场活度保存上去了,所以下边来调用service,调用server啊,每一步你都要能想明白,那每一位同学都要能想明白,因为你以后也也应该是这么做是吧?Server方法然后呢,保存创建的,然后呢,市场活动知道吧,好,下面我们来调service,调service,那调市场活动service,调市场活动的service这个地方要注入进来,市场活动service兹。
27:12
来这个地方来注这private啊private,然后呢,这个地方来一个activity,你知道吗?Service,然后呢,这个地方activity service这样,然后呢,这个地方来一个all world,然后呢,来我们调查,然后呢,这个地方来调查,好诶这个地方来一个,它里边有个方法点叫save activity,把activity设计对象,然后呢。传过去,封装好的都传过去,然后呢,根据我们的设计,他得到一个影响技术调控,这样的话,我们这个流程已经来到这儿了,这个controller第二个职责就完成了,把数据该保存的都保存好了,都处理好了,下边第三个职责,根据处理结果,然后呢生成响应信息,那么知道吗?那下边我们根据处理结果生成响应,那如何根据结果这个保存的结果,然后呢生成响应息呢,当这个地方跟我们以前不一样,以前我们做登录,做查询的时候。
28:13
都是什么?看看查没查出来数据查出来了,登录成功了没查出来登录失败了或者什么,再进一步判断合不合法,合法了,登录成功不合法,又登录失败了。我们没有考虑到,那么我们没有考虑什么报异常什么之类的,知道吧,那这个地方大纲现在我们要保存数据了,一般来讲我们是这样的,如果仅仅是查数据,我们一般不考虑查成功还是查失败。我们只是考虑据查没查出来,数据查出来了,成功了,没查出来,可那就失败了,知道吧,查数据的时候,但是写数据的呢?添加数据,修改数据和删除数据,这些都要写数据。写数据一般来讲我们会考虑什么,写成功了还是写失败了?
29:00
写成功写失败什么意思?就是看看写的时候有没有报异常,报异常失败了,不报异常有还得进一步判断,影养技录条数知道吗?营养技术条数大于零成功了,小于零或者或者等于零失败了,知道吗?所以贷款这么说,我们一般来讲写数据的时候会考虑它会不会报异常,查数据一般不考虑报,报不报异常,为什么?因为查数据不改我们数据库里边数据,不会引起数据库里边数据变化,只要你测试成功了,一般查数据都不会报异常。所以查的时候我们我们不会考虑异常的事,但是如果写数据呢,会改变数据库里边数据,有可能会引起别的记录的变化,这样的时候有可能会报异常,知道吗?所以像写数据的一般我们都会考虑这报没报异常,报异常失败了不报异常,进一步判断营养基础条数知道吗?所以这是我们说的这这个地方给大家这个强调这么一点,只要是写数据,不管添加数据还是删除数据,还是修改数据,只要是写数据都都要考虑这个service层报没报异常,报异常失败不报异常,进一步判断影响技术投入,就这个意思,如果仅仅是查数据,查数据一般不考虑异常不异常,就这个意思啊好,下边大家我想看一看调这个三月的方法的时候,报没报异常,报异常失败不报异常,进一步判断银行记入投入知道吗?好,那如何我判断这个算税方法将来执行的时候会不会报异常,怎么判断,对是不是踹开一样,对踹开查出去一般不会加踹开始知道吧,然后呢,改出去了,写出去了,一般都会逃避这。
30:47
然后呢,如果报异常,然后呢,捕获到之后,先把异常信息导出来,然后再返回响应信息,就这了。这是我们说到的知道,一般查数据不会加踹开纸知道吧,好,这是我们知道,那这个地方大家我们说不管成功了还是失败了,不管报没报异常,我们将来都会返回这么一个阶层。
31:08
那我要返回这么一个阶层,那我要把这个里边数据送到一个加固对象里边就行了。那我要生成这么一个阶段,要封装一个什么样的架构对象?我要把里边数据分成一个什么样的架构对象,将来会自动给我转成这么一个阶层字符串。什么样的架构对象,对,就是咱们上次封狂好return object啊return object转又一个,然后呢return奥,然后呢,这个地方我们来看看把什么数据往里边封装,首先如果不报一张直引到它了,不报一张会继续往下走。往下走是不是就一定保存成功了呢?对,不一定,还要判断影响记录调数,如果说it ET大于零说明什么?对,成功了,成功了,那我就把成功的信,然后封上这个加这个加固对象里边,那就是什么,这个Q的值,它是处理成功失败的个标记,那成功了它里边值应该写几啊,对,一一我们一般不会写死啊,会写到这个使用这个常量模行,这是成功了,成功了只返回一个成功就行了,失败了,失败了埃尔斯,那就失败了,虽然没报一生影响镜头数是零,那也是失败,那失败的话告诉前台失败了,那告诉前台失败了,那把这个扣的值非用这个零法的题目。
32:33
而且这个地方要返回失败的原因,失败的原因来个set message,把失败的原因写到里面就行了,那失败的原因,这个失败的原因叫什么?对添加失败或者是创建失败,但是一般来讲,我们在开发的时候,一般不会提示这么明确,这怎么提示明确,怎么不提这么明这么明确,但你想啊,你要如果后台处理你,你经常返回什么处理失败了用户一点它。
33:02
假如说失败了,不管什么原因都告诉你,都给他弹出来一个创建失败,创建失败,那这个时候用户有一种什么感觉,就好像你这个系统了吗。做的不好是吧,不稳定他经常点,经常会弹出来创建失败,处理失败,这样他不管,他不知道什么原因是吧,但他就说你这个系统做的不好,嗯,所以一般来讲,在实际开发的时候,不会提示这么具体,一般在写什么,大家可能用软件你也有这种体验是吧,你一什么,你一做一个功能,它给你传来一个就这就这样,有的是这样系统忙是吧,请稍后重试是道吧,就提示笼统一点知道吧,到底至不至于什么失败,其实就是后台报错了,知道吗。后载没处理成功,但是用户觉得,诶系统忙,好像不是你后载的原因知道吧,这样他觉得他整你这个不是你的软件的问题啊,所以你要如果告诉他总是失败,总是失败,他认为你这个软件做的不好。
34:01
哪怕是他的数据有问题,他认为你这个软件做的不好,在一般来讲都是这样啊,但是其实但你只要看到这么一个提示链接,其实基本上什么做软件的人都知道,就是后台报错了。知道吧,啊,所以,但是后台报错我们也不认,也我也不告诉他后台报错了,这事我们说到这好,同样道理,大家如果是什么报异常了,那肯定也是失败了,失败了也是一样,我也告诉前台失败了,起振行也是这个。好,这是我们说的,这这样的话,大看不管成功还是失败,我就把我的返回的信息都封到这个加固对象里了,然后把这个加固对象一准传染,那么将来它会前面加上每次方波自动生成阶算子物障返回了。这样的话我们这个controller就行,知道吗。好,这是我们说的这个关于我们这个controller,我们就行了。
我来说两句