您的位置:首页 > 数据库 > Mongodb

六.SpringBoot集成实例系列-单数据源mongodb(权限控制)

2017-09-13 17:47 525 查看
文章列表

本系列将通过实例分别实现Springboot集成mybatis(mysql),mail,mongodb,cassandra,scheduler,redis,kafka,shiro,websocket。

具体文章系列如下:

一.SpringBoot集成实例系列-xml型单数据源mybatis

二.SpringBoot集成实例系列-xml型多数据源mybatis

三.SpringBoot集成实例系列-注解型单数据源mybatis

四.SpringBoot集成实例系列-注解型多数据源mybatis

五.SpringBoot集成实例系列-邮件email

六.SpringBoot集成实例系列-单数据源mongodb

七.SpringBoot集成实例系列-多数据源mongodb

八.SpringBoot集成实例系列-缓存redis

九.SpringBoot集成实例系列-数据库cassandra

十.SpringBoot集成实例系列-定时任务scheduler

十一.SpringBoot集成实例系列-消息队列kafka

十二.SpringBoot集成实例系列-消息推送websocket

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

本文将通过实例实现springboot与mongodb集成。

1.需求

实现用户的增删查改

2.技术要点

2.1 springboot集成mongodb配置



通过username和password实现mongodb权限控制

2.2 MongoTemplate依赖注入



就像Spring提供的JDBC,hibernate和ibatis的template一样,spring-data-mongodb也提供了一个基础的泛型MongoTemplate供开发者可以快速的利用代码完成基础的crud工作。在实践中可以考虑完全省去dao层的设计,直接在service层注入相应的template实例。

spring-data-mongodb详情操作:
https://docs.spring.io/spring-data/data-mongodb/docs/current/reference/html/

3.代码实现

3.1 项目结构



3.2 properties配置文件

spring.application.name=spirngboot-int-mongodbeg

spring.data.mongodb.database=#
spring.data.mongodb.host=#
spring.data.mongodb.password=#
spring.data.mongodb.port=27017
spring.data.mongodb.username=#

3.3 UserEntity实体

package com.lm.entity;

import java.io.Serializable;

public class UserEntity implements Serializable {
private static final long serialVersionUID = -3258839839160856613L;
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 + '\'' +
'}';
}
}
3.4 MongoTemplate操作

package com.lm.dao.impl;

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;

import com.lm.dao.UserDao;
import com.lm.entity.UserEntity;
import com.mongodb.WriteResult;

@Component
public class UserDaoImpl implements UserDao {

@Autowired
private MongoTemplate mongoTemplate;

/**
* 创建对象
* @param user
*/
@Override
public void saveUser(UserEntity user) {
mongoTemplate.save(user);
}

/**
* 根据用户名查询对象
* @param userName
* @return
*/
@Override
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
*/
@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;
}

/**
* 删除对象
* @param id
*/
@Override
public void deleteUserById(Long id) {
Query query=new Query(Criteria.where("id").is(id));
mongoTemplate.remove(query,UserEntity.class);
}
}
3.5 测试用例

package com.lm;

import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;

import com.lm.dao.UserDao;
import com.lm.entity.UserEntity;

public class UserDaoTest extends AppTest {

@Autowired
private UserDao userDao;

@Test
public void testSaveUser() throws Exception {
UserEntity user=new UserEntity();
user.setId(2l);
user.setUserName("小明");
user.setPassWord("xiaoming1");
userDao.saveUser(user);
}

@Test
public void findUserByUserName(){
UserEntity user= userDao.findUserByUserName("小明");
System.out.println("user is "+user);
}

@Test
public void updateUser(){
UserEntity user=new UserEntity();
user.setId(2l);
user.setUserName("小红");
user.setPassWord("小红1");
userDao.updateUser(user);
}

@Test
public void deleteUserById(){
userDao.deleteUserById(1l);
}

}
3.6 实例结果



4. 代码地址

Github: https://github.com/a123demi/spring-boot-integration
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息