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

来源:互联网 发布:网络爬虫 java 对比 编辑:程序博客网 时间:2024/06/11 01:53

文章列表

本系列将通过实例分别实现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-mongodbegspring.data.mongodb.database=#spring.data.mongodb.host=#spring.data.mongodb.password=#spring.data.mongodb.port=27017spring.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;@Componentpublic 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
原创粉丝点击