4.MidBook项目经验之MonogoDB和easyExcel导入导出

news2025/1/23 10:23:33

1.数据字典(固定的数据,省市级有层级关系的)

   //mp表如果没有这个字段,防报错,eleUI需要这个字段
    @TableField(exist =false) 
  //父根据id得到子数据  ,从controller开始自动生成代码-->service
  //hasChildren怎么判断,只需要判断children的parentid的count数量>0就可以了
     //优化循环
     dictList.stream().map(dict -> {dict.setHasChildren(isChildren(dict.getId()))
    //因为是微服务,前端使用统一的访问路径,所以要使用nginx进行转发
    //eleUI版本太低无法显示层级,需要改版本2.12.0,去文件夹node_moudle删除依赖重新安装 

2.easyExcel

  1. 导入依赖
  2. 写实体类 写注解
  3. 代码
    //写
    //传入文件路径和list实体类集合
    EasyExcel.write(filename,UserData.class).sheet(“用户信息”)
    .doWrite(list);
    //读,创建监听器读数据 extends AnalysisEventListener invoke一行一行读数据,after读完做的事,head读取头(0行)
    EasyExcel.read(filename,UserData.class,new ExcelListener()).sheet().doRead();

3.整合easyexcel导出

  1. response对象可以设置头信息导出文件
  2. 复制对象到另外一个不同类型的对象中BeanUtil.copyProperties(dict,dictEeVo)
  3. 通过流写入response
  4. 前端直接调用导出的接口下载文件
    //当前页面打开 ,使用全局变量,以防后期改动
window.location.href=process.env.BASE_API+"/admin/cmn/dict/exportData";
         //优化a标签另外一个页面打开  target="_blank",

4.上传excel 导入数据到数据库

  1. !!!通过excel监听器的无参构造,传入外部的mapper对象插入(listener就不用注入了)
  2. 实体类继承baseEntity设置了自动增长,导致不能插入值,需要直接解除继承复制属性到类
  3. 增加缓存(不经常修改,固定的,经常查询的数据) spring cache+redis(注解一键式生成key)
      //写配置文件和配置类,写在方法上,写在service上
  @Cacheable(value="dict",keyGenerator="keyGenerator")放缓存中,两个拼接成为key 
          @CachePut添加缓存
          @CacheEvict清空指定缓存
        keys *

5.nginx解决多端口访问问题
1.下载nginx打开nginx.conf,放到http里面

         location ~ /hosp/ {  //~代表正则匹配,+路径
			 proxy_pass http://localhost:8201;
         }
        location ~ /cmn/ {
			 proxy_pass http://localhost:8202;
         }

2.前端改baseURI改为nginx的9001的访问端口

6.mongoDB

  1. 安装
    docker pull mongo:latest
    docker run -d --restart=always -p 27017:27017 --name mymongo -v /data/db:/data/db -d mongo
    docker exec -it mymongo /bin/bash
    mongo //新版本mongosh
    show dbs
  2. 优点 对数据库高并发读写海量数据高效存储和访问,数据库可扩展和高可用
  3. 缺点 事务一致性,读写实时性,复杂的sql查询(不能多表查询)
  4. 存储类似json(bson)的对象key和value,c++写的
  5. 与mysql的区别table-> collection , row->document column–>field
  6. 根据对应的规则会生成id
  7. springboot整合MongoDB 配置端口号和地址,实体类 @Document(“User”)
  8. 查询 Query(Criterion.where(“name”).is(“jams”).and(“age”).is(20).and(“aa”).regex(pat));//链式编程构建条件,正则表达式代替模糊查询
    //普通的mongo包
    //分页查询,查出所有页,.skip((pageNo-1)*pageSize).limit(pageSize)
    //修改先查后改
    //删除都返回影响行数
  9. 使用 spring data整合(统一数据库操作方式)
    继承 MongoRepository
    of(user,matcher)
    //分页 PageRequest.of(0,3);
    MongoRepository操作简单,MongoTemplate操作灵活根据使用场景可以互补缺点
    模糊查询

7.医院平台系统Http调用医院后台系统的接口,得到数据

8.上传医院接口,需要MongoDB,service注入对象,然后在controller创建api文件夹专门的对外接口

   //通过controller直接调用service方法 

9.一个系统调用另外一个系统用http工具调用,!!!用req对象接收map转json,再转实体类

10.nb!!!spring data的mongo可以写方法名为read/find/get开头和一定规范
findByHcodeAndId
如:

public interface DepartmentRepository extends MongoRepository<Department,String> {




    Department findDepartmentByHoscodeAndDepcode(String hoscode,String depcode);

    List<Department> findDepartmentByHoscode(String hoscode);
}

11.使用nosqlbooster4mongo可视化mongo

12.数据库的签名进行加密(包括增加时间2023-10-11动态变化使黑客不能破解)与 外界传过来签名对比
图SignEncode的原因.png
在这里插入图片描述

13.传输过程中json数据的base64数据的加号变成空格,(mongo可以存图片,要是存在mysql直接炸了)

14.怎么测试base64图片是否可以显示
写html

<img src="data:image/png;base64,数据"/>

15.set实体为Json数据想要set和get(对象内)转换

public void setBookingRule(String bookingRule) {
	this.bookingRule = JSONObject.parseObject(bookingRule, BookingRule.class);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1102009.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uniapp订单循环列表倒计时

目录 效果图片插件uni-countdown代码最后 效果图片 插件uni-countdown 地址 代码 <template><view class""><!-- 下面循环两个列表 --><view class"item" v-for"(item, index) in listData" :key"index">&…

企业c#语言源代码防泄密解决方案

在当今数字化时代&#xff0c;企业的核心业务往往依赖于软件应用程序。为了保护企业的知识产权和敏感信息&#xff0c;源代码的保密至关重要。对于制造类企业尤其是智能制造业来讲&#xff0c;最近几年是高速发展的时期&#xff0c;很多公司在做工厂流水线设备时&#xff0c;就…

远程VPN登录,IPsec,VPN,win10

windows10 完美解决L2TP无法连接问题 windows10 完美解决L2TP无法连接问题 - 哔哩哔哩

点击切换播放图片

<template><!-- banner组件 --><div class"wrap-box"><div class"image-container"><img :src"currentImage" alt"Image"></div><div class"controls"><div class"btn&q…

Deploy、Service与Ingress

Deployment 自愈 介绍:控制Pod&#xff0c;使Pod拥有多副本&#xff0c;自愈&#xff0c;扩缩容等能力 # 清除所有Pod&#xff0c;比较下面两个命令有何不同效果&#xff1f; kubectl run mynginx --imagenginxkubectl create deployment mytomcat --imagetomcat:8.5.68 # 自…

安防视频监控EasyCVR平台修改默认数据为MySQL,但忘记登录密码该如何解决?

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。音视频流媒体视频监控平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体可实现视频监控直播、视频轮播、视频录…

Windows设置开机自启

Windows设置开机自启 一&#xff1a;添加服务二&#xff1a;添加注册表三&#xff1a;添加本地组策略四&#xff1a;添加启动文件夹五&#xff1a;添加任务计划程序 启动优先级&#xff1a;服务>注册表>启动文件夹>任务计划 一&#xff1a;添加服务 注&#xff1a;命…

代码随想录算法训练营第五十六天| 1143.最长公共子序列 、 1035.不相交的线 、53. 最大子序和 动态规划

代码随想录算法训练营第五十六天| 1143.最长公共子序列 、 1035.不相交的线 、53. 最大子序和 动态规划 文章目录 代码随想录算法训练营第五十六天| 1143.最长公共子序列 、 1035.不相交的线 、53. 最大子序和 动态规划[toc]1143.最长公共子序列1035.不相交的线53. 最大子序和 …

【重磅!】2023亚洲品牌500强在香港隆重发布,后羿品牌与华为、抖音、比亚迪、贵州茅台等入选登榜!

9月25日&#xff0c;由专业品牌评价机构Asiabrand发起主办&#xff0c;中国亚洲经济发展协会、一带一路总商会、《环球时报》社、东盟-中国总商会、亚太第一卫视和香港中小企业发展促进会联合主办的“第18届亚洲品牌盛典”在香港隆重举行。众多国际知名品牌齐聚一堂&#xff0c…

低代码:让软件开发不再遥不可及

近些年来&#xff0c;低代码的发展趋势可谓是蒸蒸日上&#xff01;当然&#xff0c;热门的技术总会伴随着质疑的声音&#xff0c;诞生至今&#xff0c;大家各抒己见&#xff0c;也不乏有针锋相对的意思。这本质上是一件有助于推动低代码发展的事情。 业内的朋友们一定知道&…

Peter算法小课堂—蠕动区间

蠕动区间 蠕动区间&#xff08;尺取法、双游标&#xff09;是一个经典的优化算法。 我们以毛毛虫&#x1f41b;举例说明 具体的&#xff0c;我们看题目 例题 最小区间 这一题&#xff0c;我们用暴力法&#xff0c;复杂度O(N^2) 先给出暴力法代码 int ansn1; for(int tail…

Three.js图案溶解shader

上图提供两种方式溶解显示 上面一排是根据现实的图案红色通道也就是r值进行溶解 下面一排提供额外的溶解纹理 可以通过简单更改呈现多种溶解图案 代码仓库 gitee b站账号&#xff1a;https://space.bilibili.com/374230437 interface IMapPath {map: string;dissolve?: string…

Oracle database 开启归档日志 archivelog

Oracle database 开启归档日志 archivelog 归档日志模式 (Archivelog Mode)。归档日志模式是一种数据库运行模式&#xff0c;它允许数据库将日志文件保存到归档日志目录中&#xff0c;以便在需要时进行恢复和还原操作。通过开启归档日志模式&#xff0c;可以提高数据库的可靠性…

2023年中国康养产业发展历程、65岁以上人口数量及市场规模分析[图]

​​康养产业在中国吸引了越来越多的资本入场&#xff0c;形成了以房地产业、保险金融业、生物及智能制造为核心的科创企业为代表的康养资本三大主力军。康养资本的快速涌入为康养产业注入了活力&#xff0c;具有资本密集特征和高科技含量的庞大康养产业正日趋成熟。 康养产业…

户外运动盛行,运动品牌如何利用软文推广脱颖而出?

全民健康意识的提升和城市居民对亲近自然的渴望带来户外运动的盛行&#xff0c;这也使运动品牌的市场保持强劲发展势头&#xff0c;那么在激烈的市场竞争中&#xff0c;运动品牌应该如何脱颖而出呢&#xff1f;下面就让媒介盒子告诉你&#xff01; 一、 分享户外运动干货 用户…

【vue+nestjs】gitee第三方授权登录【超详细】

项目场景&#xff1a; 前端使用vue3ts 后端使用nestjs 1.配置gitee第三方设置 1.找到账号设置 2.找到数据管理下的第三方应用 3.点击创建&#xff0c;进入配置 2.代码演示 特别注意: 如果你跟我一样是前后端分离的模式开发的&#xff0c;应用回调地址填写的应该是你的前…

MATLAB——神经网络参考代码

欢迎关注“电击小子程高兴的MATLAB小屋” %% I. 清空环境变量 clear all clc %% II. 训练集/测试集产生 %% % 1. 导入数据 load spectra_data.mat %% % 2. 随机产生训练集和测试集 temp randperm(size(NIR,1)); %打乱60个样本排序 % 训练集——50个样本 P_train NIR(…

Bootstrap Collapse的使用

1、效果图&#xff1a; 2、当点击B或C时&#xff0c;A自动收缩&#xff1a; 3、html代码&#xff1a; <div class"panel-group" id"accordion" role"tablist" aria-multiselectable"true"><div class"panel panel-de…

促进国内凝聚态物理理论与统计物理及交叉学科的学术交流及促进学科发展,与龙讯旷腾相约济南

全国凝聚态理论与统计物理学术会议旨在促进国内凝聚态物理理论与统计物理及交叉学科的学术交流及促进学科发展。自创办以来已成功举办20届&#xff0c;对提升我国物理学科的水平发挥了重要作用。第二十一届全国凝聚态理论与统计物理学术会议将于2023年10月20日-22日在济南召开&…

微信批量发朋友圈,多个号同步

近年来&#xff0c;随着数字营销的飞速发展&#xff0c;越来越多的企业开始将客户引至微信&#xff0c;并通过群发广告和发布朋友圈等方式进行产品推广&#xff0c;以实现高效率、低成本和良好的转化效果。随着号多起来了&#xff0c;朋友圈推广工作变得愈发繁琐&#xff0c;需…