目录
一、新建项目springboot-mongodb,项目结构如下

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
</dependency>
spring.data.mongodb.uri=mongodb://账号:密码@mongodb_host:27017/user?authSource=admin&authMechanism=SCRAM-SHA-1
#spring.data.mongodb.authentication-database=admin
#spring.data.mongodb.password=root
#spring.data.mongodb.username=Root123700
import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import java.time.LocalDateTime;
/***
* @date: 2022/7/7
* @author: 微信公众号:深入技术架构
*/
@Data
//指定要对应的文档名(表名)
@Document(collection = "user")
public class User {
/*** 自定义mongo主键 加此注解可自定义主键类型以及自定义自增规则
* 若不加 插入数据数会默认生成 ObjectId 类型的_id 字段
* org.springframework.data.annotation.Id 包下
* mongo库主键字段还是为_id 。不必细究(本文实体类中为id)
*/
@Id
private Long userId;
private String userName;
private LocalDateTime timer;
}
import com.duoduo.springbootmongodb.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.List;
import java.util.regex.Pattern;
/***
* @date: 2022/7/7
* @author: 微信公众号:深入技术架构
*/
@Service
public class UserService {
@Autowired
private MongoTemplate mongoTemplate;
/**
* 新增用户
*/
public int insertUser(User user){
try {
user.setTimer(LocalDateTime.now());
mongoTemplate.insert(user);
return 1;
} catch (Exception e) {
e.printStackTrace();
return -1;
}
}
/**
* 根据Id修改 ,如需其他条件 修改Query 查询条件即可
*/
public int updateUser(User user) {
//通过query根据id查询出对应对象,通过update对象进行修改
Query query = new Query(Criteria.where("userId").is(user.getUserId()));
Update update = new Update().set("userName", user.getUserName());
try {
mongoTemplate.updateFirst(query, update, User.class);
return 1;
} catch (Exception e) {
e.printStackTrace();
return -1;
}
}
/**
* 根据id删除,如需其他删除条件,修改对应Query对象即可
*/
public int removeUser(Long id) {
Query query=new Query(Criteria.where("userId").is(id));
try {
mongoTemplate.remove(query,User.class);
return 1;
} catch (Exception e) {
e.printStackTrace();
return -1;
}
}
/**
* 查询一个
*/
public User findOne(User user) {
Query query = new Query(Criteria.where("userId").is(user.getUserId()));
User one = mongoTemplate.findOne(query, User.class);
return one;
}
/**
* 查询集合-模糊匹配
*/
public List<User> findlike(User user) {
Pattern pattern = Pattern.compile("^.*" + user.getUserName().trim() + ".*$", Pattern.CASE_INSENSITIVE);
Query query = new Query(Criteria.where("userName").regex(pattern));
List<User> userList = mongoTemplate.find(query, User.class);
return userList;
}
/**
* 查询集合-精确匹配
*/
public List<User> findmore(User user) {
Query query = new Query(Criteria.where("userName").is(user.getUserName()));
List<User> users = mongoTemplate.find(query, User.class);
return users;
}
/**
* 倒叙排列查询
*/
public List<User> findtime(User user) {
Query query = new Query();
Query with = query.with(Sort.by(Sort.Direction.DESC, "timer"));
List<User> users = mongoTemplate.find(query, User.class);
return users;
}
/**
* MongoDB分页查询
*/
public List<User> findtimeByPage(User user) {
Query query = new Query();
query.with(Sort.by(Sort.Direction.DESC, "timer"));
query.skip(0).limit(3);
List<User> users = mongoTemplate.find(query, User.class);
return users;
}
}
import com.duoduo.springbootmongodb.entity.User;
import com.duoduo.springbootmongodb.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/***
* @date: 2022/7/7
* @author: 微信公众号:深入技术架构
*/
@RestController
public class UserController {
@Autowired
UserService userService;
@RequestMapping("insertUser/{id}")
public String insertUser(@PathVariable("id") long id){
User user = new User();
user.setUserId(id);
user.setUserName("张三" + id);
userService.insertUser(user);
return "insert succ";
}
@RequestMapping("updateUser")
public String updateUser() {
User user = new User();
user.setUserId(1234L);
user.setUserName("张三");
userService.updateUser(user);
return "update succ";
}
@RequestMapping("removeUser")
public String removeUser(){
userService.removeUser(1234L);
return "remove succ";
}
@RequestMapping("getUser")
public String getUser(){
User user = new User();
user.setUserId(1234L);
return userService.findOne(user).toString();
}
}
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationListener;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.convert.DefaultMongoTypeMapper;
import org.springframework.data.mongodb.core.convert.MappingMongoConverter;
import org.springframework.data.mongodb.core.convert.MongoConverter;
/***
* @date: 2022/7/7
* @author: 微信公众号:深入技术架构
* @description: MongoDB监听配置, 此类若不加,那么插入的一行会默认添加一个_class字段来存储实体类类型 如(com.duoduo.mongodb.entity.User)
*/
@Configuration
public class ApplicationReadyListener implements ApplicationListener<ContextRefreshedEvent> {
@Autowired
MongoTemplate oneMongoTemplate;
private static final String TYPEKEY = "_class";
@Override
public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
MongoConverter converter = oneMongoTemplate.getConverter();
if (converter.getTypeMapper().isTypeKey(TYPEKEY)) {
((MappingMongoConverter) converter).setTypeMapper(new DefaultMongoTypeMapper(null));
}
}
}
http://localhost:8080/insertUser/1234


