1 mogodb安装及操作
首先去官网http://www.mongodb.org/downloads下载安装文件,然后点击安装,注意在安装的时候不要选择compass就可以了。安装后从cmd进入安装目录的bin目录,新建一个data文件夹,然后执行命令来启动mogodb:
bin>mongod --dbpath data
另起一个cmd,进入到bin目录下,执行命令来连接mongodb:
C:\Program Files\MongoDB\Server\4.0\bin>mongo.exe
MongoDB shell version v4.0.2
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 4.0.2
显示数据库:
> show dbs;
admin 0.000GB
config 0.000GB
local 0.000GB
使用数据库test:
> use test
switched to db test
use test是使用数据库test,如果不存在则会新建一个数据库。再次显示test创建了没有:
> show dbs;
admin 0.000GB
config 0.000GB
local 0.000GB
这里怎么没有显示test出来?这是因为test此时为空数据库,Mogodb是不现实空数据库的。感觉这点很坑爹。
给test创建一个用户name,密码passwd:
> db.createUser({user:"lzj",pwd:"passwd",roles:[{role:"readWrite",db:"test"}]})
Successfully added user: {
"user" : "name",
"roles" : [
{
"role" : "readWrite",
"db" : "test"
}
]
}
现在test中并没有数据,下面将使用spring boot操作Mongodb来插入数据。
2 pom.xml中添加mangodb依赖
在spring boot工程的pom.xml中添加依赖:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
</dependencies>
3 在application.properties中添加配置
spring.data.mongodb.uri=mongodb://name:passwd@localhost:27017/test
4 创建数据实体UserEntity
public class UserEntity implements Serializable {
private static final long serialVersionUID = -3258839839160856613L;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
private Long id;
private String userName;
private String passWord;
}
5 创建数据操作服务类
@Service
public class UserDaoImpl {
@Autowired
private MongoTemplate mongoTemplate;
/**
* 创建对象
* @param user
*/
public void saveUser(UserEntity user) {
mongoTemplate.save(user);
}
/**
* 根据用户名查询对象
* @param userName
* @return
*/
public UserEntity findUserByUserName(String userName) {
Query query=new Query(Criteria.where("userName").is(userName));
UserEntity user = mongoTemplate.findOne(query , UserEntity.class);
return user;
}
/**
* 更新对象
* @param user
*/
public void updateUser(UserEntity user) {
Query query=new Query(Criteria.where("id").is(user.getId()));
Update update= new Update().set("userName", user.getUserName()).set("passWord", user.getPassWord());
//更新查询返回结果集的第一条
mongoTemplate.updateFirst(query,update,UserEntity.class);
//更新查询返回结果集的所有
// mongoTemplate.updateMulti(query,update,UserEntity.class);
}
/**
* 删除对象
* @param id
*/
public void deleteUserById(Long id) {
Query query=new Query(Criteria.where("id").is(id));
mongoTemplate.remove(query,UserEntity.class);
}
}
6 测试类
package com.example.mongodb;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class MongodbApplicationTests {
@Test
public void contextLoads() {
}
@Autowired
private UserDaoImpl userDao;
@Test
public void testSaveUser() throws Exception {
UserEntity user=new UserEntity();
user.setId(2l);
user.setUserName("小明");
user.setPassWord("fffooo123");
userDao.saveUser(user);
}
@Test
public void findUserByUserName(){
UserEntity user= userDao.findUserByUserName("小明");
System.out.println("user is "+user.getUserName());
}
@Test
public void updateUser(){
UserEntity user=new UserEntity();
user.setId(2l);
user.setUserName("天空");
user.setPassWord("fffxxxx");
userDao.updateUser(user);
}
@Test
public void deleteUserById(){
userDao.deleteUserById(1l);
}
}