在使用data mongodb插入数据的时候,插入后文档中会多出一个_class.
定义实体类
public class User {
String username;
String password;
//...getters and setters
}
保存
User user = new User("yinjihuan", "password123");
mongoTemplate.save(user);
查询
> db.users.find()
{
"_class" : "com.cxytiandi.bean.User",
"_id" : ObjectId("5050aef830041f24ff2bd16e"),
"password" : "password123",
"username" : "yinjihuan"
}
想要去掉需要修改MappingMongoConverter的typemapper为new DefaultMongoTypeMapper(null)
使用注解方式自己创建template对象替代spring boot为我们默认创建的。
@Configuration
public class SpringMongoConfig{
public @Bean MongoDbFactory mongoDbFactory() throws Exception {
return new SimpleMongoDbFactory(new Mongo(), "database");
}
public @Bean MongoTemplate mongoTemplate() throws Exception {
//remove _class
MappingMongoConverter converter =
new MappingMongoConverter(mongoDbFactory(), new MongoMappingContext());
converter.setTypeMapper(new DefaultMongoTypeMapper(null));
MongoTemplate mongoTemplate = new MongoTemplate(mongoDbFactory(), converter);
return mongoTemplate;
}
}
如果不是spring boot项目则可以用xml配置。
<mongo:mongo host="localhost" port="27017" />
<mongo:db-factory dbname="database" />
<bean id="mappingContext"
class="org.springframework.data.mongodb.core.mapping.MongoMappingContext" />
<bean id="defaultMongoTypeMapper"
class="org.springframework.data.mongodb.core.convert.DefaultMongoTypeMapper">
<constructor-arg name="typeKey"><null/></constructor-arg>
</bean>
<bean id="mappingMongoConverter"
class="org.springframework.data.mongodb.core.convert.MappingMongoConverter">
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
<constructor-arg name="mappingContext" ref="mappingContext" />
<property name="typeMapper" ref="defaultMongoTypeMapper" />
</bean>
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
<constructor-arg name="mongoConverter" ref="mappingMongoConverter" />
</bean>