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
- 导入依赖
- 写实体类 写注解
- 代码
//写
//传入文件路径和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导出
- response对象可以设置头信息导出文件
- 复制对象到另外一个不同类型的对象中BeanUtil.copyProperties(dict,dictEeVo)
- 通过流写入response
- 前端直接调用导出的接口下载文件
//当前页面打开 ,使用全局变量,以防后期改动
window.location.href=process.env.BASE_API+"/admin/cmn/dict/exportData";
//优化a标签另外一个页面打开 target="_blank",
4.上传excel 导入数据到数据库
- !!!通过excel监听器的无参构造,传入外部的mapper对象插入(listener就不用注入了)
- 实体类继承baseEntity设置了自动增长,导致不能插入值,需要直接解除继承复制属性到类
- 增加缓存(不经常修改,固定的,经常查询的数据) 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
- 安装
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- 优点 对数据库高并发读写海量数据高效存储和访问,数据库可扩展和高可用
- 缺点 事务一致性,读写实时性,复杂的sql查询(不能多表查询)
- 存储类似json(bson)的对象key和value,c++写的
- 与mysql的区别table-> collection , row->document column–>field
- 根据对应的规则会生成id
- springboot整合MongoDB 配置端口号和地址,实体类 @Document(“User”)
- 查询 Query(Criterion.where(“name”).is(“jams”).and(“age”).is(20).and(“aa”).regex(pat));//链式编程构建条件,正则表达式代替模糊查询
//普通的mongo包
//分页查询,查出所有页,.skip((pageNo-1)*pageSize).limit(pageSize)
//修改先查后改
//删除都返回影响行数- 使用 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);
}