知乎专栏 |
在上一节 MongoTemplate 中,继续添加下面代码。
package api; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; @SpringBootApplication @EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class }) @ComponentScan({ "api.web", "api.rest","api.service" }) @EnableMongoRepositories public class Application { public @Bean WebMvcConfigurer corsConfigurer() { return new WebMvcConfigurerAdapter() { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**"); } }; } public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
Resource: src/main/resources/application.properties
spring.data.mongodb.uri=mongodb://finance:XQ8os82I0pFoZBMd4@mdb.netkiller.cn/finance spring.data.mongodb.repositories.enabled=true
CityRepository.java
package repository; import java.util.List; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.mongodb.repository.MongoRepository; import domain.City; public interface CityRepository extends MongoRepository<City, String> { public Page<City> findAll(Pageable pageable); public City findByNameAndCountry(String name, String country); public City findByName(String name); public List<City> findByCountry(String country); }
City.java
package domain; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; @Document(collection = "city") public class City { @Id private String id; public String name; public String country; public City(String name, String country){ this.setName(name); this.setCountry(country); } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getCountry() { return country; } public void setCountry(String country) { this.country = country; } @Override public String toString() { return "City [id=" + id + ", name=" + name + ", country=" + country + "]"; } }
在 IndexController 中调用 CityRepository
package web; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import repository.CityRepository; import domain.City; import repository.CityRepository; @Controller public class IndexController { @Autowired private CityRepository repository; @RequestMapping("/index") @ResponseBody public ModelAndView index() { String message = "Hello"; return new ModelAndView("home/welcome", "variable", message); } @RequestMapping("/curd") @ResponseBody public String curd() { repository.deleteAll(); // save a couple of city repository.save(new City("Shenzhen", "China")); repository.save(new City("Beijing", "China")); System.out.println("--------------------------------"); // fetch all city for (City city : repository.findAll()) { System.out.println(city); } // fetch an individual city System.out.println("--------------------------------"); System.out.println(repository.findByName("Shenzhen")); System.out.println("--------------------------------"); for (City city : repository.findByCountry("China")) { System.out.println(city); } String message = "Hello"; return message; } }