当前位置: 首页 > news >正文

医院信息化与智能化系统(12)

医院信息化与智能化系统(12)

这里只描述对应过程,和可能遇到的问题及解决办法以及对应的参考链接,并不会直接每一步详细配置
如果你想通过文字描述或代码画流程图,可以试试PlantUML,告诉GPT你的文件结构,让他给你对应的代码

预约挂号微服务模块搭建

前端知识点补充,此章节不会详细讲具体前端的每个知识点

1、MongoDB基本概念与操作

SQL术语/概念MongoDB术语/概念解释/说明
databasedatabase数据库
tablecollection数据库表/集合
rowdocument数据记录行/文档
columnfield数据字段/域
indexindex索引
table joins表连接,MongoDB不支持
primary keyprimary key主键,MongoDB自动将_id字段设置为主键

文档

MongoDB 的文档采用 BSON(Binary JSON)格式存储,允许在同一个集合中的不同文档具有不同的结构。每个文档是一组键值对,

灵活性:在关系型数据库中,每个表的结构是固定的,所有行必须包含相同的列。而在 MongoDB 中,集合中的文档可以有不同的字段,这为数据建模提供了极大的灵活性。

不同数据类型:即使在同一个文档中,同一个字段也可以存储不同的数据类型,例如字符串、数字、数组或对象。

// 文档 1
{"_id": 1,"name": "Alice","age": 30,"email": "alice@example.com","address": {"city": "New York","zip": "10001"}
}
// 文档 2
{"_id": 2,"name": "Bob","age": 25,"email": "bob@example.com","hobbies": ["reading", "traveling"]
}

集合

在 MongoDB 中,集合(Collection) 类似于关系型数据库中的,但有显著的不同。集合是 MongoDB 中数据存储的基本单位,用于存储一组文档

2、Spring boot集成mongodb

新建一个项目学习mongodb

正常创建maven项目,导入依赖,在application.properties文件添加配置:

spring.data.mongodb.uri=mongodb://192.168.x.xx:27017/test

接着创建对应的实体类,在实体类上添加注解@Document("User"),用于将 Java 类映射到 MongoDB 集合;同时,在字段id上添加@Id 注解用于标记该字段为文档的主键(唯一标识符)。

spring-data-mongodb提供了MongoTemplateMongoRepository两种方式访问mongodb,MongoRepository操作简单,MongoTemplate操作灵活。

