一、mongo springboot 连接不上的问题
1.检查spring-boot-starter-data-mongodb和mongo-java-driver的版本。默认的mongo-java-driver可能因为驱动版本过低造成影响。参考:
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.2.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
<version>2.4.4</version>
</dependency>
2.检查application.properties配置文件。特别注意mongodb.authentication-database.conf=admin通常情况下必须将验证数据库的配置设置成admin。 对于mongodb.database.conf配置成自己需要连接的数据库。(网上搜到的URI的检索方式可能因为版本问题,还是会出问题。)
mongodb.host.conf=你的host
mongodb.port.conf=你的端口
mongodb.database.conf=你要连接的数据库名称
mongodb.username.conf=你的账号
mongodb.password.conf=你的密码(明文即可)
mongodb.authentication-database.conf=admin
二、mongo ORM流程
1.创建实体类
1.1 用数据实体类进行对比,在实体类上方用@Document(collection = "你的表名")将实体类和数据表进行绑定。
1.2 用@Field将实体类的属性和mongo数据表中的字段进行绑定。
1.3 使用实体类操作Serializable序列化接口。
例如下面实例demo:
/**
* @author Liu_c
*/
@Document(collection = "wx_users")
public class MongoWxUser implements Serializable {
@Field("_id")
public String id;
@Field("wxid")
public String wxid;
@Field("nickName")
public String nickName;
@Field("account")
public String account;
@Field("name")
public String name;
@Field("head")
public String head;
@Field("VeifyFlag")
public Integer VeifyFlag;
@Field("headerBig")
public String headerBig;
@Field("headerSmall")
public String headerSmall;
@Field("isFriend")
public Integer isFriend;
@Field("py")
public String py;
@Field("remark")
public String remark;
@Field("topIndex")
public Integer topIndex;
@Field("type")
public Integer type;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getWxid() {
return wxid;
}
public void setWxid(String wxid) {
this.wxid = wxid;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getHead() {
return head;
}
public void setHead(String head) {
this.head = head;
}
public Integer getVeifyFlag() {
return VeifyFlag;
}
public void setVeifyFlag(Integer veifyFlag) {
VeifyFlag = veifyFlag;
}
public String getHeaderBig() {
return headerBig;
}
public void setHeaderBig(String headerBig) {
this.headerBig = headerBig;
}
public String getHeaderSmall() {
return headerSmall;
}
public void setHeaderSmall(String headerSmall) {
this.headerSmall = headerSmall;
}
public Integer getIsFriend() {
return isFriend;
}
public void setIsFriend(Integer isFriend) {
this.isFriend = isFriend;
}
public String getPy() {
return py;
}
public void setPy(String py) {
this.py = py;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public Integer getTopIndex() {
return topIndex;
}
public void setTopIndex(Integer topIndex) {
this.topIndex = topIndex;
}
public Integer getType() {
return type;
}
public void setType(Integer type) {
this.type = type;
}
}
2.使用mongoTemplate配置orm, 简单demo 排序分页及简单查询
public Map getMongoUser(List<String> wxIdList, String name, Integer page, Integer limit) {
Query query = new Query();
Criteria criteria = new Criteria();
criteria.norOperator(Criteria.where("wxid").in(errorWxIdList));
if (wxIdList != null && wxIdList.size() > 0) {
criteria.and("wxid").in(wxIdList);
}
if (!StringUtils.isEmpty(name)) {
criteria.and("nickName").regex(name);
}
query.addCriteria(criteria);
Long total = mongoTemplate.count(query, MongoWxUser.class);
List<MongoWxUser> userList = mongoTemplate.find(query.skip((page - 1) * limit).limit(limit).with(new Sort(Sort.Direction.ASC, "nickName")), MongoWxUser.class);
return new HashMap() {{
put("total", total);
put("items", userList);
}};
}