SpringBoot访问MongoDB数据库

本文最后更新于2018年4月22日,已超过 1 年没有更新,如果文章内容失效,还请反馈给我,谢谢!

=Start=

缘由:

工作需要,学习总结需要

正文:

参考解答:
在Mac上安装、启动MongoDB:
$ brew update
$ brew install mongodb
$ mkdir -p /data/db
$ chown -R $USER /data/db

$ sudo mongod --config /usr/local/etc/mongod.conf
在Windows上下载安装MongoDB:
1. 下载
2. 手动简单的配置
2.1. 配置环境变量
2.2. 创建数据库文件存放目录
2.3. 创建日志文件存放目录
2.4. 安装为 Windows 服务
3. 使用配置文件
3.1. 配置文件
3.2. 普通启动
3.3. 安装为 Windows 服务
3.4. 使用SC安装为Windows服务
3.5. 浏览器测试
MongoDB操作:
# 另开一个终端
$ mongo
> help
> show dbs
> db
> show collections
> use local
> db.collection_name.find()
在Spring Boot中使用MongoDB数据库:

①环境依赖(修改pom.xml文件):

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

②数据源配置(手动、自动):

手动(主动设置配置文件):

默认使用localhost:27017的名称叫做test的数据库。
此外,我们也可以在 src/main/resources/application.properties 中配置数据源信息:

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

自动(交给Spring Boot去处理):

使用经过 @Autowired 注解处理过的 mongoTemplate ,然后正常操作即可:

@Autowired
private MongoTemplate mongoTemplate;

③mongoTemplate操作举例

// 创建一个 Entity
public class UserEntity implements Serializable {
        private static final long serialVersionUID = -3258839839160856613L;
        private Long id;
        private String userName;
        private String passWord;

      //getter、setter省略
}
// 创建实体dao的增删改查操作
@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);
    }
}

 

参考链接:

=END=

声明: 除非注明,ixyzero.com文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://ixyzero.com/blog/archives/3879.html

11 thoughts on “SpringBoot访问MongoDB数据库”

  1. 利用神器BTrace 追踪线上 Spring Boot应用运行时信息
    https://mp.weixin.qq.com/s/NH7ck79I3U0bJTEv37aECw
    `
    BTrace 可用于动态跟踪正在运行的Java程序,其原理是通过动态地检测目标应用程序的类并注入跟踪代码 ( “字节码跟踪” ),因此可以直接用于监控和追踪线上问题而无需修改业务代码并重启应用程序。

    BTrace 的使用方式是用户自己编写符合 BTrace使用语法的脚本,并结合 btrace命令,来获取应用的一切调用信息,就像下面这样:

    /bin/btrace

    其中 为被监控 Java应用的 进程ID
    为 根据需要监控的信息 而自行编写的 Java脚本
    `

  2. spring mvc获取IP地址
    https://blog.csdn.net/duzhanxiaosa/article/details/43833973
    `
    * 获取访问者IP

    * 在一般情况下使用 Request.getRemoteAddr() 即可,但是经过Nginx等反向代理软件后,这个方法会失效。

    * 本方法先从Header中获取X-Real-IP,如果不存在再从X-Forwarded-For获得第一个IP(用,分割),
    * 如果还不存在则调用 Request.getRemoteAddr() 。
    `

  3. 如何获取Spring Boot项目中的连接端IP地址?
    https://stackoverflow.com/questions/22877350/how-to-extract-ip-address-in-spring-mvc-controller-get-call
    `
    使用 HttpServletRequest.getRemoteAddr() 获取(在方法参数中添加 HttpServletRequest 即可),
    不要用 headers.get(“X-Real-IP”) 等方式。
    `
    https://en.wikipedia.org/wiki/X-Forwarded-For
    https://howtodoinjava.com/tomcat/tomcat-get-real-ip-behind-load-balancer/

    Java获取HTTP请求的真实IP
    https://blog.csdn.net/zebe1989/article/details/82692315
    http://www.zebe.me/java-get-real-ip/index.html
    `
    不断尝试解析 HttpServletRequest 对象,先后获取:
    X-Real-IP
    X-Forwarded-For
    // 其它的企业内部自定义header标识
    `

发表评论

电子邮件地址不会被公开。 必填项已用*标注