记住两点就好了
(1) 借助MongoTemplate
(2) 使用 com.alibaba.fastjson
直接看代码,一看就懂的。
实体类定义:
import com.google.gson.JsonObject;
import lombok.Getter;
import lombok.Setter;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;
import java.util.Map;
@Setter
@Getter
@Document(collection = "user") //指定集合名字
public class UserModel {
@Id //这个注解标识该字段对应集合里的每一行数据的mongo自定义生成的主键(16进制)
private String objectId;
@Field("NAME") //使用该注解可以修改存入到mongo里的字段名
private String name;
private Map<String, Object> map;
private JSONObject aliJson;
private JsonObject gson;
}
MongoTemplate使用
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
<version>自行指定版本</version>
</dependency>
基础的连接配置
- 单机版
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=test
- 集群版
spring.data.mongodb.uri=mongodb://192.168.3.61:27017,192.168.3.62:27017,192.168.3.63:27017/test
测试类
import com.alibaba.fastjson.JSONObject;
import com.google.gson.JsonObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
@RestController
@RequestMapping("mongo")
public class MongoTest {
@Autowired
private MongoTemplate mongoTemplate;
@PostMapping("test")
public void test(@RequestBody UserModel userModel) {
userModel.setGson(new JsonObject());
userModel.setAliJson(new JSONObject());
//将map里的值存入到两个json对象中,方便对比两种json插入到mongo里的区别
for (Map.Entry<String, Object> entry : userModel.getMap().entrySet()) {
userModel.getGson().addProperty(entry.getKey(), entry.getValue().toString());
userModel.getAliJson().put(entry.getKey(), entry.getValue());
}
mongoTemplate.insert(userModel);
}
}
发起请求测试:
mongdb中:
很明显,可以看出来fastjson使用起来更方便,起码是直接把map里的字段原封不动的写入到了Mongo中, 前提不考虑顺序,哈哈哈哈 。