spring连接mongo失败记录 及 orm实践

一、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);
    }};
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值