欢迎访问昆山宝鼎软件有限公司网站! 设为首页 | 网站地图 | XML | RSS订阅 | 宝鼎邮箱 | 后台管理


新闻资讯

MENU

软件开发知识

SpringBoot(十一):S 劳务派遣管理系统 pring boot 中 mongodb 的利用

点击: 次  来源:宝鼎软件 时间:2017-07-30

原文出处: 纯洁的微笑

mongodb是最早热门非干系数据库的之一,利用也较量普遍,一般会用做离线数据阐明来利用,放到内网的居多。由于许多公司利用了云处事,处事器默认都开放了外网地点,导致前一阵子大批 MongoDB 因设置裂痕被进攻,数据被删,引起了人们的留意,感乐趣的可以看看这篇文章:场屠戮MongoDB的盛宴反思:超33000个数据库遭遇入侵打单,同时也说明白许多公司出产中大量利用mongodb。

mongodb简介

MongoDB(来自于英文单词“Humongous”,中文寄义为“复杂”)是可以应用于各类局限的企业、各个行业以及种种应用措施的开源数据库。基于漫衍式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高机能数据存储办理方案。MongoDB是一个高机能,开源,无模式的文档型数据库,是当前NoSQL数据库中较量热门的一种。

MongoDB是一个介于干系数据库和非干系数据库之间的产物,长短干系数据库傍边成果最富厚,最像干系数据库的。他支持的数据布局很是松散,是雷同json的bjson名目,因此可以存储较量巨大的数据范例。Mongo最大的特点是他支持的查询语言很是强大,其语法有点雷同于面向工具的查询语言,险些可以实现雷同干系数据库单表查询的绝大部门成果,并且还支持对数据成立索引。

传统的干系数据库一般由数据库(database)、表(table)、记录(record)三个条理观念构成,劳务派遣管理系统,MongoDB是由数据库(database)、荟萃(collection)、文档工具(document)三个条理构成。MongoDB对付干系型数据库里的表,可是荟萃中没有列、行和干系观念,这浮现了模式自由的特点。

MongoDB中的一笔记录就是一个文档,是一个数据布局,软件开发,由字段和值对构成。MongoDB文档与JSON工具雷同。字段的值有大概包罗其它文档、数组以及文档数组。MongoDB支持OS X、Linux及Windows等操纵系统,并提供了Python,PHP,Ruby,Java及C++语言的驱动措施,社区中也提供了对Erlang及.NET等平台的驱动措施。

MongoDB的适合对大量可能无牢靠名目标数据举办存储,好比:日志、缓存等。对事物支持较弱,不合用巨大的多文档(多表)的级联查询。文中演示mongodb版本为3.4。

mongodb的增删改查

Spring Boot对各类风行的数据源都举办了封装,虽然也包罗了mongodb,下面给各人先容如安在spring boot中利用mongodb:

1、pom包设置

pom包内里添加spring-boot-starter-data-mongodb包引用

<dependencies>
	<dependency> 
	    <groupId>org.springframework.boot</groupId>
	    <artifactId>spring-boot-starter-data-mongodb</artifactId>
	</dependency> 
</dependencies>

2、在application.properties中添加设置

spring.data.mongodb.uri=mongodb://name:pass@localhost:27017/test

多个IP集群可以回收以下设置:

spring.data.mongodb.uri=mongodb://user:pwd@ip1:port1,ip2:port2/database

3、建设数据实体

public class UserEntity implements Serializable {
        private static final long serialVersionUID = -3258839839160856613L;
        private Long id;
        private String userName;
        private String passWord;

      //getter、setter省略
}

4、建设实体dao的增删改查操纵

dao层实现了UserEntity工具的增删改查

@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 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
     */
    @Override
    public void deleteUserById(Long id) {
        Query query=new Query(Criteria.where("id").is(id));
        mongoTemplate.remove(query,UserEntity.class);
    }
}