spring boot集成mongoDB

1,278 阅读1分钟

1、pom依赖

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

2、属性文件

# MONGODB (MongoProperties)
spring.data.mongodb.authentication-database=认证的数据库
spring.data.mongodb.database=要使用的数据库
#spring.data.mongodb.field-naming-strategy= # Fully qualified name of the FieldNamingStrategy to use.
#spring.data.mongodb.grid-fs-database= # GridFS database name.
spring.data.mongodb.host=xx.xxx.xxx.xxx
spring.data.mongodb.username=账户名
spring.data.mongodb.password=密码
spring.data.mongodb.port=27017
mongo.collection=数据库中的集合
#spring.data.mongodb.repositories.type=
#spring.data.mongodb.uri=mongodb://47.114.132.102/test # Mongo database URI. When set, host and port are ignored.

3、使用方式

3.1 MongoRepository

自定义接口实现MongoRepository

下面的方法是有固定格式的,具体细节自行去查

3.2 MongoRepository

这个比较简单,直接注入即可

4、工具类

@Component
public class MongoKit {

    @Autowired
    private OrderListMongoRepository demoInfoRepository;

    @Autowired
    private MongoTemplate mongoTemplate;

    public String save() {
        List<OrderChildListDO> childs = new ArrayList<OrderChildListDO>();
        OrderChildListDO childListDO = new OrderChildListDO();
        childListDO.setId(0);
        childListDO.setSkuId("12312");
        childListDO.setItemId("123412");
        childListDO.setUserId("234das2365462");
        childListDO.setOrderId("2342352345");
        childListDO.setItemImage("34523rtegy");
        childListDO.setItemTitle("就合计合计撒娇看到了卡商家拉萨到今年");
        childListDO.setOrderChildId("sdfswdfgaas");
        childListDO.setItemCount(0);
        childListDO.setAfterStatus(0);
        childListDO.setItemTotalBuyPrice(0);
        childListDO.setItemSingleBuyPrice(0);
        childListDO.setItemTotalSellPrice(0);
        childListDO.setItemSingleSellPrice(0);
        childs.add(childListDO);
        OrderMainListDO orderMainListDO = new OrderMainListDO();
        orderMainListDO.setId(223);
        orderMainListDO.setUserId("afdaadsasadsa");
        orderMainListDO.setOrderId("23523452311asedasq");
        orderMainListDO.setPostFee(0);
        orderMainListDO.setItemFrom(0);
        orderMainListDO.setOrderStatus(0);
        orderMainListDO.setOrderTotalAmount(0);
        orderMainListDO.setCreateTime(new Date());
        orderMainListDO.setChildOrders(childs);

        OrderMainListDO resuilt = demoInfoRepository.save(orderMainListDO);
        return "ok";
    }

    public String delete(String mongoId) {
        demoInfoRepository.deleteById(mongoId);
        return "ok";
    }

    /**
     * 通过mongoTemplate查
     */
    public List<OrderMainListDO> listByTemplate(String title) {
        Query query = new Query();
        Pattern pattern = Pattern.compile(
                "^.*" + JSON.parseObject(title).getString("title") + ".*$", Pattern.CASE_INSENSITIVE);
        query.addCriteria(Criteria.where("childOrders.itemTitle").regex(pattern));
        List<OrderMainListDO> list = mongoTemplate.find(query.with(Sort.by(Sort.Direction.DESC, "createTime")), OrderMainListDO.class);

        return list;
    }

    public List<OrderMainListDO> listByRepository(String title) {
        Sort sort = Sort.by(Sort.Direction.DESC, "createTime");
        OrderMainListDO listDO = new OrderMainListDO();
        listDO.setOrderId(JSON.parseObject(title).getString("title"));
        ExampleMatcher matcher = ExampleMatcher.matching()
                                               .withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING) //改变默认字符串匹配方式:模糊查询
                                               .withIgnoreCase(true) //改变默认大小写忽略方式:忽略大小写
                                               .withMatcher("orderId", ExampleMatcher.GenericPropertyMatchers.contains()) //采用“包含匹配”的方式查询
                                               .withIgnorePaths("pageNum", "pageSize");  //忽略属性,不参与查询;
        Example<OrderMainListDO> example = Example.of(listDO, matcher);
        List<OrderMainListDO> list = demoInfoRepository.findAll(example);
        return list;
    }

    public PageImpl<OrderMainListDO> pageByTemplate(String title) {
        Pattern pattern = Pattern.compile(
                "^.*" + JSON.parseObject(title).getString("title") + ".*$", Pattern.CASE_INSENSITIVE);
        Query query = Query.query(Criteria.where("childOrders.itemTitle").regex(pattern));
        // 每页五个
        Pageable pageable = PageRequest.of(0, 5); // get 5 profiles on a page
        query.with(pageable);
        // 排序
        query.with(Sort.by(Sort.Direction.DESC, "createTime"));
        List<OrderMainListDO> items = mongoTemplate.find(query, OrderMainListDO.class, "orders");
        // System.out.println("stories:" + stories.size() + " count:" + count);
        PageImpl<OrderMainListDO> result = (PageImpl<OrderMainListDO>) PageableExecutionUtils.getPage(items, pageable, () -> 0);
        return result;
    }

    public String pageByByRepository(String title) {
        Sort sort = Sort.by(Sort.Direction.DESC, "createTime");
        PageRequest pageRequest = PageRequest.of(0, 10, sort);
        OrderMainListDO listDO = new OrderMainListDO();
        listDO.setOrderId(JSON.parseObject(title).getString("title"));
        ExampleMatcher matcher = ExampleMatcher.matching()
                                               .withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING) //改变默认字符串匹配方式:模糊查询
                                               .withIgnoreCase(true) //改变默认大小写忽略方式:忽略大小写
                                               .withMatcher("orderId", ExampleMatcher.GenericPropertyMatchers.contains()) //采用“包含匹配”的方式查询
                                               .withIgnorePaths("pageNum", "pageSize");  //忽略属性,不参与查询;
        Example<OrderMainListDO> example = Example.of(listDO, matcher);
        Page<OrderMainListDO> all = demoInfoRepository.findAll(example, pageRequest);
        return null;
    }

}