配置如下:
application.yml文件内容如下
spring:
data:
mongodb:
host: 192.168.9.234 #指定mongodb服务地址
port: 27017 #指定端口,默认就为27017
database: blog #指定使用的数据库(集合)
authentication-database: admin # 登录认证的逻辑库名
username: admin #用户名
password: 123456 #密码
main:
banner-mode: off
server:
port: 8080
公共类如下
ibasicdao类:
package com.zingrow.blog.common;
import com.mongodb.client.result.deleteresult;
import com.mongodb.client.result.updateresult;
import org.springframework.data.mongodb.core.mongotemplate;
import org.springframework.data.mongodb.core.query.query;
import org.springframework.data.mongodb.core.query.update;
import java.util.list;
public interface ibasicdao<t> {
/**
* 查询数据
*
* @param query
* @return
*/
list<t> find(query query);
/**
* 分页查询
*
* @param query
* @param start
* @param size
* @return
*/
list<t> findlist(query query, int start, int size);
/**
* 根据id查询
*
* @param id
* @return
*/
t findone(string id);
/**
* 插入一条数据
*
* @param entity
*/
void insert(t entity);
/**
* 更新数据
*
* @param query
* @param update
* @return
*/
updateresult update(query query, update update);
/**
* 根据实体类删除数据
*
* @param entity
* @return
*/
deleteresult delete(t entity);
/**
* 根据query删除数据
*
* @param query
* @return
*/
deleteresult remove(query query);
long count();
long count(query query);
void save(t entity);
list<t> findall();
list<t> findbykeyandvalue(string key, string value);
list<t> findbykeyandvalue(string key, string value, int start, int limit);
void upsert(query query, update update);
mongotemplate getmongotemplate();
}
其实现类basicdao内容如下
package com.zingrow.blog.common;
import com.mongodb.client.result.deleteresult;
import com.mongodb.client.result.updateresult;
import org.springframework.beans.factory.annotation.autowired;
import org.springframework.data.domain.sort;
import org.springframework.data.mongodb.core.mongotemplate;
import org.springframework.data.mongodb.core.query.criteria;
import org.springframework.data.mongodb.core.query.query;
import org.springframework.data.mongodb.core.query.update;
import java.lang.reflect.parameterizedtype;
import java.util.list;
public class basicdao<t> implements ibasicdao<t> {
private class<t> clazz;
public basicdao() {
parameterizedtype type = (parameterizedtype) getclass().getgenericsuperclass();
clazz = (class<t>) type.getactualtypearguments()[0];
}
@autowired
private mongotemplate mongotemplate;
@override
public list<t> find(query query) {
return mongotemplate.find(query, clazz);
}
@override
public list<t> findlist(query query, int start, int size) {
query.with(sort.by(new sort.order(sort.direction.asc, "_id")))
.skip(start)
.limit(size);
return mongotemplate.find(query, clazz);
}
@override
public t findone(string id) {
query query = new query();
query.addcriteria(new criteria("_id").is(id));
return mongotemplate.findone(query, clazz);
}
@override
public void insert(t entity) {
mongotemplate.insert(entity);
}
@override
public updateresult update(query query, update update) {
return mongotemplate.updatemulti(query, update, clazz);
}
@override
public deleteresult delete(t entity) {
return mongotemplate.remove(entity);
}
@override
public deleteresult remove(query query) {
return mongotemplate.remove(query, clazz);
}
public deleteresult remove(string id) {
query query = new query();
query.addcriteria(criteria.where("id").is(id));
return mongotemplate.remove(query, clazz);
}
@override
public long count() {
query query = new query();
return mongotemplate.count(query, clazz);
}
@override
public long count(query query) {
return mongotemplate.count(query, clazz);
}
@override
public void save(t entity) {
mongotemplate.save(entity);
}
@override
public list<t> findall() {
query query = new query();
return find(query);
}
@override
public list<t> findbykeyandvalue(string key, string value) {
query query = new query(criteria.where(key).is(value));
return mongotemplate.find(query, clazz);
}
@override
public list<t> findbykeyandvalue(string key, string value, int start, int limit) {
query query = new query(criteria.where(key).is(value));
query.skip(start).limit(limit);
return mongotemplate.find(query, clazz);
}
@override
public void upsert(query query, update update) {
mongotemplate.upsert(query, update, clazz);
}
@override
public mongotemplate getmongotemplate() {
return mongotemplate;
}
}
实体类(article)如下
package com.zingrow.blog.entity;
import org.springframework.data.annotation.id;
import org.springframework.data.mongodb.core.mapping.document;
@document(collection = "article")
public class article {
@id
private string id;
private string title;
private string classify;
private string content;
private string time;
public string getid() {
return id;
}
public void setid(string id) {
this.id = id;
}
public string gettitle() {
return title;
}
public void settitle(string title) {
this.title = title;
}
public string getclassify() {
return classify;
}
public void setclassify(string classify) {
this.classify = classify;
}
public string getcontent() {
return content;
}
public void setcontent(string content) {
this.content = content;
}
public string gettime() {
return time;
}
public void settime(string time) {
this.time = time;
}
public article(string id, string title, string classify, string content, string time) {
this.id = id;
this.title = title;
this.classify = classify;
this.content = content;
this.time = time;
}
@override
public string tostring() {
return "article{" +
"id='" + id + '\'' +
", title='" + title + '\'' +
", classify='" + classify + '\'' +
", content='" + content + '\'' +
", time='" + time + '\'' +
'}';
}
}
服务实现类(articleserviceimpl)
package com.zingrow.blog.service;
import com.zingrow.blog.common.basicdao;
import com.zingrow.blog.entity.article;
import org.springframework.stereotype.service;
@service
public class articleserviceimpl extends basicdao<article> {
}
控制类(articlecontroller)
package com.zingrow.blog.contronller;
import com.zingrow.blog.entity.article;
import com.zingrow.blog.service.articleserviceimpl;
import org.springframework.beans.factory.annotation.autowired;
import org.springframework.web.bind.annotation.crossorigin;
import org.springframework.web.bind.annotation.getmapping;
import org.springframework.web.bind.annotation.restcontroller;
@restcontroller
@crossorigin(value = "*", maxage = 300)
public class articlecontroller {
@autowired
private articleserviceimpl articleservice;
@getmapping("add")
public string add(article article) {
articleservice.insert(article);
return article.tostring();
}
}
成功插入数据后

