java (springboot) 连接Mongodb数据库 案例 以及常用增删改查语法

1、建立连接

添加配置信息 application-dev.properties

spring.data.mongodb.host=		ip地址
spring.data.mongodb.port=		端口号
spring.data.mongodb.database=		数据库名
2、启动类加扫描包注解
@EnableMongoRepositories( basePackages={"com. ? .mongodb.dao"})
3、案例

3.1、po实体层

import lombok.Builder;
import lombok.Data;
import org.springframework.data.mongodb.core.mapping.Document;

import javax.persistence.Id;
import java.io.Serializable;
import java.util.Date;
import com.mongodb.MongoClient;

@Data
@Document(collection = "Po")
@Builder
public class Po implements Serializable{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = -7412369913295735975L;
	
	@Id
	private String id;
	private String nick;
	private String page;//url的别名
	private String url;//page的别名
	private Long pv;
	private Long uv;
	private Date createDate;
	private Long dateNo;

	public static long getSerialVersionUID() {
		return serialVersionUID;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

//	……	get/set	……
}

3.2、dao层
方法声明


import java.util.List;

public interface PoDao {

    /**
     *   查找 某用户 浏览的页面路径 集合
     * @param nick
     * @return
     */
    List<String> listnickPage(String nick);

    /**
     *   判断 某用户 是否浏览过某页面
     * @return
     */
    Boolean isnickPage(String nick,String page);
}

方法实现

import com.mongodb.Mongo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
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.stereotype.Repository;

import java.util.ArrayList;
import java.util.List;

@Repository("PoDao")
@Slf4j
public class PoDaoImpl implements PoDao {

    @Autowired
    private MongoTemplate mongoTemplate;
//      MongoTemplate mongoTemplate = new MongoTemplate(new Mongo(),"promote");

    /**
     *   查找 某用户 浏览的页面路径 集合
     * @param nick
     * @return
     */
    @Override
    public List<String> listnickPage(String nick) {
        log.info("\n\n"+nick+"浏览过的页面集合");
        Query query=new Query();
//        Criteria criteria=new Criteria();
//        query.addCriteria(criteria);

        //根据 nick 查询
        query.addCriteria(Criteria.where("nick").is(nick));
//        query.fields().include("nick").include("create").exclude("_id");
        List<Po> usernicks = mongoTemplate.find(query, Po.class,"Po");

        List<String> urls = new ArrayList<>();
        for (Po s : usernicks
             ) {
//            System.out.println(s);
            urls.add(s.getUrl());
        }
        return urls;
    }

    /**
     *   判断 某用户 是否浏览过某页面
     * @return
     */
    @Override
    public Boolean isnickPage(String nick, String page) {
        log.info("\n\n"+nick+"是否浏览过这个页面:"+page);
        Query query=new Query();
        Criteria criteria=new Criteria();

        criteria.and("nick").is(nick).and("url").is(page);

        query.addCriteria(criteria);

//        query.fields().include("nick").include("create").exclude("_id");

        Po Po = mongoTemplate.findOne(query, Po.class,"Po");
        //int count = list.size();
//        System.out.println("count:"+count);
        //log.info(nick+"用户浏览这个"+page+"页面的次数:"+count);
        if(Po!=null){
            return true;
        }

        else return false;
    }
}

3.3、service层

import java.util.List;

public interface PoService {
    /**
     *   查找 某用户 浏览的页面路径 集合
     * @param nick
     * @return
     */
    List<String> listnickPage(String nick);

    /**
     *   判断 某用户 是否浏览过某页面
     * @return
     */
    Boolean isnickPage(String nick,String page);
}
import com.bbt.oper.mongodb.dao.PoDao;
import com.bbt.oper.mongodb.service.PoService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

@Slf4j
@Service("PoService")
public class PoServiceImpl implements PoService {

    @Resource
    private PoDao PoDao;

    /**
     *   查找 某用户 浏览的页面路径 集合
     * @param nick
     * @return
     */
    @Override
    public List<String> listnickPage(String nick) {
        return PoDao.listnickPage(nick);
    }

    /**
     *   判断 某用户 是否浏览过某页面
     * @return
     */
    @Override
    public Boolean isnickPage(String nick, String page) {
        log.info("判断 某用户 是否浏览过某页面\t\tPoService");
        return PoDao.isnickPage(nick,page);
    }
}

3.4、业务调用

@Resource
    PoService PoService;


	Boolean flag = PoService.isnickPage(model.getNick(), page);     //促这个用户是否浏览过     page  页面
4、常用语法
@Autowired
    private MongoTemplate mongoTemplate;

4.1、插入

mongoTemplate.insert(poObject);

4.2、查找
查所有:

mongoTemplate.findAll(PoObject.class);

根据 id 查找单个

PoObject poObject = mongoTemplate.findById(id,PoObject.class);

分页查询

Query query = new Query();
    query.skip("跳过多少的数据再开始查询").limit("每一页的数据的个数");
    mongoTemplate.find(query, PoObject.class);

条件查询(大于小于)

Criteria criteria = Criteria.where("判断的字段").gte(min).lte(max);
   Query query = new Query(criteria);
  mongoTemplate.find(query, PoObject.class);

模糊查询

query.addCriteria(Criteria.where("name").regex(PoObject.getName()));

4.3、更新

mongoTemplate.updateFirst(query(where("name").is("老王")),Update.update("name","老程"),PoObject.class);

4.4、删除

mongoTemplate.remove(poObject);

要了解更多可以仔细看看这三个类
Criteria、Query、MongoTemplate

一步入十坑,一日落万发……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

#老程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值