mongodb java 学习_《 mongodb 学习 》java 基本操作
環境 springboot 結合 monggodb
一、pom.xml
org.springframework.boot
spring-boot-starter-data-mongodb
配置:
spring.data.mongodb.uri=mongodb://localhost:27017/pglyon
二、實體類 Users.java
importorg.springframework.data.annotation.Transient;importorg.springframework.data.mongodb.core.index.CompoundIndex;importorg.springframework.data.mongodb.core.index.CompoundIndexes;importorg.springframework.data.mongodb.core.index.Indexed;importorg.springframework.data.mongodb.core.mapping.Document;
@Document(collection="users")
@CompoundIndexes({
@CompoundIndex(name= "age_idx", def = "{'name': 1, 'age': -1}")
})public class Users implementsSerializable{private static final long serialVersionUID = 1L;
@IndexedprivateString uid;privateString name;private intage;
@TransientprivateString address;public Users(String uid, String name, intage) {super();this.uid =uid;this.name =name;this.age =age;
}
注解說明
@Document
標注在實體類上,與hibernate異曲同工。
@Document(collection="users")public class Users implementsSerializable{private static final long serialVersionUID = 1L;
...省略代碼
@CompoundIndex
復合索引,加復合索引后通過復合索引字段查詢將大大提高速度。
@Document(collection="users")
@CompoundIndexes({
@CompoundIndex(name= "age_idx", def = "{'name': 1, 'age': -1}")
})public class Users implementsSerializable{private static final long serialVersionUID = 1L;
...省略代碼
@Id
MongoDB默認會為每個document生成一個 _id 屬性,作為默認主鍵,且默認值為ObjectId,可以更改 _id 的值(可為空字符串),但每個document必須擁有 _id 屬性。
當然,也可以自己設置@Id主鍵,不過官方建議使用MongoDB自動生成。
@Indexed
聲明該字段需要加索引,加索引后以該字段為條件檢索將大大提高速度。
唯一索引的話是@Indexed(unique = true)。
也可以對數組進行索引,如果被索引的列是數組時,mongodb會索引這個數組中的每一個元素。
@Indexedprivate String uid;
@Transient
被該注解標注的,將不會被錄入到數據庫中。只作為普通的javaBean屬性。
@Transientprivate String address;
生成的集合 以及結構
三、業務接口 UserService.java:
public interfaceUserService {public void saveUsers(Listusers);public voidsaveUser(Users users);publicUsers findUserByName(String name);public voidremoveUser(String name);public voidupdateUser(String name, String key, String value);public ListlistUser();
}
View Code
實現類
importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.data.mongodb.core.MongoOperations;importorg.springframework.data.mongodb.core.query.Criteria;importorg.springframework.data.mongodb.core.query.Query;importorg.springframework.data.mongodb.core.query.Update;importorg.springframework.stereotype.Service;importcom.lyon.mongo.entity.Users;importcom.lyon.mongo.service.UserService;
@Servicepublic class UserServiceImpl implementsUserService {
@Autowired
MongoOperations mongoTemplate;
@Overridepublic voidsaveUser(Users users) {
mongoTemplate.save(users);
}
@OverridepublicUsers findUserByName(String name) {returnmongoTemplate.findOne(new Query(Criteria.where("name").is(name)), Users.class);
}
@Overridepublic voidremoveUser(String name) {
mongoTemplate.remove(new Query(Criteria.where("name").is(name)), Users.class);
}
@Overridepublic voidupdateUser(String name, String key, String value) {
mongoTemplate.updateFirst(new Query(Criteria.where("name").is(name)),
Update.update(key, value), Users.class);
}
@Overridepublic ListlistUser() {return mongoTemplate.findAll(Users.class);
}
@Overridepublic void saveUsers(Listusers) {for(Users users2 : users) {
mongoTemplate.save(users2);
}
}
}
四、Controller
@RequestMapping("/mongo")
@Controllerpublic classMongoController {
@AutowiredprivateUserService userService;
@GetMapping("/addList")
@ResponseBodypublicR createList(){
List list = new ArrayList();for(int i=20; i<30; i++){
Users users= new Users(i+"","小明"+i, i);
users.setAddress("南京市");
list.add(users);
}
userService.saveUsers(list);returnR.success();
}
@GetMapping("/add")
@ResponseBodypublicR create(){
Users users= new Users("1","小明", 10);
users.setAddress("南京市");
userService.saveUser(users);returnR.success();
}
@GetMapping("/list")
@ResponseBodypublic Listlist(){
List listUser =userService.listUser();returnlistUser;
}
@GetMapping("/remove/{name}")
@ResponseBodypublicR remove(@PathVariable String name){
userService.removeUser(name);returnR.success();
}
@GetMapping("/update/{name}")
@ResponseBodypublicR update(@PathVariable String name){
userService.updateUser(name,"age", "90");returnR.success();
}
}
分頁:
以正序為例,假設已經取到了第一頁的數據,前端記錄下當前這頁數據的最大id,然后點擊下一頁時將這個id帶給后端,后端取數據時先根據id比較找到所有id大于這個id的數據,然后limit
總結
以上是生活随笔為你收集整理的mongodb java 学习_《 mongodb 学习 》java 基本操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java注解式开发_JAVA语言之Spr
- 下一篇: java if and_关于java:i