MongoTemplate操作

  1. 添加操作
 //添加操作@Testpublic void demo1(){User user = new User();user.setAge(20);user.setName("test");user.setEmail("123@qq.com");User user1 = mongoTemplate.insert(user);System.out.println(user1);}
  1. 查询操作
    @Testpublic void findALL(){List<User> all = mongoTemplate.findAll(User.class);System.out.println(all);}@Testpublic void findId(){User byId = mongoTemplate.findById("671f886ad9fb3d735196e141", User.class);System.out.println(byId);}
  1. 条件查询
    @Testpublic void findUserList(){//查找name为“test”,同时age为20的结果Query query = new Query(Criteria.where("name").is("test").and("age").is(20));List<User> users = mongoTemplate.find(query, User.class);System.out.println(users);}
  1. 模糊查询

String regex = String.format("%s%s%s", "^.*", name, ".*$");:创建一个正则表达式,用于匹配包含 name 的字符串。该表达式的组成部分为:

  • ^.*:表示字符串开头的任意字符(包括零个字符)。
  • name:插入变量 name 的值。
  • .*$:表示字符串结尾的任意字符(包括零个字符)。

Pattern.compile编译正则表达式,创建一个不区分大小写的正则表达式模式 pattern。

Query(Criteria.where("name").regex(pattern)):创建一个MongoDB查询对象,指定要查找的字段为 name,并应用前面定义的正则表达式 pattern

    @Testpublic void findLikeUserList(){String name = "est";String regex = String.format("%s%s%s", "^.*", name, ".*$");Pattern pattern = Pattern.compile(regex,Pattern.CASE_INSENSITIVE);Query query = new Query(Criteria.where("name").regex(pattern));List<User> users = mongoTemplate.find(query, User.class);System.out.println(users);}
  1. 分页查询
    @Testpublic void findPageUserList(){int pageNo = 1;int pageSize = 3;String name = "est";//条件构建String regex = String.format("%s%s%s", "^.*", name, ".*$");Pattern pattern = Pattern.compile(regex,Pattern.CASE_INSENSITIVE);Query query = new Query(Criteria.where("name").regex(pattern));//分页构建//查询记录数long count = mongoTemplate.count(query, User.class);//分页List<User> users = mongoTemplate.find(query.skip((pageNo - 1) * pageSize).limit(pageSize), User.class);
  1. 修改操作
 @Testpublic void updateUser(){//根据id查询User user = mongoTemplate.findById("67202a8ef326a746bb6b5740", User.class);//设置修改值user.setName("test_1");user.setAge(50);user.setEmail("000@qq.com");//调用方法实现修改Query query = new Query(Criteria.where("_id").is(user.getId()));Update update = new Update();update.set("name", user.getName());update.set("age", user.getAge());update.set("email", user.getEmail());UpdateResult upsert = mongoTemplate.upsert(query, update, User.class);//影响行数long count = upsert.getModifiedCount();}
  1. 删除操作
    @Testpublic void deleteUser(){Query query = new Query(Criteria.where("_id").is("67202a8ef326a746bb6b5740"));DeleteResult remove = mongoTemplate.remove(query, User.class);long count = remove.getDeletedCount();System.out.println(count);}

基于MongoRepository开发CRUD

  1. 创建接口(interface),继承MongoRepository
  2. 在测试类创建该接口的实现类
  3. 测试方法
//添加操作@Testpublic void create(){User user = new User();user.setAge(30);user.setName("张三");user.setEmail("3332200@qq.com");User user1 = userRepository.save(user);System.out.println(user1);}//全部查询@Testpublic void findALL(){List<User> all = userRepository.findAll();System.out.println(all);}//根据ID查询@Testpublic void findId(){User user = userRepository.findById("672038dfcd0e1e6c388b7316").get();System.out.println(user);}//条件查询@Testpublic void findUserList(){User user = new User();user.setName("张三");user.setAge(20);Example<User> userExample = Example.of(user);List<User> userList = userRepository.findAll(userExample);System.out.println(userList);}//模糊查询@Testpublic void findLikeUserList(){//创建匹配器,即如何使用查询条件ExampleMatcher matcher = ExampleMatcher.matching() //构建对象//匹配规则.withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING) //改变默认字符串匹配方式:模糊查询.withIgnoreCase(true); //改变默认大小写忽略方式:忽略大小写User user = new User();user.setName("三");Example<User> userExample = Example.of(user, matcher);List<User> userList = userRepository.findAll(userExample);System.out.println(userList);}//分页查询@Testpublic void findPageUserList(){Sort sort = Sort.by(Sort.Direction.DESC, "age");//设置分页参数,0 代表第一页Pageable pageable = PageRequest.of(0, 3, sort);//创建匹配器,即如何使用查询条件ExampleMatcher matcher = ExampleMatcher.matching() //构建对象.withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING) //改变默认字符串匹配方式:模糊查询.withIgnoreCase(true); //改变默认大小写忽略方式:忽略大小写User user = new User();user.setName("三");Example<User> userExample = Example.of(user, matcher);//创建实例Example<User> example = Example.of(user, matcher);Page<User> pages = userRepository.findAll(example, pageable);System.out.println(pages);}//修改操作@Testpublic void updateUser(){User user = userRepository.findById("672038dfcd0e1e6c388b7316").get();user.setName("张三_1");user.setAge(25);user.setEmail("883220990@qq.com");User save = userRepository.save(user);System.out.println(save);}//删除操作@Testpublic void deleteUser(){userRepository.deleteById("672038dfcd0e1e6c388b7316");}

http://www.mrgr.cn/news/60969.html

相关文章:

  • 公路水运工程企业安全员A类题库分享
  • (免费领源码)基于java#springboot#mysql微信小程序的鲜花商城84731-计算机毕设 原创
  • 计算机专业就业方向和前景,零基础入门到精通,收藏这篇就够了
  • 地球上的中国:世界地图概览
  • 基于微信小程序的公务员考试信息查询系统+LW示例参考
  • 期货海龟策略,年化27.67% | 健康无碍,财富可解千愁
  • 您的ip地址不在允许范围内怎么解决
  • 短信登录的实现-redis和session的比较
  • JVM—类加载器、双亲委派机制
  • Mysql管理(常用工具与系统数据库)
  • 2024年诺贝尔物理学奖颁发给机器学习与神经网络领域的研究者的意义
  • IDA 修改完汇编代码后,为什么还是调试时还是原来的代码?因为Apply patches to … 另一个exe文件了
  • css之loading旋转加载
  • 论文阅读:三星-TinyClick
  • 分布式数据库技术金融应用规范技术架构
  • SMARTFORMS 条形码CODE39有校验位
  • uniapp的IOS证书申请(测试和正式环境)及UDID配置流程
  • 智能听诊器:宠物健康的守护者
  • iptables限制docker端口禁止某台主机访问(使用DOCKER链和raw表的PREROUTING链)
  • 企业网站cms 企业网站源码模板