基于Java开发的数据大屏展示程序

该程序采用SpringBoot、Mybatis和Nacos构建,使用MongoDB作为数据库,Redis进行缓存。通过Controller层的缓存管理,保证数据安全。当前端每5分钟请求数据时,若数据库查询成功则更新Redis,否则返回Redis中的缓存数据。Service和Mapper层处理业务逻辑和数据库查询。
摘要由CSDN通过智能技术生成

数据大屏开发文档

一、开发目标

​ 本程序为一块不停刷新数据的大屏幕的Java后台程序。前端5分钟刷新一次,需要向后台接口请求数据展示到前段。

二、程序架构

程序框架:Spring Boot、Mybatis、

注册中心:nacos

数据库:mogdb

中间件:redis

三、具体实现

​ 整体为 MVC三层结构,为了防止程序出错,在controller层做了redis缓存。

​ 这里使用redis做缓存基于以下2点考虑

  1. redis做缓存使缓存便于管理,可以使用外部工具看到缓存的数据。

  2. 数据与程序本身独立,如果程序宕机了,数据还是在的,安全性更高一些。

下面通过一个接口来展示整个程序的实现

controller层

@RestController
@AllArgsConstructor //自动注入bean的全参数默认实现
@RequestMapping("/large")
public class ShowController {
	
	ShowService showService;

	RedisUtil redisUtil;
    
    /**
	 *  缓存名称 
	 */
	public static final String ACCUMULATED_PREMIUM_CACHE="large-screen:AccumulatedPremium";

	/**
	 * 查询数据
	 */
	@GetMapping("/AccumulatedPremium")
	public R getAccumulatedPremium(){
        //查询数据
		Map<String,Object> accumulatedPremiumVo = showService.getAccumulatedPremiumVo();
        //如果查询到数据,放入redis缓存中,然后向前段返回数据
		if (accumulatedPremiumVo!=null){
			redisUtil.set(ACCUMULATED_PREMIUM_CACHE,accumulatedPremiumVo);
			return R.data(200,accumulatedPremiumVo,"成功");
		}
        //如果程序走到这里,说明上面没有返回,从redis中查询缓存数据
		Object o = redisUtil.get(LargeScreenConstant.ACCUMULATED_PREMIUM_CACHE);
        //缓存数据不为空,返回查询到的缓存数据
		if (o!=null){
			return R.data(200,o,"数据库查询错误,获取redis缓存数据");
		}
		return R.data(500,null,"失败");
	}
}

Service层

//接口
public interface ShowService {
	Map<String,Object> getAccumulatedPremiumVo();
}

//实现
@Service
@Slf4j
public class ShowServiceImpl implements ShowService {
	@Autowired
	showMapper showMapper;

	@Override
	public Map<String,Object> getAccumulatedPremiumVo() {
		try {
			return showMapper.getTotalAccumulatedPremium();
		}catch (Exception e){
			log.error("查询异常"+e.getMessage());
		}
		return null;
	}

DAO层

​ dao层返回的直接是一个map对象,刚开始开发时,每个接口都对应出了一个pojo对象,但是后续接口频繁修改,导致pojo也不停的修改。但好在查询到的数据几乎都不需要处理,索性直接把pojo删除,sql中把每个字段都写好对应的别名,这样就不需要pojo类了。直接返回map给前端。

  • mapper类
@Mapper
public interface showMapper {
	Map<String,Object> getTotalAccumulatedPremium();
}
  • mapper.xml
    <select id="getTotalAccumulatedPremium" resultType="java.util.HashMap">
        select a.statdate,sum(allprem) allprem
        from gjsj_app.fact_view_dp_prem_statistics a
        where a.statdate = to_char(sysdate,'yyyymmdd')
        group by a.statdate ;
    </select>

​ nacos 的数据库配置,和spring的application.yml不在赘述。

​ 以上就是本程序的全部实现。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值