Mongodb介绍
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
使用配置
1、在pom.xml中添加相关依赖:
<!--mongodb的模块-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
2、在application.properties添加mongodb的连接地址:
spring.data.mongodb.uri=mongodb://localhost:27017/mydb
#spring.data.mongodb.uri=mongodb://name:pass@localhost:27017/mydb name为用户名、pass为密码,如果没有设置可以省略
3、创建用户实体类:
package com.lyh.demo.entity;
import java.io.Serializable;
public class UserEntity implements Serializable{
private long id;
private String userName;
private String password;
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;
}
@Override
public String toString() {
return "UserEntity{" +
"id=" + id +
", userName='" + userName + '\'' +
", password='" + password + '\'' +
'}';
}
}
4、创建Dao层接口和实现类:
UserDao的接口
package com.lyh.demo.dao;
import com.lyh.demo.entity.UserEntity;
public interface UserDao {
public void saveUser(UserEntity user);
public UserEntity findUserByUserName(String userName);
public int updateUser(UserEntity user);
public void deleteUserById(Long id);
}
UserDao的实现类
package com.lyh.demo.dao.impl;
import com.lyh.demo.dao.UserDao;
import com.lyh.demo.entity.UserEntity;
import com.mongodb.WriteResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Component;
@Component
public class UserDaoImpl implements UserDao{
@Autowired
private MongoTemplate mongoTemplate;
/**
* @Author:linyuanhuang
* @Description:创建对象
* @Date:17:44 2017/12/8
* @param user
*/
@Override
public void saveUser(UserEntity user) {
mongoTemplate.save(user);
}
/**
* @Author:linyuanhuang
* @Description:根据用户名查询对象
* @Date:17:44 2017/12/8
* @param userName
*/
@Override
public UserEntity findUserByUserName(String userName) {
Query query=new Query(Criteria.where("userName").is(userName));
UserEntity user = mongoTemplate.findOne(query , UserEntity.class);
return user;
}
/**
* @Author:linyuanhuang
* @Description:更新对象
* @Date:17:45 2017/12/8
* @param user
*/
@Override
public int 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());
//更新结果集的第一条数据
WriteResult result =mongoTemplate.updateFirst(query,update,UserEntity.class);
//更新结果集的全部数据
// mongoTemplate.updateMulti(query,update,UserEntity.class);
if(result!=null)
return result.getN();
else
return 0;
}
/**
* @Author:linyuanhuang
* @Description:删除对象
* @Date:17:45 2017/12/8
* @Param:id
*/
@Override
public void deleteUserById(Long id) {
Query query=new Query(Criteria.where("id").is(id));
mongoTemplate.remove(query,UserEntity.class);
}
}
关于mongoTemplate的api有很多,大家可以去相应的网站查询。
5、调用方法:
package com.lyh.demo.controller;
import org.springframework.web.bind.annotation.RestController;
import com.lyh.demo.dao.UserDao;
import com.lyh.demo.entity.UserEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
@RestController
public class HelloWorldController {
@Autowired
private UserDao userDao;
@RequestMapping("/helloWorld")
public String helloWorld(){
return "HelloWorld";
}
@RequestMapping("/save")
public String testSaveUser() throws Exception {
UserEntity user=new UserEntity();
user.setId(520L);
user.setUserName("小林");
user.setPassword("111111");
userDao.saveUser(user);
return "保存成功";
}
@RequestMapping("/get")
public String findUserByUserName(){
UserEntity user= userDao.findUserByUserName("小林");
System.out.println("user :"+user.toString());
return "user :"+user.toString();
}
@RequestMapping("/update")
public String updateUser(){
UserEntity user=new UserEntity();
user.setId(520L);
user.setUserName("小林");
user.setPassword("123456");
userDao.updateUser(user);
return "更新成功";
}
@RequestMapping("/delete")
public String deleteUserById(){
userDao.deleteUserById(520L);
return "删除成功";
}
}
通过浏览器测试验证:
1、浏览器输入地址:http://localhost:8080/save,如下图:
其他三项的测试这里就不展示了,可以使用mongoVUE工具或登录服务器用命令来查看数据。
到此springboot对应mongodb的增删改查功能已经全部实现。
GitHub地址:https://github.com/lyhkmm/spring-boot-examples/tree/master/spring-boot-mongodb