springboot 整合 mongodb 增删改查 第二篇

编程入门 行业动态 更新时间:2024-10-27 02:27:08

1 添加依赖

<dependency><groupId>.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

2 application.yml文件

# 不需要认证的方式
spring:data:mongodb:uri: mongodb://localhost:27017/mydb_1# mongodb需要用户名和密码
spring:data:mongodb:uri: mongodb://user1:123456@localhost:27017/mydb_2

3 pojo类编写

package .huawei.pojo;
import .springframework.data.annotation.Id;
import .springframework.data.mongodb.core.mapping.Document;
import .springframework.data.mongodb.core.mapping.Field;
import java.util.List;//@Document是mongodb驱动库提供设置操作的文档集合名称的注解,这里设置集合为user
@Document("user")
public class User {//mongodb会自动处理成 ObjectId("6082825b29a0083013d6a8ac")的类似样子@Idprivate String id;//普通字段@Fieldprivate Integer userId;@Fieldprivate Integer age;@Fieldprivate String name;@Fieldprivate String phone;@Fieldprivate String[] aihao;@Fieldprivate List<Order> orders;
}

4 测试类编写

import .huawei.JineErpApplication;
import .huawei.pojo.Address;
import .huawei.pojo.Order;
import .huawei.pojo.User;
import .mongodb.client.result.DeleteResult;
import .mongodb.client.result.UpdateResult;
import .bson.types.ObjectId;
import .junit.jupiter.api.Test;
import .springframework.beans.factory.annotation.Autowired;
import .springframework.boot.test.context.SpringBootTest;
import .springframework.data.domain.Sort;
import .springframework.data.mongodb.core.MongoTemplate;
import .springframework.data.mongodb.core.query.Criteria;
import .springframework.data.mongodb.core.query.Query;
import .springframework.data.mongodb.core.query.Update;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;@SpringBootTest(classes = JineErpApplication.class)
public class Test_1 {@Autowiredprivate MongoTemplate mongoTemplate;/*** 添加记录*/@Testpublic void fangfa_1() {User user = new User(9, 93, "夏雨来", "15258742546");/*存到user表类似地,使用insert也可以达到保存数据的作用*/mongoTemplate.save(user);}/*添加记录,复杂类型的数据*/@Testpublic void fangfa_19(){User user = new User(10, 199, "雄霸天下", "15258742546");user.setAihao(new String[]{"money","car","lvren"});ArrayList<Order> orders = new ArrayList<>();orders.add(new Order("20210423163911","汽车",2));orders.add(new Order("20210423163945","房子",5));user.setOrders(orders);mongoTemplate.insert(user);}/*批量添加记录*/@Testpublic void fangfa_2() {List<User> userList = new ArrayList<>();userList.add(new User(2, 12, "张三", "18888888888"));userList.add(new User(3, 21, "李四", "13333333333"));userList.add(new User(4, 55, "王麻子", "14444444444"));userList.add(new User(5, 63, "陈李厚", "15555555555"));userList.add(new User(6, 85, "村民", "16666666666"));//存到 yonghutable 表mongoTemplate.insert(userList, "yonghutable");//存到user表mongoTemplate.insert(userList, User.class);}/*删除数据*/@Testpublic void fangfa_13() {Query query_1 = new Query();query_1.addCriteria(Criteria.where("userId").is(10));DeleteResult remove = mongoTemplate.remove(query_1, User.class);System.out.println(remove);}/*返回查询到的记录数据,同时也删除*/@Testpublic void fangfa_17(){Query query = new Query();query.addCriteria(Criteria.where("_id").is(new ObjectId("60826407a0450757fde19d")));List<User> allAndRemove = mongoTemplate.findAllAndRemove(query, "user");System.out.println(allAndRemove);}/*返回所有数据*/@Testpublic void fangfa_12() {List<User> all = mongoTemplate.findAll(User.class);System.out.println(all);System.out.println(all.size());}/*根据mongodb生成的id查询*/@Testpublic void fangfa_14() {Query query = new Query();query.addCriteria(Criteria.where("_id").is(new ObjectId("60823dd8392f042f46614f10")));List<User> users = mongoTemplate.find(query, User.class);System.out.println(users);}/*查询记录,排序 并 分页显示*/@Testpublic void fangfa_15() {Query query_1 = new Query();query_1.with(Sort.by(Sort.Direction.ASC, "userId"));//从那条记录开始query_1.skip(1);//取多少条记录query_1.limit(3);List<User> users = mongoTemplate.find(query_1, User.class);System.out.println(users);}/*简单 模糊查询用 “regex”*/@Testpublic void fangfa_18(){Query query_1 = new Query(Criteria.where("name").regex("王麻"));List<User> users = mongoTemplate.find(query_1, User.class);System.out.println(users);}/*查询单条数据*/@Testpublic void fangfa_3() {Pattern pattern = Pattern.pile("^.*6$", Pattern.CASE_INSENSITIVE);Query query_1 = new Query(Criteria.where("phone").regex(pattern));User one = mongoTemplate.findOne(query_1, User.class);System.out.println(one);}/*查询多条数据 多个条件查询*/@Testpublic void fangfa_4() {//模糊查询以 ^开始 以$结束 .*相当于Mysql中的%Pattern pattern = Pattern.pile("^1.*$", Pattern.CASE_INSENSITIVE);Query query_1 = new Query(Criteria.where("phone").regex(pattern));//并且 name=张三query_1.addCriteria(Criteria.where("name").is("张三"));//排序query_1.with(Sort.by("age", "userId").descending());List<User> userList = mongoTemplate.find(query_1, User.class, "user");System.out.println(userList);}/*多个条件查询(格式1)*/@Testpublic void fangfa_5() {Query query_1 = new Query();query_1.addCriteria(Criteria.where("name").is("王麻子"));query_1.addCriteria(Criteria.where("phone").is("14444444444"));List<User> userList = mongoTemplate.find(query_1, User.class, "user");System.out.println(userList);}/*多个条件查询(格式2)*/@Testpublic void fangfa_6() {Criteria criteria = new Criteria();criteria.and("name").is("王麻子");criteria.and("phone").is("14444444444");Query query_1 = new Query(criteria);List<User> userList = mongoTemplate.find(query_1, User.class, "user");System.out.println(userList);}/*一个模糊关键字匹配多个字段*/@Testpublic void fangfa_7() {Pattern pattern = Pattern.pile("^.*222$", Pattern.CASE_INSENSITIVE);Criteria criteria = new Criteria();//phone以222结尾的 或者 name以222结尾的criteria.orOperator(Criteria.where("phone").regex(pattern),Criteria.where("name").regex(pattern));//同时满足 phone以222结尾的,和name以222结尾的criteria.andOperator(Criteria.where("phone").regex(pattern),Criteria.where("name").regex(pattern));Query query_1 = new Query(criteria);List<User> userList = mongoTemplate.find(query_1, User.class, "user");System.out.println(userList);}/*更新age汪上递增5*/@Testpublic void fangfa_16(){Query query = new Query();Update update = new Update();update.inc("age",5);UpdateResult updateResult = mongoTemplate.updateMulti(query, update, User.class);System.out.println(updateResult);}/*更新语法:public UpdateResult update(Query query, UpdateDefinition update, Class<?> entityClass)query参数是查询条件对象,update是需要更新的数据对象,entityClass就是对应的JavaBean对象(文档集合类)*/@Testpublic void fangfa_8() {Query query = new Query();query.addCriteria(Criteria.where("userId").is(7));Update update = new Update();update.set("name", "飘过");update.set("other", "顶起");//查询,更新第一条UpdateResult updateResult_1 = mongoTemplate.updateFirst(query, update, User.class);//查询到的,全部更新UpdateResult updateResult_2 = mongoTemplate.updateMulti(query, update, User.class);//有则更新,没有则新增UpdateResult updateResult_3 = mongoTemplate.upsert(query, update, User.class);System.out.println(updateResult_1);}/*添加内嵌文档数据(有则直接加入,没有则进行新增)*/@Testpublic void fangfa_9() {Query query = Query.query(Criteria.where("userId").is(10));//address列为复杂类型,存的是json数据Address dizhi = new Address(1, "湖北", "武汉");Update update = new Update();update.addToSet("address", dizhi);UpdateResult upsert = mongoTemplate.upsert(query, update, User.class);System.out.println(upsert);}/*修改内嵌文档中数据*/@Testpublic void fangfa_10() {/*address列为复杂类型,存的是json数据查询userId为9并且其中address的addressId为1的*/Query query = Query.query(Criteria.where("userId").is(10).and("address.addressId").is(1));Update update = Update.update("address.$.shi", "神农架");//普通类型update.set("address.$.wendu", 33.1);//针对数组类型update.addToSet("address.$.shidu", 99);UpdateResult upsert = mongoTemplate.upsert(query, update, User.class);System.out.println(upsert);}/*删除内嵌文档中数据*/@Testpublic void fangfa_11() {Query query = Query.query(Criteria.where("userId").is(10));Update update = new Update();update.unset("address");UpdateResult updateResult = mongoTemplate.updateFirst(query, update, "user");System.out.println(updateResult);}
}

 

更多推荐

第二篇,springboot,mongodb

本文发布于:2023-05-31 12:02:28,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/391376.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:第二篇   springboot   mongodb

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!