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

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.mzph.cn/news/109906.shtml

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

相关文章

vue.js - 断开发送的请求,解决接口重复请求数据错误问题(vue中axios多次相同请求中断上一个)

描述 进入页面时第一个接口还在请求,立即切换tab请求第二个接口。但是第二个接口响应比第一个接口响应快,页面展示的时第一个接口的数据,如图: 解决方法 判断如果是相同的接

visual studio安装时候修改共享组件、工具和SDK路径方法

安装了VsStudio后,如果自己修改了Shared路径&#xff0c;当卸载旧版本&#xff0c;需要安装新版本时发现&#xff0c;之前的Shared路径无法进行修改&#xff0c;这就很坑爹了&#xff0c;因为我运行flutter程序的时候&#xff0c;报错找不到windows sdk的位置&#xff0c;所以我…

怎么把flac音频变为mp3?

怎么把flac音频变为mp3&#xff1f;FLAC音频格式在许多平台和应用程序中都得到支持和应用。FLAC音频格式被广泛支持和应用。许多平台、设备和应用程序都支持FLAC格式&#xff0c;如Windows、macOS和Linux操作系统、各种音乐播放器软件、智能手机和平板电脑、在线音乐平台和流媒…

c++小知识

内联函数 inline 用来替换宏函数 不能分文件编辑 在c语言中#define NULL 0在c中使用nullptr表示空指针class内存的大小计算规则使用的是内存对齐 没有成员&#xff0c;但是还有1个字节&#xff0c;我们使用这个来标记他是个类 类成员函数不存在于类中 为什么每个对象使用的…

基于Linux安装Hive

Hive安装包下载地址 Index of /dist/hive 上传解压 [rootmaster opt]# cd /usr/local/ [rootmaster local]# tar -zxvf /opt/apache-hive-3.1.2-bin.tar.gz重命名及更改权限 mv apache-hive-3.1.2-bin hivechown -R hadoop:hadoop hive配置环境变量 #编辑配置 vi /etc/pro…

云安全—云计算基础

0x00 前言 学习云安全&#xff0c;那么必然要对云计算相关的内容进行学习和了解&#xff0c;所以云安全会分为两个部分来进行&#xff0c;首先是云计算先关的内容。 0x01 云计算 广泛传播 云计算最早大范围传播是2006年&#xff0c;8月&#xff0c;在圣何塞【1】举办的SES&a…

SpringMVC的响应处理

目录 传统同步业务数据的响应 请求资源转发 请求资源重定向 响应数据模型 直接回写数据给客户端 前后端分离异步业务数据响应 在前面的文章中&#xff0c;我们已经介绍了Spring接收请求的部分&#xff0c;接下来看Spring如何给客户端响应数据 传统同步业务数据的响应 准…

Redis数据结构之quicklist

前言 为了节省内存&#xff0c;Redis 推出了 ziplist 数据类型&#xff0c;采用一种更加紧凑的方式来存储 hash、zset 元素。因为查找的时间复杂度是 O(N)&#xff0c;且写入需要重新分配内存&#xff0c;所以它仅适用于小数据量的存储&#xff0c;而且它还存在 连锁更新 的风…

34 机器学习(二):数据准备|knn

文章目录 数据准备数据下载数据切割转换器估计器 kNN正常的流程网格多折交叉训练原理讲解距离度量欧式距离(Euclidean Distance)曼哈顿距离(Manhattan Distance)切比雪夫距离 (Chebyshev Distance)还有一些自定义的距离 就请读者自行研究 再识K-近邻算法API选择n邻居的思辨总结…

C# Winform编程(5)菜单栏和工具栏

菜单和菜单组件 添加菜单编辑菜单菜单栏和工具栏 添加菜单 将MenuStrip控件拖拽到Form窗体顶部添加菜单 编辑菜单 添加菜单项&#xff0c;编辑菜单属性等功能。 右键单击已添加的菜单项可以弹出右键菜单&#xff1a; 可以设置菜单图标&#xff0c;使能菜单&#xff0c;显示…

亚马逊,shopee,lazada流量攻略:测评补单是提升排名不可或缺的利器

