使用MongoDB資料庫(2)(三十六)
阿新 • • 發佈:2019-01-08
快速開始使用Spring-data-mongodb
若MongoDB的安裝配置採用預設埠,那麼在自動配置的情況下,我們不需要做任何引數配置,就能馬上連線上本地的MongoDB。下面直接使用spring-data-mongodb
來嘗試對mongodb的存取操作。(記得mongod啟動您的mongodb)
- 建立要儲存的User實體,包含屬性:id、username、age
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 public
class
User {
@Id
private
Long id;
private
String username;
private
Integer age;
public
User(Long id, String username, Integer age) {
this
.id = id;
this
.username = username;
this
.age = age;
}
// 省略getter和setter
}
- 實現User的資料訪問物件:UserRepository
1 2 3 4 5 public
interface
UserRepository
extends
MongoRepository<User, Long> {
User findByUsername(String username);
}
- 在單元測試中呼叫
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 @RunWith
(SpringJUnit4ClassRunner.
class
)
@SpringApplicationConfiguration
(Application.
class
)
public
class
ApplicationTests {
@Autowired
private
UserRepository userRepository;
@Before
public
void
setUp() {
userRepository.deleteAll();
}
@Test
public
void
test()
throws
Exception {
// 建立三個User,並驗證User總數
userRepository.save(
new
User(1L,
"didi"
,
30
));
userRepository.save(
new
User(2L,
"mama"
,
40
));
userRepository.save(
new
User(3L,
"kaka"
,
50
));
Assert.assertEquals(
3
, userRepository.findAll().size());
// 刪除一個User,再驗證User總數
User u = userRepository.findOne(1L);
userRepository.delete(u);
Assert.assertEquals(
2
, userRepository.findAll().size());
// 刪除一個User,再驗證User總數
u = userRepository.findByUsername(
"mama"
);
userRepository.delete(u);
Assert.assertEquals(
1
, userRepository.findAll().size());
}
}
引數配置
通過上面的例子,我們可以輕而易舉的對MongoDB進行訪問,但是實戰中,應用伺服器與MongoDB通常不會部署於同一臺裝置之上,這樣就無法使用自動化的本地配置來進行使用。這個時候,我們也可以方便的配置來完成支援,只需要在application.properties中加入mongodb服務端的相關配置,具體示例如下:
1 spring.data.mongodb.uri=mongodb:
//name:[email protected]:27017/test
在嘗試此配置時,記得在mongo中對test庫建立具備讀寫許可權的使用者(使用者名稱為name,密碼為pass),不同版本的使用者建立語句不同,注意檢視文件做好準備工作
若使用mongodb 2.x,也可以通過如下引數配置,該方式不支援mongodb 3.x。
1 spring.data.mongodb.host=localhost spring.data.mongodb.port=
27017