Board logo

标题: Spring Boot中使用MongoDB数据库(3) [打印本页]

作者: look_w    时间: 2019-5-18 10:51     标题: Spring Boot中使用MongoDB数据库(3)

方式一直接使用mongotemplate

springboot会自动注入mongotemplate,使用引用

    @Autowired
    MongoTemplate mongotemplate;



即可。如下:

package com.biologic.api;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
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.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.biologic.entity.User;

@Controller
@EnableAutoConfiguration
public class SampleController {

    @Autowired
    MongoTemplate mongotemplate;

    @RequestMapping("/")
    @ResponseBody
    String home() {
        Query query = new Query();
        query.addCriteria(Criteria.where("name").is("酒仙"));
        String name = mongotemplate.findOne(query, User.class).getName();
        return name;
    }

    public static void main(String[] args) throws Exception {
        SpringApplication.run(SampleController.class, args);
    }

}


方式二新建实体相关的repository接口

新建定义repository接口继承mongoRepository接口

package com.biologic.api.service;

import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Service;

import com.biologic.entity.User;


@Service
public interface UserRepository extends MongoRepository<User, String> {  

   public User findByName(String name);

}


写一个接口,继承MongoRepository,这个接口有了几本的CURD的功能。如果你想自定义一些查询,比如根据name来查询,只需要定义一个方法即可。注意firstName严格按照存入的mongodb的字段对应。在典型的Java的应用程序,写这样一个接口的方法,需要自己实现,但是在springboot中,你只需要按照格式写一个接口名和对应的参数就可以了,因为springboot已经帮你实现了。

repository接口需要在启动程序的同级目录或者子目录中,例如结构如下:

使用方式如下:

package com.biologic.api;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.biologic.api.service.UserRepository;



@Controller
@EnableAutoConfiguration
public class SampleController {

    @Autowired
    UserRepository userRepository;

    @RequestMapping("/")
    @ResponseBody
    String home() {
        String name = userRepository.findByName("酒仙").getName();
        return name;
    }

    public static void main(String[] args) throws Exception {
        SpringApplication.run(SampleController.class, args);
    }

}




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0