Spring Boot 整合 MongoDB的示例
本节使用springboot 2.1.9.release,示例源码在
springboot可以非常方便地引入和操作mongodb。本节分两部分,记录个人学习springboot使用mongodb数据库的一些知识。
第一部分是一个简单的springboot连接mongo的demo,测试查询功能。
第二部分是基于mongo实现的增删改查数据示例。
本节使用springboot 2.1.9.release
一、a simple demo
首先来演示springboot项目引入mongodb,以及一个简单的findall操作。
maven依赖:
<dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-data-mongodb</artifactid> </dependency>
环境配置:
application.yml文件中写入如下配置,test表示mongodb中的test表
spring: data: mongodb: uri: "mongodb://localhost:27017/test"
以一个bean类为例:
package com.example; public class user { private string id; private string name; private integer age; private integer grade; // ... ignore getter and setter // override its tostring method @override public string tostring() { return "user{" + "id='" + id + '\'' + ", name='" + name + '\'' + ", age=" + age + ", grade=" + grade + '}'; } }
在mongodb数据库中新建一个collection(也就是表),名字叫user,插入几条数据,比如:
注:这里用的可视化工具是robo 3t:
我们这里先默认javabean的字段与user表的字段名保持一致。
下面我们编写测试类:
@springboottest @runwith(springrunner.class) public class mongotest { @autowired private mongotemplate mongotemplate; @test public void test1() { list<user> userlist = mongotemplate.findall(user.class); if (userlist != null && userlist.size() > 0) { userlist.foreach(user -> { system.out.println(user.tostring()); }); } } }
运行测试类,输出如下:
user{id='5d243534514701183f5fcab8', name='zf0', age=12, grade=1} user{id='5d243534514701183f5fcab9', name='zf1', age=13, grade=2} user{id='5d243534514701183f5fcaba', name='zf2', age=14, grade=3} user{id='5d243534514701183f5fcabb', name='zf3', age=15, grade=4} user{id='5d243534514701183f5fcabc', name='zf4', age=16, grade=5}
二、基于springboot的mongodb增删改查操作
下面来实现一个基于springboot的对mongodb增删改查操作的简单示例,依然使用上面的环境:
maven:
<dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-web</artifactid> </dependency> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-test</artifactid> <scope>test</scope> </dependency> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-data-mongodb</artifactid> </dependency> <dependency> <groupid>com.alibaba</groupid> <artifactid>fastjson</artifactid> <version>1.2.60</version> </dependency>
yml:
server: port: 8866 spring: data: mongodb: uri: "mongodb://localhost:27017/test"
user类:
这里我们清楚一下之前的数据,把mongo里的user表里的数据全部删掉。
注:这里用的可视化工具admin-mongo:https://github.com/mrvautin/adminmongo
新建一个不同的user类:
@document("user") public class user { @id private string id; @field("name") private string name; @field("password") private string password; @field("address") private string address; @field("create_time") private date createtime; @field("last_update_time") private date lastupdatetime; // ... ignore getter and setter methods @override public string tostring() { return jsonobject.tojsonstring(this); } }
此处定义一个jsonresult类,用于封装接口返回数据:
import com.alibaba.fastjson.jsonobject; import java.util.hashmap; import java.util.map; public class jsonresult { /** * 未登录 */ public static final int no_login = 400; /** * 登录失败 */ public static final int login_failed = 401; /** * token过期 */ public static final int token_expired = 402; /** * 无权限 */ public static final int no_permission = 403; private boolean success; private integer code; private string msg; private object data; public jsonresult(boolean success) { this.success = success; } public jsonresult(boolean success, string msg) { this.success = success; this.msg = msg; } public jsonresult(integer code, boolean success, string msg) { this.code = code; this.success = success; this.msg = msg; } public jsonresult(boolean success, object data) { this.success = success; this.data = data; } public jsonresult(boolean success, integer code, string msg, object data) { this.success = success; this.code = code; this.msg = msg; this.data = data; } // ... ignore getter and setter methods public void put(string key, object value) { if (data == null) { data = new hashmap<>(); } ((map) data).put(key, value); } public void putall(map<string, object> map) { if (data == null) { data = new hashmap<>(); } ((map) data).putall(map); } @override public string tostring() { return jsonobject.tojsonstring(this); } }
下面编写测试接口类,实现用户的新增、删除、更新、查询功能
usercontroller类:
@restcontroller @requestmapping(value = "user") public class usercontroller { @autowired private mongotemplate mongotemplate; @getmapping(value = "") public jsonresult list() { list<user> userlist = mongotemplate.findall(user.class, "user"); return new jsonresult(true, userlist); } @postmapping(value = "") public jsonresult add(user user) { string msg = verifysaveform(user); if (!stringutils.isempty(msg)) { return new jsonresult(false, msg); } if (user.getid() == null) { user.setcreatetime(new date()); user.setlastupdatetime(new date()); user newuser = mongotemplate.insert(user, "user"); return new jsonresult(true, newuser); } else { query query = new query(); query.addcriteria(criteria.where("_id").is(user.getid())); update update = new update(); update.set("name", user.getname()); update.set("password", user.getpassword()); update.set("address", user.getaddress()); update.set("last_update_time", new date()); updateresult updateresult = mongotemplate.updatefirst(query, update, "user"); return new jsonresult(true, updateresult); } } @deletemapping(value = "{id}") public jsonresult delete(@pathvariable string id) { query query = new query(); query.addcriteria(criteria.where("_id").is(id)); deleteresult deleteresult = mongotemplate.remove(query, user.class, "user"); return new jsonresult(true, deleteresult); } // private methods private string verifysaveform(user user) { if (user == null || stringutils.isempty(user.getname())) { return "用户名不能为空"; } else if (user.getpassword() == null) { return "密码不能为空"; } return null; } }
下面用postman模拟一下请求:
新增用户:
查看mongodb:
更改数据,新增多个用户:
列表查询:
更改user:
删除user:
好,到此为止,我们已经在springboot项目中引入了mongodb,并实现了基本的增删改查操作,这将是我们使用mongodb开发更加复杂的业务的基础!
以上就是spring boot 整合 mongodb的示例的详细内容,更多关于spring boot 整合 mongodb的资料请关注其它相关文章!
推荐阅读
-
SpringBoot轻松整合MongoDB的全过程记录
-
ZendFramework2 与MongoDB的整合
-
Spring整合Quartz实现一个简单的定时任务
-
MongoDB中文档的更新操作示例详解
-
Spring-Boot 集成Solr客户端的详细步骤
-
用Spring Boot进行后端开发(二):与微信小程序的交互,在微信小程序端获取数据并显示
-
详解配置spring-boot-actuator时候遇到的一些小问题
-
spring boot的maven配置依赖详解
-
把spring boot项目发布tomcat容器(包含发布到tomcat6的方法)
-
使用 Spring Boot 内嵌容器 Undertow创建服务器的方法