標籤:base min value val opened 結果 mongod import isp
- 簡單查詢:使用自訂的XxxRepository介面即可。(見 第十一章 springboot + mongodb(簡單查詢))
- 複雜查詢:使用MongoTemplate以及一些查詢條件構建類(BasicDBList、BasicDBObject、Criteria等)
1、application.properties
1 #mongodb note:mongo3.x will not use host and port,only use uri2 #spring.data.mongodb.host=192.168.22.1103 #spring.data.mongodb.port=270174 #spring.data.mongodb.database=myfirstMongodb5 spring.data.mongodb.uri=mongodb://192.168.22.110:27017/myfirstMongodb
說明:
- mongo2.x支援以上兩種配置方式
- mongo3.x僅支援uri方式
2、Admin
package com.xxx.firstboot.domain;import org.springframework.data.annotation.Id;/** * 測試複雜的mongo查詢 */public class Admin { @Id private String adminId; private String name; private Integer sex; private String address; public String getAdminId() { return adminId; } public void setAdminId(String adminId) { this.adminId = adminId; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getSex() { return sex; } public void setSex(Integer sex) { this.sex = sex; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; }}View Code
注意:
3、AdminRepository
package com.xxx.firstboot.mongo;import org.springframework.data.mongodb.repository.MongoRepository;import com.xxx.firstboot.domain.Admin;public interface AdminRepository extends MongoRepository<Admin, String> {}
說明:該介面用於簡單查詢。這裡是一個空介面,具有CRUD功能。
4、CustomerController
/*********************測試複雜的mongo查詢**********************/ @Autowired private AdminRepository adminRepository; @Autowired private MongoTemplate mongoTemplate; @ApiOperation("增加一個Admin") @RequestMapping(value = "/addAdmin", method = RequestMethod.GET) public Admin addAdmin(@RequestParam("name") String name, @RequestParam("sex") Integer sex, @RequestParam("address") String address) { Admin admin = new Admin(); admin.setName(name); admin.setSex(sex); admin.setAddress(address); return adminRepository.save(admin); } @ApiOperation("擷取所有的Admin") @RequestMapping(value = "/getAllAdmin", method = RequestMethod.GET) public List<Admin> getAllAdmin() { return adminRepository.findAll(); } @ApiOperation("複雜的admin查詢") @RequestMapping(value = "/getAdminByNameAndSexOrAddress", method = RequestMethod.GET) public Admin getAdminByNameAndSexOrAddress(@RequestParam("name") String name, @RequestParam(value="sex",required=false) Integer sex, @RequestParam(value="address",required=false) String address) { /** * OR */ BasicDBList orList = new BasicDBList(); //用於記錄 if (sex != null) { orList.add(new BasicDBObject("sex", sex)); } if (StringUtils.isNotBlank(address)) { orList.add(new BasicDBObject("address", address)); } BasicDBObject orDBObject = new BasicDBObject("$or", orList); /** * and */ BasicDBList andList = new BasicDBList(); andList.add(new BasicDBObject("name", name)); andList.add(orDBObject); BasicDBObject andDBObject = new BasicDBObject("$and", andList); return mongoTemplate.findOne(new BasicQuery(andDBObject), Admin.class); }View Code
說明:
- getAdminByNameAndSexOrAddress要實現select * from admin where name = ? and (sex = ? or address = ?)
- 通過BasicDBList、BasicDBObject構建查詢參數
- findOne返回第一個合格結果、find返回合格結果清單
- 以上查詢的collection是admin(VO的簡單類名),也可以指定從某一個collection中查詢(查看find、findOne等方法)
注意:mongodb的查詢欄位必須是小寫。
測試:
啟動mongo,啟動應用,開啟swagger,訪問即可。
參考:
http://blog.csdn.net/congcong68/article/details/47183209
第十二章 springboot + mongodb(複雜查詢)