亚马逊卖家为什么一定要测评补单&#xff0c;今年不测评补单的卖家会很惨&#xff0c;不要抬杠&#xff0c;听完林哥给你分析&#xff0c;如果你感觉不对在抬杠不迟 1.亚马逊的广告成本越来越贵而且单纯靠砸广告做排名&#xff0c;你是不是发现广告一停排名就往下掉&#xff0…

XMLHttpRequest的readyState状态值

readyState状态值 功能&#xff1a;在Ajax请求与服务器响应中&#xff0c;是通过XMLHttpRequest对象完成。而readyState状态值则是记录XMLHttpRequest对象在这个过程进行变化的状态。 readyState状态值readyState分别有5个状态值 0&#xff1a;请求未初始化&#xff1a;在未点击…

学会Docker之---应用场景和基本操作

实体机、VM和容器 实体机&#xff08;Physical Machine&#xff09;是指实际的物理设备&#xff0c;例如我们常见的计算机主机、服务器等。它们是由硬件组成&#xff0c;可以直接运行操作系统和应用程序。 虚拟机&#xff08;Virtual Machine&#xff09;是在一台物理机上通过…

萝卜刀真的太危险了,于是我用Cocos做了一个

点击上方亿元程序员关注和★星标 引言 大家好&#xff0c;我是亿元程序员&#xff0c;一位有着8年游戏行业经验的主程。 昨天&#xff0c;我女儿和我说想买一把萝卜刀&#xff0c;众所周知&#xff0c;萝卜刀在潜意识当中是存在一定的危险的&#xff0c;所以我果断拒绝了&…

同城代驾开源版小程序开发

同城代驾开源版小程序开发 功能特性描述&#xff1a; 定价模式&#xff1a;本系统支持灵活的计价模式&#xff0c;包括白天和夜晚的起步价、起步里程、每公里价以及超时费用&#xff0c;从而满足不同时段的定价需求。 实时路径计算&#xff1a;通过集成腾讯地图的软件开发工…

2023秋招华为技术岗线上面试经历

2023/10/16 个人情况&#xff1a;博士&#xff0c;预计2024年毕业&#xff0c;参加了2023秋招&#xff0c;华为应聘到3面主管面。 下面按招聘流程顺序&#xff0c;记录我的面试经历。因为想写详细一点的独立文章&#xff0c;所以想来想去还是放到CSDN上。 1. 宣讲会 宣讲会…

给cmd控制台程序 套壳 美化

给cmd控制台程序套壳美化&#xff0c;可以获取程序的标准输出和报错信息。 # _*_ coding: utf-8 _*_ """ 控制台程序启动器&#xff0c;杜绝黑窗口。 Time: 2023/10/18 15:28 Author: Jyun Version: V 0.1 File: main.py Blog: https://ctrlcv.…

文心一言 4.0 ERNIE-Bot 4.0 :ERNIE-Bot 4.0 大模型深度测试体验报告

本心、输入输出、结果 文章目录 文心一言 4.0 ERNIE-Bot 4.0 &#xff1a;ERNIE-Bot 4.0 大模型深度测试体验报告前言相关跳转文心一言 4.0 ERNIE-Bot 4.0 接口简介Bash 请求示例代码Windows 模式使用 Python 请求如果直接使用官方提供的代码文心一言 4.0 ERNIE-Bot 4.0 API 在…

【Spring Cloud】网关Gateway的请求过滤工厂RequestRateLimiterGatewayFilterFactory

概念 关于微服务网关Gateway中有几十种过滤工厂&#xff0c;这一篇博文记录的是关于请求限流过滤工厂&#xff0c;也就是标题中的RequestRateLimiterGatewayFilterFactory。这个路由过滤工厂是用来判断当前请求是否应该被处理&#xff0c;如果不会被处理就会返回HTTP状态码为42…

【LeetCode刷题(数据结构)】:给定一个链表 每个节点包含一个额外增加的随机指针 该指针可以指向链表中的任何节点或空节点 要求返回这个链表的深度拷贝

给你一个长度为 n 的链表&#xff0c;每个节点包含一个额外增加的随机指针 random &#xff0c;该指针可以指向链表中的任何节点或空节点 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成&#xff0c;其中每个新节点的值都设为其对应的原节点的值。新节点的 next…