在SpringBoot下用java操作MongoDB資料庫的增刪改查
阿新 • • 發佈:2018-12-24
首先我們需要建立一個SpringBoot工程,在IDEA中有快捷的建立方式。
new -> project -> Spring Initializr 根據需要一路next下去即可
第二步,給application.properties新增MongoDB配置
#MongoDB #spring.data.mongodb.username=root #spring.data.mongodb.password= spring.data.mongodb.host=localhost spring.data.mongodb.repositories.enabled=true spring.data.mongodb.database= spring.data.mongodb.port=27017
第三步,在工程中建立一個實體類,便於接下來的測試(@Data註解屬於lombok外掛,用於簡化getter,setter方法)
@Data
@Document(collection="student")
class Student{
@Id
String _id;
String name;
String class_id;
String sex;
Integer age;
}
第四步,建立一個controller類,編寫四個介面用於測試
@RestController public class MongoTestController { @Autowired MongoTemplate mongoTemplate; @RequestMapping(value = "/save", method = RequestMethod.GET) public void save(){ Student student = new Student(); student.setName("張三"); student.setAge(18); student.setSex("男"); student.setId(UUID.randomUUID().toString()); mongoTemplate.save(student); } @RequestMapping(value = "/del", method = RequestMethod.GET) public void del(){ // 刪除name = 張三的資料 Criteria criteria = Criteria.where("name").is("張三"); // 刪除年齡 > 17 // Criteria.where("age").gt(17); // 刪除年齡 <= 19 // Criteria.where("age").lte(19) Query query = Query.query(criteria); mongoTemplate.remove(query, Student.class); // 一樣的效果 // mongoTemplate.remove(query, "student"); } @RequestMapping(value = "/update", method = RequestMethod.GET) public void update(){ // 匹配條件name = 張三 Criteria criteria = Criteria.where("name").is("張三"); Query query = Query.query(criteria); // 修改年齡 = 20 Update update = new Update(); update.set("age", 20); // updateFirst 刪除匹配到的第一個學生 mongoTemplate.updateFirst(query, update, Student.class); // mongoTemplate.updateFirst(query, update, "student"); // updateMulti 刪除所有 name = 張三 的學生 mongoTemplate.updateMulti(query, update, Student.class); } @RequestMapping(value = "/query", method = RequestMethod.GET) public void query(){ // 匹配條件sex = 男 Criteria criteria = Criteria.where("sex").is("男"); Query query = Query.query(criteria); // 查詢名字為張三的所有學生 List<Student> students = mongoTemplate.find(query, Student.class); // 類似的 查詢年齡 > 18的學生 Criteria criteria1 = Criteria.where("age").lt(18); Query query1 = Query.query(criteria); List<Student> students1 = mongoTemplate.find(query1, Student.class); } }
上面的程式碼使用了SpringBoot自帶的MongoTemplate API實現了對資料庫的CRUD操作。
同時,還有第二種實現方式,建立一個實體類的Dao介面,繼承MongoRepository介面。MongoRepository第一個泛型裡面填入與資料庫互動的實體Bean,第二個泛型是該實體Bean的id型別。
public interface StudentDao extends MongoRepository<Student, String>{
}
這樣,我們就可以在需要對該實體Bean和資料庫互動的類中自動注入進去,使用該介面的API
@Autowired StudentDao studentDao;
比如一些基本的操作如下:
//根據id查詢一條資料
studentDao.findOne(id);
//查出所有資料
studentDao.findAll();
//根據id刪除一條資料
studentDao.delete(id);
//儲存一個Student物件
studentDao.save(student);
//沒有修改的方法,只需要save一次相同id的Student物件即可修改