发现多了个_class字段,解决办法如下
新建配置类(mongoconfig)
package com.zingrow.blog.config;
import org.springframework.context.annotation.bean;
import org.springframework.context.annotation.configuration;
import org.springframework.data.mongodb.mongodatabasefactory;
import org.springframework.data.mongodb.core.mongotemplate;
import org.springframework.data.mongodb.core.convert.dbrefresolver;
import org.springframework.data.mongodb.core.convert.defaultdbrefresolver;
import org.springframework.data.mongodb.core.convert.defaultmongotypemapper;
import org.springframework.data.mongodb.core.convert.mappingmongoconverter;
import org.springframework.data.mongodb.core.mapping.mongomappingcontext;
@configuration
public class mongoconfig {
@bean(name = "mongotemplate")
public mongotemplate mongotemplate(mongodatabasefactory mongodatabasefactory, mongomappingcontext mongomappingcontext) {
dbrefresolver dbrefresolver = new defaultdbrefresolver(mongodatabasefactory);
mappingmongoconverter mappingconverter = new mappingmongoconverter(dbrefresolver, mongomappingcontext);
//去掉_class字段
mappingconverter.settypemapper(new defaultmongotypemapper(null));
return new mongotemplate(mongodatabasefactory,mappingconverter);
}
}
结果如下

失败案例:
新建配置类(在实际项目引入时可能会报mongodbfactory已被废弃)
@configuration
public class mongoconfig {
@bean
public mappingmongoconverter mappingmongoconverter(mongodbfactory factory, mongomappingcontext context, beanfactory beanfactory) {
dbrefresolver dbrefresolver = new defaultdbrefresolver(factory);
mappingmongoconverter mappingconverter = new mappingmongoconverter(dbrefresolver, context);
try {
mappingconverter.setcustomconversions(beanfactory.getbean(customconversions.class));
} catch (nosuchbeandefinitionexception ignore) {
}
// don't save _class to mongo
mappingconverter.settypemapper(new defaultmongotypemapper(null));
return mappingconverter;
以上就是如何去掉保存mongodb数据时出现的_class字段的详细内容,更多关于mongodb出现_class字段的资料请关注代码网其它相关文章!
发表评论