Springboot+MongoDB

概述:可以使用MongoTemplate或继承MongoRepository接口

1. MongoRepository接口

若继承MongoRepository接口可以实现简单的增删改查操作,不用写相应的dao层代码

// MongoRepository<T, ID> T为实体类,ID为主键ID
public interface StdRepository extends MongoRepository<StdDto,Long> {
}
 

2. MongoTemplate

核心操作类:Query和Criteria

Query:查询类

Criteria:条件类

(1)由于mongodb可以不先建立集合直接插入数据(insert时可创建集合),当使用insert插入时集合会多出一个_class字段,用于记录java对应的实体类,可创建Bean来代替默认的mongotemplate。

@Configuration
public class MongoConfiguration {
    @Autowired
    private MongoDatabaseFactorySupport mongoDatabaseFactorySupport;
    @Autowired
    private MappingMongoConverter mappingMongoConverter;

    @Bean
    public MongoTemplate mongoTemplate(){
        mappingMongoConverter.setTypeMapper(new DefaultMongoTypeMapper(null));
        MongoTemplate mongoTemplate = new MongoTemplate(mongoDatabaseFactorySupport,mappingMongoConverter);
        return mongoTemplate;
    }
}

(2)数据库中的字段和实体类中的字段不一致

可在实体类使用@Filed("")完成映射,若未映射则读取不到正确的值

@Field("getValue")
private String getValue;

(3)查询

@Resource
private MongoTemplate template;

Public List<Student> findByName(String name){
    Query query = new Query();
    query.addCriteria(Criteria.where("name").is("张三"));
    return template.find(query,Student.class);
}


public List<JSONObject> findByAge(int age){
    Query query = new Query();
    query.addCriteria(Criteria.where("age").gt(20).lte(25));
    return template.find(query,JSONObject.class,"Student");
}

    

public <T> List<T> find(Query query, Class<T> entityClass) {
    return this.find(query, entityClass, this.getCollectionName(entityClass));
}



public <T> List<T> find(Query query, Class<T> entityClass, String collectionName) {
    Assert.notNull(query, "Query must not be null!");
    Assert.notNull(collectionName, "CollectionName must not be null!");
    Assert.notNull(entityClass, "EntityClass must not be null!");
    return this.doFind(collectionName, query.getQueryObject(), query.getFieldsObject(),
 entityClass, new MongoTemplate.QueryCursorPreparer(query, entityClass));
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值