配置org.springframework.boot spring-boot-starter-data-mongodb
spring: data: mongodb: host: xxx.xxx.xxx.xxx port: 27017 username: fchan password: '10086' #这里要注意如果是存数字密码需要用字符串包裹 database: test #实际 *** 作db authentication-database: admin #鉴权db
可以看到在MongoProperties中,密码是用char存的,char是16位的,最大可以存65535,那么问题来了,一串数字密码可能正好存到了一个char里,原本可能长度=5的密码变成了长度=1的char,然后验证密码的时候就gg了。
实体类
package com.felix.spring_cloud_one.document; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.document; import java.io.Serializable; @document(collection = "user") public class Userdocument implements Serializable { private static final long serialVersionUID = -6572688910937746087L; @Id //【主键是自动生成的】 private String id; private String userName; private Integer age; private String password; private String address; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getUsername() { return userName; } public void setUsername(String userName) { this.userName = userName; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } }
插入
public String add(){ Userdocument userdocument = new Userdocument(); userdocument.setAge(11); userdocument.setPassword("123"); userdocument.setUsername("小明"); userdocument.setAddress("北京"); Userdocument afterInsert = mongoTemplate.insert(userdocument); return afterInsert.getId(); }
批量插入
public Object batchAdd() { Listlist = new ArrayList<>(); for (int i = 0; i < 10; i ++){ list.add(getUserdocument("大宝贝" + i, i + 10)); } Collection batchResult = mongoTemplate.insert(list, Userdocument.class); return batchResult; }
public Object findById(String id) { Userdocument byId = mongoTemplate.findById(id, Userdocument.class); return byId; } public Object findByCondition(String name, Integer age, String address) { Criteria criteria = new Criteria(); if(Objects.nonNull(name)){ criteria = where("userName").is(name); } if(Objects.nonNull(age)){ criteria = criteria.and("age").is(age); } if(Objects.nonNull(address)){ criteria = criteria.and("address").is(address); } Query query = new Query( criteria ); Listuserdocuments = mongoTemplate.find(query, Userdocument.class); return userdocuments; } public Object findUsersLikeName(String name) { //正则表达式 模糊查询【】 String regex = String.format("%s%s%s", "^.*", name, ".*$"); Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE); //名字符合正则表达式的条件 Query query = new Query(where("userName").regex(pattern)); //mongodb 文档相对应的模型类 List userList = mongoTemplate.find(query, Userdocument.class); return userList; } public Object findUsersPage(String name, Integer pageNo, Integer pageSize) { //构造条件 Query query = new Query(); //正则表达式匹配 String regex = String.format("%s%s%s", "^.*", name, ".*$"); Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE); //添加条件 query.addCriteria(where("userName").regex(pattern)); //开始统计记录数 int totalCount = (int) mongoTemplate.count(query, Userdocument.class); //分页查询 返回结果 List userList = mongoTemplate.find(query.skip((pageNo - 1) * pageSize).limit(pageSize), Userdocument.class); Map pageMap = new HashMap<>(); pageMap.put("list", userList); pageMap.put("totalCount",totalCount); return pageMap; }
更新
public Object updateUser(String id, String name) { //修改一般是查询出来整个文档【document mongodb里面的叫法】 Userdocument user = mongoTemplate.findById(id, Userdocument.class); user.setUsername(name); //修改好相应的数据 根据id进行修改 id是查询出来的 Query query = new Query(where("_id").is(user.getId())); Update update = new Update(); update.set("userName", user.getUsername()); //执行更新 UpdateResult result = mongoTemplate.upsert(query, update, Userdocument.class); return result; }
批量更新
public Object batchUpdate(String name) { Query query = new Query(); query.addCriteria( where("userName").regex("^大宝贝.*$") ); ListneedUpdateList = mongoTemplate.find(query, Userdocument.class); BulkOperations bulkOperations = mongoTemplate.bulkOps(BulkOperations.BulkMode.UNORDERED, Userdocument.class); for (Userdocument userdocument : needUpdateList) { Update update = new Update(); update.set("userName", "大大" + name); bulkOperations.updateOne(new Query().addCriteria(Criteria.where("_id").is(userdocument.getId())), update); } bulkOperations.execute(); return null; }
删除
public Object delete(String id) { //构造条件 根据id删除相应的文档 Query query = new Query(where("_id").is(id)); DeleteResult result = mongoTemplate.remove(query, Userdocument.class); return result; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)