00:00
好,那这个呢,我们基本的介绍做完了,当然还有一个点跟大家说一下,就是比如说我在这边也可以加一个注解叫request mapping啊,嗯,那这边呢,我们也加一个,比如说呢,叫这个API sugar。啊好,那如果说我在类上面加了一个这个request mapping呢,那么相当于所有的啊,这里面所有的方法,这个前面都加了一个它。啊,那比如说来运行啊。我在类上面加了一个request mapping对吧,好,那此时呢,我们拿这个TEST1去,应该叫test了,对吧,他看。呃,报的是这个。我看啊。他直接就找不到。对吧,找不到这个请求地址啊,根本就找不到啊,那你要怎么写呢?你要把这个拿过来啊,叫API sugar。
01:00
然后呢?加在这儿。加在这个前面,加在菜的前面,哎,那刷新可以了。对吧,啊,就可以加一个总的前缀,因为有时候呢,你一个类是一条业务线嘛,对吧,一条业务线呢,可能它访问的地址是一样的,那最后呢,方法可能不太一样,所以最后呢,你再换一下调一下对吧?诶把这个名字写的不一样,那这个东西呢。就是相当于我们的业务线对吧?啊这样的事情,好,这是我们简单介绍一下这个功能啊,大家了解一下这个事儿,好,那接下来呢,我们就写我们当前这个需求,切回到我们的需求对吧?最终呢,我们要返回这个啊,那我们要写controller service d啊三层,那他要告诉我们应该从哪一层开始写啊。我们应该从哪一层开始写啊,大家告诉我就是controller,诶它呢,调用关系这样的,它发送请求给他对吧,它调用service service调用do do呢去读持久化这话把数据返回给他对吧,然后呢,逐级返回,那你封装杰森把这个数据呢传给这个客户端。
02:14
啊,传给我们的客户端,那咱们这个地方。应该从哪开始写呢?从哪开始写?啊,辛总说从do层对吧,Do层开始写啊,没没毛病对吧,因为你想想看,那controller调用service service调用do,那你这两个没写,你CTRLL怎么写啊,你要调用的东西都没有对吧?所以从这个开始写对吧,从do,那do呢,咱们是一个map对吧,咱们用一个map好,那比如说咱们。在里面写一个这个接口。呃,那对吧,这个地方呢,我们写一个叫g ma啊,比如说我们就把g ma相关的都放在这里边,G ma map,但这个名字随便啊,也是根据业务线走的,一般来说呢,是一张表对应一个ma。
03:05
啊,就是未来呢,你这里边不有很多表嘛,对吧,一张表对应一个map就好了啊,那你要写的名字,假如说我们用它啊,用这个province,对吧,我们要写很长对吧,那我就直接叫GMV,我们简单一点啊,简单一点叫GMV的一个map可以吧,好,因为这个到时候我整个替换掉,因为有的代码我就不写了嘛,对吧,之前说过直接拿过来啊给大家就行了啊,那个所有的这一套啊。就这里边所有的东西你都已经写好了一个了,对吧,到时候把那个发给大家就行了,对吧,到时候传到D的,你下载去看一下啊。好,所以这个名字呢,我们就随意一点,就叫g MV map来,嗯,当然这是一个接口接口。好,那这边有一个问题了,我们的controller对吧,加了这个注解,诶被我们系统所识别,那你这个ma是不是也要加一个注解,它才能够自动去帮我们构建这个对象呢?对吧?啊,确实是这样子的啊,那你不加注解,还有一种方式怎么做呢?在这个上面啊加一个。
04:08
加一个什么呢。呃,我看啊叫。叫map sc看见没扫描map啊,扫描map的好,那这边呢,我们加一个叫。诶,Base package对吧,加一个这个包,诶你要扫的是哪个包,因为未来呢,你可能不止一个map对吧,你要扫一下包,注意啊,这个时候你不要不要选它对吧,你不要在这儿。Copy reference啊,因为我们这写的呢是包扫描对吧,所以你要你选中这个map,然后copy reference拿的是谁呢?拿的是这个包啊。拿的是这个包的路径,听懂对吧,这个叫包扫描嘛,Map sc对吧,然后base package对吧,它是包扫描啊,你扫描这个包就行了,不要扫描这个,不要到这个接口啊,不要到这个接口,这就不对了啊,那这里面呢,我们要写一个方法。
05:06
对吧,我们要写一个方法,呃,方法呢,就用于返回这个总的g ma的一个方法,对吧?好,那这个呢,嗯,查询click house。查询获取GMV总数对吧?好,那这个方法呢,我们叫public,那总数我们想啊,就是这个东西。那不就是这样写的嘛,对吧,这玩意儿就一行一列,它是单行单列啊对吧,那我们接收的参数类型,我们用什么呢。就是这个返回值类型,我们用什么呢?就是单行单列,你想。这是确定的,它不像我们gdbc u对吧,那个不确定的,现在呢,我就告诉你了,我就是对应的这个circle单行单列,那这个地方我们用什么数益类型啊,是不是用一个值就够了,对吧,我直接给一个什么呢?叫big decem,叫金额嘛,对吧,给一个big decem top to啊。
06:09
需要吗?我的单行单列。对吧,我就一个值,我就这么一个值,我给top two干嘛呀,对吧,没必要吧,是不是直接给一个。BC就够了。对吧,他就是单值嘛,这是我们说的最简单的这种,对吧,我们直接给一个这个就行了,好那么select。叫gma对吧,好括号,呃,那看啊,我们想这个东西有没有参数呢,对不对。有没有参数呢?有没有参数,你你想啊,我们未来呢,要求的是每天今天当日的一个GMV吧,那你看啊,你这个三个里边带了什么。带着这个。
07:00
那很明显这个东西应该传进去,大家想是不是。如果如果在里面写死,那完了,那你这个数据不会变了,假如说你写的27号,那今天都28号了,对吧,这个数据是不是永远都不会变了,所以很明显咱们要传一个什么日期吧,第类型叫date。好叫date对吧,好,那接下来呢,在这个位置啊,啊,当然这个接口接口里面呢,你不用写这个public。好,在这呢,加一个at select,哎,写什么呢?写三个语句。把这个circle拿过来。就是他。C拿过来往这一放。OK吧,往这一放好,那么接下来呢,这个位置不能这样写。不能那样写得怎么写得?井号。大括号。注意啊,就是它。得是用这个参数放进去的。对吧,得用参数放进去就好了,哎,这块呢,我们的map就。
08:01
搞定了。对吧,我们未来呢,加一个注解,把这个circle,诶跟这个方法呢就绑定了,你们还记得spring啊,当然可能大家都忘了,可能大家忘了你们之前呢,在写Spark streaming那个接口的时候,是不是搞得很麻烦,对吧,你们当时应该这样写的吧,在这边在创建一个什么map。啊,在这边呢,创建一个map对吧,这个目录啊文件夹,然后在这里面呢,再建立一个这个文件。对,建立一个什么呢?叫GMV叫map.x查没有对吧,在这里边写色吧,对吧,还要去考虑它的绑定好麻烦对吧,不用这样,如果说你接口,因为接口啊,我们的搜狗一般都不复杂。对吧,都不会那么复杂对吧?好,那我们就直接用select就搞定了。这多简单呀。是不是?对吧。这个还是可以的。啊,用XL配置文件可以啊,对吧,大家还记得对吧,还记得。
09:02
好,那咱们的map搞定啊呃,Service里边呢,咱们一般这样写还是一样的啊,那service呢,也是根据标这个。表去走的叫GMV。G service,好,那先写一个接口啊,然后在这底下呢,我们一般都这样写啊,再来一个类啊叫IMPL对吧,然后呢,我们写g MV service。时间内。好,那我搞一个时间类对吧。好,那首先呢,在这里边我们得写一个方法,用于。获取。叫获取GMV总数啊,那还是一样的,这个是接口,那我们就直接返回,因为它就是单个值,你也不需要什么封装对吧,那就get g MV括号,那还是一样的,那你参数肯定是从前往后传的,对吧?所以你最后有这个data参数,那前面肯定有,前面没有你后面凭什么有的对吧?好这个呢,要实现我们的刚才那个叫GMV。
10:09
Service这个接口啊,那实现这个方法对吧?当然这玩意儿能成为一个service,是因为名字带service吗?并不是,对吧,要加一个at service注解吧。啊,要加一个注解,那这样的话才是一个service啊好,那这个时候呢,我们就直接调用我们的map就好了啊,那我们再构建一个map的一个对象private,然后呢,咱们是g MV map对吧,然后g MV map。最后呢,我们直接调用Java。点C那个塔进去。我们这个地方呢,也就写完了。啊,当然这样的话,你看这玩意儿肯定控制针对吧,因为你看你没有做初始化,那怎么办。这个调用直接调用是不是控制针啊,没有做初始化吗?那怎么办?加一个什么注解,还有同学记得叫X。
11:02
Out well,让它自动注入对吧,好自动注入以后呢,它直接给我飘红啊来看一下它报错。他说不能够自动注入,为什么呀,他说你这个东西啊,没有并没有时间类,那确实啊,我们这个是一个接口,我没有写类。对吧,所以找不到时间类报错对吧,但实际上不影响你运行,因为这个这个接口的时间内啊,已经交给谁了,大家知道吗。就是这个接口,我们虽然自己没有写时间类,但是你知道这个接口的实现类交给谁了吗?你认为这玩意儿交给谁了?对了,交给买贝斯了。啊,没错啊,就是交给咱们买be这个框架来帮助我们去写的,所以要不然你要你要不用买be这个框架可不可以呢?可以你所有东西都要自己写。
12:03
你所有东西都要自己写对吧?而我们用了my be,那直接交给my be了,对吧,就不需要我们写了,但是呢,你总归这个东西报错,看着还是不爽,是不是我告诉你啊,这玩意儿不影响运行,他运行就不报错了,这是ID啊,在做校验的时候报的错对吧?他认为你这个没有招病啊,没有这个时间类,所以才给你报错,但真正运行起来有没有呢?有my babies帮我们写的。这个框架把我们写的,所以它有,它不会运行起来不会报错,但是总归这个飘红看着不爽,那怎么办呢?来啊,在这边点开到这个setting。啊,点开这个setting,然后搜什么呢?搜inspection校验啊。但是每次搜这个这个里面搜东西啊,比较卡对吧,呃,Inspection。所有这个娇验找谁呢?找我们的spring BOO啊找spring对吧,这边然后呢,Spring扣啊扣这个核心,然后呢code编码,编码里面呢,就有一个它叫auto。
13:02
Well for being class对吧?这个呢,报错error对吧?那我们改一下,改成一个警告啊嗯,改成一个警告,哎,那没了对吧,它是一个警告,诶那警告呢,你也要看一眼看啊,他说没有病死,那没关系对吧?啊,那比这个报错是不是要好一点啊。你飘红,你总归写代码的时候很不爽吧,对吧,那所以呢,把它变成一个警告。啊,这个就能接受了,对吧?啊一个警告,诶那告诉我们,诶提示一下这个没有病啊,但是我们自己知道对吧,诶MY呢,会帮我们去构建这个招聘啊,那就没事了,对吧。好,那接下来呢,写最后一个咱们的controller。过载了过载了啊,已经扛不住了嘛,这块东西啊。好,接下来呢,我们写这个controller啊,Public string对吧,那必然返回string啊,诶怎么select string啊叫get。MV啊,然后括号。对吧,括号好,那首先呢,我们加一个这个request map对吧,把它拿过来啊,改一改这个呢,咱们就叫GMV得了啊,就简单一点的GMV对吧?好,那关键这个参数咱们是不是得从外面传进来啊。
14:12
对吧,对传进来。好,那我们想啊。呃,这玩意儿呢,他每天要变。你看啊,未来呢,我是不是要在这儿。边角。看啊。在这个位置我们要写一个地址对吧,写个地址以后呢,我们肯定就保存了啊,可能呢,我们就写好了之后就保存了,对吧,保存以后,那我们要看当天的这个数据,那如果说我们这样写啊来看。比如说我现在呢这样写。这个呢写一个data对吧,这个呢,我们用int类型。这个德啊,用来类型德塔来代替,对吧,那你可以把日期从外面传进来,这个当然没毛病。对吧?啊,当然这个是没毛病的啊,就是说我们要传一个日期,但是你有办法说我保证每天这儿自动变吗。
15:07
这个地方自动变,就接口它自动变。不太现实吧,你是不是要求每天要来改一下呀?每天把这个时间改一下,是不是大家能明白这个意思吗?就是你每天在这儿要把这个date改一下,能听懂吗。就是如果说你这样写,咱们是不是每天要在这个位置,把这个时间改一下,有没有毛病。能听懂吗?但是但是你能想一下改这个时间靠谱吗?靠不靠谱啊,那个我们这里边未来有那么多的图,对吧,你每天一改,你疯了,你你不是。你是个疯子对吧?啊,还有医生开的证明啊。是不是就不太现实啊,这个事情你未来工作的生产环境当中,你的图比我们这个肯定要多的多,对吧,你每天早上十二十二点的时候定个闹钟对吧?啊说把这个时间改一下,你不彻底疯了吗?
16:07
这个也太疯狂了,所以我们想办法啊,那之前我们提过这个东西呢,可以附默认值,那我们能不能让它默认值等于当天呢。如果说我们这个地方默认值等于当天不就好了吗?那未来呢,我就不写这个时间了。对吧,我就可以不写这个时间了。对吧,我就可以不写,因为有问只不写对吧,假如说你想看哪一天。你想看哪一天你再传参数不就好了吗?比如说今天28号,我想看一下26号的数据,可以你自己传26号,你要不传那就是28号,对吧,我们想要做到这样的一个事情。那。默认值怎么给呢?这默认值呢,只能给一个字符串。啊,像泽总所说用系统时间转换,那确实挺好的,用system.current minutes对吧?转换一下可以,但是这个地方只能写一个字符串。
17:00
怎么办?我们怎么来得到这个当天的时间呢?怎么办?嗯。我们该如何是好呢?这里写字符串,下面再改,对了啊,给一个特殊值,比如说我给一个零对吧,好来看啊。If。如果得塔等于等于零,说明什么问题?你没传,因为你要是传了,你不可能传零,你让你传一个日期,你给我传个零,你疯了吗?对吧,你不可能成零,我就给一个特殊值,如果我发现这个日期等于零说明什么问题,你没传没传的话,我就得等于什么叫get today。对吧,我自己写一个方法结束了,对吧,好奥加回车创建这个方法。
18:02
对吧,创建这个方法好,那怎么做呢,怎么样啊。Car ten minutes car啊,得到一个S啊,呃,我没有引入那个工具类啊,没有引入工具类,那我们怎么做呢?有一个simple。Date format对吧,好。我没有写工具类,我就写一个SDF就好了,对吧,好,那么这呢,返回嗯,In tr.pass in对吧,转换成SDF点啊,那咱们呢,去format一下点。如果你没给时间对吧,那我就认为它是默认值为零啊,那我判断如果你等于零,我是不是认为没给时间,没给时间我就用当年时间来获取,那这样的话,我的日期只要你没传,是不是永远等于今天。是不是?能能明白吗?那你看只要你未来这个不传日期,它是不是永远都等于今天啊,就是以当前时间为基准,是不是等于今天。
19:09
对吧,这个就非常nice了。啊好,那有了这个日期,那简单了呀,对吧,接下来查询。数据啊,查询数据呢,要这个service对吧,所以在这边上还是一样的out well对吧。叫GMV叫啊,然后呢,我们给一个。Java service,哎,我们也自动注入了,那就拿着它啊调用。点get data塔乘进来,CTRL加V得到一个GMV,好,最后呢,拼接并返回数据。并返回结果数据,对吧,那我们写什么呢?把这个拿过来啊,就是它。这个接算比较简单哈,咱们呢,直接CTRLC啊。C,然后呢,把它放到。
20:00
这唯一的就是把它要改一改。对吧,先把这个杠N干掉,CTRLR对吧?把这个杠N啊去掉还是去掉乘一个空格吧,这个空格也不要了吧,这反正都有逗号对吧?啊,这个括号好,这个东西咱们是不是要替换掉,替换成哪?替换成这个GMV对吧?那怎么替换呢?首先。啊。嗯,我想一下。这个地方要做一个替换。这个就不要了,对吧,嗯,加号。诶,错了,应该先是。双引号吧,双引号啊。把前面括起来嘛,然后呢再加号对吧,加号呢,直V啊加进来啊,当然这个就不需要了,对吧,这个就不需要了,这里边空的啊,空的就不需要了对吧?好,咱们就这样来。写一下。对吧,我们加一个这个GMV没有问题了吧?啊,当然我们等会儿可以跟这个对一下,看看是不是格式对吧,因为是字符串,现在至少它不报错了,现在它至少不报错了,对吧?我们等会儿呢,来看一下这个东西对不对啊,那我们的金额是。
21:07
4月27号是什么?604222对吧,60422啊,那等会呢,我们做测试,看它是不是这个内容,好把这个截掉,那到此为止呢,我们的map也就搞定了。
我来说两句