英文版英文链接关注公众号在“亚特兰蒂斯的回声”中踏上一段难忘的冒险之旅,深入未知的海洋深处。足智多谋的考古学家AriaSeaborne偶然发现了一件古代神器,揭示了一张通往失落之城亚特兰蒂斯的隐藏地图。在她神秘的导师内森·兰登教授的指导和勇敢的冒险家亚历克斯·默瑟的帮助下,阿丽亚开始了一段危险的旅程,以揭开这座传说中城市的真相。他们的冒险之旅带领他们穿越险恶的大海、神秘的岛屿和充满陷阱和谜语的致命迷宫。随着Aria潜在的魔法能力的觉醒,她被睿智勇敢的QueenNeria的幻象所指引,她让她为即将到来的挑战做好准备。三人组揭开亚特兰蒂斯令人惊叹的隐藏文明,并了解到邪恶的巫师马拉卡勋爵试图利用其古
1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,
在VMware16.2.4安装Ubuntu一、安装VMware1.打开VMwareWorkstationPro官网,点击即可进入。2.进入后向下滑动找到Workstation16ProforWindows,点击立即下载。3.下载完成,文件大小615MB,如下图:4.鼠标右击,以管理员身份运行。5.点击下一步6.勾选条款,点击下一步7.先勾选,再点击下一步8.去掉勾选,点击下一步9.点击下一步10.点击安装11.点击许可证12.在百度上搜索VM16许可证,复制填入,然后点击输入即可,亲测有效。13.点击完成14.重启系统,点击是15.双击VMwareWorkstationPro图标,进入虚拟机主
1.1.1 YARN的介绍 为克服Hadoop1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架YARN. ApacheYARN(YetanotherResourceNegotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。 YARN被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通⽤性,同样可以⽀持其他的分布式计算模
我是Ruby新手,并被要求在我们的新项目中使用它。我们还被要求使用Padrino(Sinatra)作为后端/框架。我们被要求使用Rspec进行测试。我一直在寻找可以指导在Padrino上使用RspecforRuby的教程。我得到的主要是引用RoR。但是,我需要RubyonPadrino。请在任何入门/指南/引用/讨论等方面指导我。如有不妥之处请指正。可能是我没有针对我的问题搜索正确的词/短语组合。我正在使用Ruby1.9.3和Padrinov.0.10.6。注意:我还提到了SOquestion,但它没有帮助。 最佳答案 我没用过Pa
3月26日,映宇宙(HK:03700,即“映客”)发布截至2022年12月31日的2022年度业绩财务报告。财报显示,映宇宙2022年的总营收为63.19亿元,较2021年同期的91.76亿元下降31.1%。2022年,映宇宙的经营亏损为4698.7万元,2021年同期则为净利润4.57亿元;期内亏损(净亏损)为1.68亿元,2021年同期的净利润为4.33亿元;非国际财务报告准则经调整净利润为3.88亿元,2021年同期为4.82亿元,同比下降19.6%。 映宇宙在财报中表示,收入减少主要是由于行业竞争加剧,该集团对旗下产品采取更为谨慎的运营策略以应对市场变化。不过,映宇宙的毛利率则有所提升
文章目录1.任务背景2.任务目标3.相关知识点4.任务实操4.1安装配置JDK4.2启动FISCOBCOS4.3下载解压WeBASE-Front4.4拷贝sdk证书文件4.5启动节点4.6访问节点4.7检查运行状态5.任务总结1.任务背景FISCOBCOS其实是有控制台管理工具,用来对区块链系统进行各种管理操作。但是对于初学者来说,还是可视化界面更友好,本节就来介绍WeBASE管理平台,这是一款微众银行开源的自研区块链中间件平台,可以降低区块链使用的门槛,大幅提高区块链应用的开发效率。微众银行是腾讯牵头设立的民营银行,在国内民营银行里还是比较出名的。微众银行参与FISCOBCOS生态建设,一定
这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:FlashMessagesinPartials(Rails3)我正在做MichaelHartl的Railstutorial和listing7.26将flash消息添加到应用程序布局:...">...这很好用。但是,我试图通过在我的部分文件夹中创建一个_flash.html.erb来清理这段代码...">-->...并且比使用......在我的应用程序布局中,我的所有Rspec测试开始失败,每个测试都显示以下消息:Failure/Error:before{visitsignup_path}ActionView:
我正在使用SublimeText2,同时遵循MichaelHartl的RubyonRails教程。可以在http://ruby.railstutorial.org/book/ruby-on-rails-tutorial找到我所指的教程的具体部分。(ctrl+F“list5.26”)。我能够创建规范/支持文件。但是,在尝试创建spec/support/utilities.rb文件时,我收到消息“无法保存~/rails_projects/sample_app/spec/support/utilities.rb”。有人知道为什么会这样吗?SublimeText论坛上有人似乎遇到了完全相同的问
目录一、安装包链接二、安装详细步骤1.安装Wireshark和WinPcap2.安装OracleVMVirtualBox3.安装ensp三、安装后注册四、启动路由器出现40错误怎么解决一、安装包链接二、安装详细步骤链接:https://pan.baidu.com/s/1QbUUYMOMIV2oeIKHWP1SpA?pwd=xftx提取码:xftx1.安装Wireshark和WinPcap找到Wireshark安装包所在文件夹,双击它,按照以下步骤安装。2.安装OracleVMVirtualBox找到OracleVMVirtualBox安装包所在文件夹,双击它,按照以下步骤安装。注:可自定义安装