开发者学堂课程【微服务+全栈在线教育实战项目演练(SpringCloud Alibaba+SpringBoot):统计分析-生成统计数据接口(1)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/667/detail/11504
统计分析-生成统计数据接口(1)
内容介绍:
一、准备工作
二、具体功能
一、准备工作
实现统计模块的具体功能,按照上一节的总结做准备工作。
在 service 中创建新的模块,让这个模块专门做统计分析部分。
右键选择 model,选择 maven 工程,点击下一步做创建,命名为 service_statistics 完成创建。图标没有加载成功需要手动更改。
在 resources 中创建一个配置文件 application.properties
#服务端口
server.prot=8008
#服务名
spring.application.name=service-statistics
#mysql 数据库连接
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Drive
spring.datasource.url=jbdc:mysql://localhost:3306/guli?srverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=root
#返回 json 的全局事件格式
spring.jackson.data-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8
#配置 mapper xml 文件的路径
mybatis-plus.mapper-locations=classpath:com/atguigu/staservice/mapper/xml/*.xml
#mybatis 日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
# nacos 服务地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
在 test 中新建一个包,命名为 stademo
将代码生成器复制进去
首先需要修改路径,变成 service_statistics
包配置改为 staservice
策略配置路径改为 statistic_daily
修改完成后,这个代码生成器便改出来了,最终会创建 com.atguigu 包,包括里面的内容,接下来生成对应的control/service/mapper/实体类。
接下来执行看效果,启动之后等待片刻,得到结果执行成功。
在 StatisticsDailyController中,修改为
@RequestMapper(“/staservice/sta”)
@crossOrigin
在 atguigu 中添加启动类,命名为 StaApplication,启动类中需要添加一些相关注解
import org.springframework.bootautoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.ComponentScan;
@SpringBootApplication
@ComponentScan(basePackages = {“com.atguigu”})
@EnableDiscoveryClient
@EnableFeignClients
@MapperScan(“com.atguigu.staservice.mapper”)
public class StaApplication{
public static void main(String[] args) {
SpringApplication.run(StaApplication.class,args);
}
二、具体功能
先在 UcenterMemberController 中写指令
//查询某一天注册人数
@GetMapping(“countRegister/{day}”)
public R countRegister(@PathVariable String day){
Integer count = memberService. counterRegisterDay(day)
return R.ok().data(“countRegister”,count);
接下来写 UcenterMemberService
//查询某一天注册人数
Integer countRegisterDay(String day);
在实现类中把方法创建
//查询某一天注册人数
@Override
public Integer countRegisterDay(String day){
return baseMapper.countRegisterDay(day);
最后写 mapper
//查询某一天注册人数
Integer countRegisterDay(String day);
在对应接口中写xml文件
<!--查询某一天注册人数-- >
<selectid=”countRegisterDay” resultType=”java.lang.Integer”>
SELECT COUNT(*) FROM ucenter_member uc
WHERE DATA(uc.gmt_creat)=#{day}
</select>
</mapper>
如果 service 中的括号内容只有一个参数,那么在 mapper 的#后面随便写一个值就可以了,但如果是两个参数,可以按照参数位置获取,比如0代表取第一个参数,1是第二个参数。
另一种方法是给参数加入注解,mapper 中写注解就代表对应的参数。
三、解决问题
解决 xml 文件为何不加载的问题
在 pom 文件中,配置一段话,使其加载 xml 文件,配置完成后在 application 配置文件中加上一段配置,指定文件位置,加上配置 mapper xml 文件的路径。现在即可加载配置文件,完成接下来的操作。
接下来在 sta 模块中调 ucenter 模块。
在启用类上面加上 EnableFeignClients,做服务发现过程,写完后在里面创建一个 interface,指定服务名字和接口地址,做个调用即可。
将新的 interface 命名为 UcenterClient,在里面写指令
@Compoent
@FeignClient(“service-ucenter”)
public interface UcenterClient {
//查询某一天注册人数
@GetMapping(“/educenter/member/countRegister/{day}”)
public R countRegister(@PathVariable(“day”) String day);
写完后在 sta 中做个调入即可
@Autowired
private StatisticsDailyService staService
//统计某一天注册人数,生成统计数据
@PostMapping(“registerCount/{day}”)
public R registerCount(@PathVariable String day){
staService.registerCount(day);
return R.ok();
在 service 中把方法创建,创建成功后在实现类中把方法实现。
在 staservice 中新建一个包,命名为 client,把 ucenterclient 放入 client 中
在 service 中写
@Autowired
private UcenterClient ucenterClient;
@Override
public void registerCount(String day){
//远程调用得到某一天注册人数
R registerR = ucenterClient.countRegister(day)
IntegercountRegister= (Integer)registerR.getData().get(“countRegister”);
//把获取数据添加数据库,统计分析表里面