Springboot项目整合Mongodb数据库

Mongodb在Springboot中的使用:

项目地址:https://github.com/ZiXinZhu/mongodb

1. 在pom.xml中添加MongoDB依赖

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

2. 配置application.properties的Mongodb连接池

	spring.data.mongodb.host=123.207.231.***
	spring.data.mongodb.port=27017
	spring.data.mongodb.database=local

3. service类

	private static final String collectionName="userPO";
    private static final String collectionName_rolePO="rolePO";

    @Autowired
    private MongoTemplate mongoTemplate;
    @Autowired
    private EntityConfig entityConfig;
    /**
     * 【新增】文档如果主键id被占用会抛出异常
     * @return
     */
    public RolePO insert(){
        return mongoTemplate.insert(entityConfig.getRolePO());
    }

    /**
     * 向【指定数据库】新增文档数据
     * @return
     */
    public UserPO insertToDatabases(){
        return mongoTemplate.insert(entityConfig.getUserPO_one(),collectionName);
    }

    /**
     * 【批量】新增文档到指定数据库
     * @return
     */
    public Collection<RolePO> insertForeach(){
        return mongoTemplate.insert(entityConfig.getList(),collectionName_rolePO);
    }

    /**
     * 保存文档如果主键id被占用会【覆盖】旧的文档(save无法做批量保存)
     * @return
     */
    public RolePO save(){
        return mongoTemplate.save(entityConfig.getRolePO_one());
    }

    /**
     * 保存文档数据向【指定数据库】
     * @return
     */
    public UserPO saveToDatabases(){
        return mongoTemplate.save(entityConfig.getUserPO_one(),collectionName);
    }


    /**
     * 删除符合条件的所有数据
     * @return
     */
    public long delete() {
        Query query = new Query(Criteria.where("username").is("qq"));
        DeleteResult result = mongoTemplate.remove(query, UserPO.class);
        long count = result.getDeletedCount();
        return count;
    }

    /**
     * 通过内嵌数据删除符合条件的所有数据
     * @return
     */
    public long deleteContent() {
        Query query = new Query(Criteria.where("roles.roleName").is("老师"));
        DeleteResult result = mongoTemplate.remove(query, UserPO.class);
        long count = result.getDeletedCount();
        return count;
    }

     /*
     * 修改【第一条】符合条件的文档
     * @return
     */
    public long updateOne(){
        Query query= Query.query(Criteria.where("username").is(("zzx")));
        Update update=Update.update("password","654321");
        return mongoTemplate.updateFirst(query,update, UserPO.class).getModifiedCount();
    }

    /**
     * 修改符合内嵌数据条件的文档【批量修改】
     * @return
     */
    public long updateMulti(){
        Query query= Query.query(Criteria.where("roles.roleName").is(("程序员")));
        Update update=Update.update("password","654321").set("time", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
       return mongoTemplate.updateMulti(query,update, UserPO.class,collectionName).getModifiedCount();
    }

    /**
     * 修改第一条符合条件的文档并返回修改前的文档【原子操作】
     * @return
     */
    public UserPO findAndModify(){
        Query query= Query.query(Criteria.where("roles.roleName").is(("程序员")));
        Update update=Update.update("password","123456");
        return mongoTemplate.findAndModify(query,update, UserPO.class,collectionName);
    }
    
    /**
     * 查找符合要求的【所有】数据并返回
     * @return
     */
    public List<UserPO> select(){
        Query query=Query.query(Criteria.where("roles.roleName").is("程序员"));
       return mongoTemplate.find(query,UserPO.class,collectionName);
    }

    /**
     * 查找符合要求的【第一条】数据并返回
     * @return
     */
    public UserPO selectOne(){
        Query query=Query.query(Criteria.where("roles.roleName").is("程序员"));
        return mongoTemplate.findOne(query,UserPO.class,collectionName);
    }

    /**
     * 按照时间从小到大【排序】返回
     * @return
     */
    public List<UserPO> selectSort() {
        Sort sort = Sort.by(Sort.Direction.ASC, "time");
        String time=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date().getTime()-24*60*60*1000);
        return mongoTemplate.find(Query.query(Criteria.where("time").lt(time)).with(sort), UserPO.class);
    }

    /**
     * 按照时间从小到大排序【分页】返回
     * @return
     */
    public List<UserPO> selectPage() {
        //分页查询(第1页每页2行)
        Sort sort = Sort.by(Sort.Direction.ASC, "time");
        Pageable pageable =PageRequest.of(0,2);
        String time=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date().getTime()-24*60*60*1000);
        return mongoTemplate.find(Query.query(Criteria.where("time").lt(time)).with(pageable).with(sort), UserPO.class);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值