• 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删除依赖重新安装 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    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";
    
    • 1
             //优化a标签另外一个页面打开  target="_blank",
    
    • 1

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

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

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

             location ~ /hosp/ {  //~代表正则匹配,+路径
    			 proxy_pass http://localhost:8201;
             }
            location ~ /cmn/ {
    			 proxy_pass http://localhost:8202;
             }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    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方法 
    
    • 1

    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);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    11.使用nosqlbooster4mongo可视化mongo

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

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

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

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

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

    public void setBookingRule(String bookingRule) {
    	this.bookingRule = JSONObject.parseObject(bookingRule, BookingRule.class);
    }
    
    • 1
    • 2
    • 3
  • 相关阅读:
    知己知彼,验证码对异常机器流量的识别与拦截
    关于electron打包卡在winCodeSign下载问题
    Vue学习笔记
    JavaScript奇淫技巧:20行代码,实现屏幕录像
    回溯法:雀魂启动!
    HTML入门
    HttpURLConnection详解及使用
    Jenkins-CentOS安装jenkins
    el-cascader组件根据最后一级向上找到父级并设置默认值
    uniapp开发小程序项目
  • 原文地址:https://blog.csdn.net/weixin_47039303/article/details/133889883