您好,登錄后才能下訂單哦!
這篇文章給大家介紹SpringBoo中怎么t整合MongoDB,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
僅選擇Spring Web、Spring Data MongoDB即可
這里只是為了實體類的創(chuàng)建方便而引入lombok
<!-- 引入lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency>
> use admin switched to db admin > db.createUser({user:"zlfeng", pwd:"123456", roles:[{role:"readWriteAnyDatabase", db:"admin"}]}); Successfully added user: { "user" : "zlfeng", "roles" : [ { "role" : "readWriteAnyDatabase", "db" : "admin" } ] }
MongoDB權(quán)限介紹
權(quán)限 | 說明 |
---|---|
read | 允許用戶讀取指定數(shù)據(jù)庫 |
readWrite | 允許用戶讀寫指定數(shù)據(jù)庫 |
dbAdmin | 允許用戶在指定數(shù)據(jù)庫中執(zhí)行管理函數(shù),如索引創(chuàng)建、刪除、查看統(tǒng)計或訪問system.profile |
userAdmin | 允許用戶向system.users集合寫入,可以在指定數(shù)據(jù)庫中創(chuàng)建、刪除和管理用戶 |
clusterAdmin | 必須在admin數(shù)據(jù)庫中定義,賦予用戶所有分片和復(fù)制集相關(guān)函數(shù)的管理權(quán)限 |
readAnyDatabase | 必須在admin數(shù)據(jù)庫中定義,賦予用戶所有數(shù)據(jù)庫的讀權(quán)限 |
readWriteAnyDatabase | 必須在admin數(shù)據(jù)庫中定義,賦予用戶所有數(shù)據(jù)庫的讀寫權(quán)限 |
userAdminAnyDatabase | 必須在admin數(shù)據(jù)庫中定義,賦予用戶所有數(shù)據(jù)庫的userAdmin權(quán)限 |
dbAdminAnyDatabase | 必須在admin數(shù)據(jù)庫中定義,賦予用戶所有數(shù)據(jù)庫的dbAdmin權(quán)限 |
root | 必須在admin數(shù)據(jù)庫中定義,超級賬號,超級權(quán)限 |
# 登錄用戶所在的數(shù)據(jù)庫 spring.data.mongodb.authentication-database=admin # 數(shù)據(jù)庫的ip地址 spring.data.mongodb.host=192.168.133.142 # MongoDB端口號 spring.data.mongodb.port=27017 # 用戶賬號 spring.data.mongodb.username=zlfeng # 用戶密碼 spring.data.mongodb.password=123456 # 指定使用的數(shù)據(jù)庫 # 不必預(yù)先創(chuàng)建,不存在該數(shù)據(jù)庫會自動創(chuàng)建 spring.data.mongodb.database=db_student
五、創(chuàng)建實體類
package cn.byuan.entity; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; import org.springframework.data.annotation.Id; import java.io.Serializable; import java.util.Date; @NoArgsConstructor @AllArgsConstructor @Accessors(chain = true) @Data public class Student implements Serializable { @Id// 必須指定id列 private String studentId; private String studentName; private Integer studentAge; private Double studentScore; private Date studentBirthday; }
(一)dao層寫法一
1. 編碼部分
package cn.byuan.dao; import cn.byuan.entity.Student; import org.springframework.data.mongodb.repository.MongoRepository; /* * dao層寫法一 * 這里的用法其實和SpringDataJPA相似, 可根據(jù)需要來自定義方法 * * 這種寫法不需要寫實現(xiàn)類 * * MongoRepository<行對應(yīng)的對象類型, 主鍵列類型> * */ public interface StudentDaoTypeOne extends MongoRepository<Student, String> { // 可根據(jù)需求自己定義方法, 無需對方法進行實現(xiàn) Student getAllByStudentName(String studentName); }
2.測試部分
在進行測試之前,我們先查詢一下數(shù)據(jù)庫,此時不存在db_student的庫
開始測試
package cn.byuan; import cn.byuan.dao.StudentDaoTypeOne; import cn.byuan.entity.Student; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import java.util.Date; import java.util.List; @SpringBootTest class StudentDaoTypeOneTests { @Autowired private StudentDaoTypeOne studentDaoTypeOne; @Test void addOneStudent(){ // 插入10行 for (Integer count = 0; count < 10; count++) { Student student = new Student() .setStudentId("student_"+count) //如果自己不去設(shè)置id則系統(tǒng)會分配給一個id .setStudentName("Godfery"+count) .setStudentAge(count) .setStudentScore(98.5-count) .setStudentBirthday(new Date()); studentDaoTypeOne.save(student); } } @Test void deleteOneStudentByStudentId(){ // 刪除id為student_0的學(xué)生 studentDaoTypeOne.deleteById("student_0"); } @Test void updateOneStudent(){ // 修改姓名為Godfery1的Student年齡為22 Student student = studentDaoTypeOne.getAllByStudentName("Godfery1"); student.setStudentAge(22); studentDaoTypeOne.save(student); } @Test void getOneStudentByStudentId(){ System.out.println(studentDaoTypeOne.findById("student_1")); } @Test void getAllStudent(){ List<Student> studentList = studentDaoTypeOne.findAll(); studentList.forEach(System.out::println); } }
我們先來查看一下數(shù)據(jù)庫
進入數(shù)據(jù)庫查看一下數(shù)據(jù)
(二)dao層寫法二
1.編碼部分
接口部分
package cn.byuan.dao; import cn.byuan.entity.Student; import java.util.List; /* * dao層寫法二 * * 寫法二需要進行實現(xiàn) * */ public interface StudentDaoTypeTwo { // 增加一位學(xué)生 void addOneStudent(Student student); // 根據(jù)id刪除一位學(xué)生 void deleteOneStudentByStudentId(String studentId); // 修改一位學(xué)生的信息 void updateOneStudent(Student student); // 根據(jù)主鍵id獲取一名學(xué)生 Student getOneStudentByStudentId(String studentId); // 獲取全部學(xué)生 List<Student> getAllStudent(); }
實現(xiàn)類
package cn.byuan.dao.imp; import cn.byuan.dao.StudentDaoTypeTwo; import cn.byuan.entity.Student; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.stereotype.Repository; import java.util.List; @Repository public class StudentDaoTypeTwoImp implements StudentDaoTypeTwo { // 使用MongoTemplate模板類實現(xiàn)數(shù)據(jù)庫操作 @Autowired private MongoTemplate mongoTemplate; // 增加一位學(xué)生 public void addOneStudent(Student student){ mongoTemplate.save(student); } // 根據(jù)id刪除一位學(xué)生 public void deleteOneStudentByStudentId(String studentId){ Student student = mongoTemplate.findById(studentId, Student.class); if(student != null){ mongoTemplate.remove(student); } } // 修改一位學(xué)生的信息 public void updateOneStudent(Student student){ mongoTemplate.save(student); } // 根據(jù)主鍵id獲取一名學(xué)生 public Student getOneStudentByStudentId(String studentId){ return mongoTemplate.findById(studentId, Student.class); } // 獲取全部學(xué)生 public List<Student> getAllStudent(){ return mongoTemplate.findAll(Student.class); } }
2.測試部分
package cn.byuan; import cn.byuan.dao.StudentDaoTypeOne; import cn.byuan.dao.StudentDaoTypeTwo; import cn.byuan.entity.Student; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import java.util.Date; import java.util.List; @SpringBootTest class StudentDaoTypeTwoTests { @Autowired private StudentDaoTypeTwo studentDaoTypeTwo; @Test void addOneStudent(){ // 插入10行 for (Integer count = 0; count < 10; count++) { Student student = new Student() .setStudentId("study_"+count) //如果自己不去設(shè)置id則系統(tǒng)會分配給一個id .setStudentName("Echo"+count) .setStudentAge(count) .setStudentScore(98.5-count) .setStudentBirthday(new Date()); studentDaoTypeTwo.addOneStudent(student); } } @Test void deleteOneStudentByStudentId(){ // 刪除id為study_0的學(xué)生 studentDaoTypeTwo.deleteOneStudentByStudentId("study_0"); } @Test void updateOneStudent(){ // 修改id為study_1的Student年齡為21 Student student = studentDaoTypeTwo.getOneStudentByStudentId("study_1"); student.setStudentAge(21); studentDaoTypeTwo.updateOneStudent(student); } @Test void getOneStudentByStudentId(){ System.out.println(studentDaoTypeTwo.getOneStudentByStudentId("study_1")); } @Test void getAllStudent(){ List<Student> studentList = studentDaoTypeTwo.getAllStudent(); studentList.forEach(System.out::println); } }
進入數(shù)據(jù)庫查看一下數(shù)據(jù)
關(guān)于SpringBoo中怎么t整合MongoDB就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。