2019独角兽企业重金招聘Python工程师标准>>>
一、说明
1.可以知道的是mongodb2.x和3.x置是不同的。
2.这里只说明需要权限验证的配置
3.最好spring 4.2.6以上吧(反正我这样完成的配置测试修改 需要4.2.6版本)+MongoDB 3.2.13 其他的版本不清楚。
4.具体jar 不多说 版本如图 驱动3.2.1 ----spring支持mongodb 包1.10
二、配置
1.spring-mongodb.xml
还查到一种配置
2.springMVC-context.xml
三、java 工具类+流程代码
1.mongodb操作模板MongoTemplate 在服务启动,spring-mongodb.xml加载时加载模板
package com.xxxx.mongoDao.daoImp;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.data.mongodb.core.MongoTemplate;
public abstract class AbstractBaseMongoTemplete implements ApplicationContextAware {
protected MongoTemplate mongoTemplate;
/**
* @Description 根据配置文件设置mongoTemplate
* @param mongoTemplate
*/
public void setMongoTemplate(MongoTemplate mongoTemplate) {
this.mongoTemplate = mongoTemplate;
}
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
MongoTemplate mongoTemplate = applicationContext.getBean("mongoTemplate", MongoTemplate.class);
setMongoTemplate(mongoTemplate);
System.out.println("mongoTemplate===" + mongoTemplate);
}
}
2.java实体--对应---Mongodb 中collection(table/集合)
import java.io.Serializable;
public class UserModel implements Serializable {
private static final long serialVersionUID = 1L;
private String name;
private int age;
public UserModel(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "UserModel [name=" + name + ", age=" + age + "]";
}
}
3.Dao层接口UserDao
import java.util.List;
import com.mongodb.BasicDBList;
import com.mongodb.DBObject;
public interface UserDao {
/**
* 查询所有
*
* @author lennon
* @return
* @time 2017-5-24 下午4:18:55
* @version
*/
public List findAll();
/**
* 新增数据
*
* @author lennon
* @param user
* @time 2017-5-24 下午4:19:08
* @version
*/
public void insertUser(UserModel user);
/**
* 删除数据
*
* @author lennon
* @param userName
* @time 2017-5-24 下午4:19:17
* @version
*/
public void removeUser(String userName);
/**
* 修改数据
*
* @author lennon
* @param user
* @time 2017-5-24 下午4:19:25
* @version
*/
public void updateUser(UserModel user);
/**
* 按条件查询
*
* @author lennon
* @param userName
* @return
* @time 2017-5-24 下午4:19:32
* @version
*/
public List findForRequery(String userName);
/**
* mongodb简单的分组查询
*
* @author lennon
* @return
* @time 2017-5-24 下午4:19:41
* @version
*/
public BasicDBList mongoGroup();
public void saveData(DBObject obj);
}
接口实现类UserDaoImp** 注意(注解),具体实现还有待完善,也没有完全明白**
@Component("UserDaoImp")
public class UserDaoImp extends AbstractBaseMongoTemplete implements UserDao {
@Override
public List findAll() {
// 需要设置集合对应的尸体类和相应的集合名,从而查询结果直接映射
System.out.println("mongoTemplate==" + mongoTemplate);
List userList = mongoTemplate.findAll(UserModel.class, "user");
return userList;
}
@Override
public void insertUser(UserModel user) {
// 设置需要插入到数据库的文档对象
DBObject object = new BasicDBObject();
object.put("name", user.getName());
object.put("age", user.getAge());
mongoTemplate.insert(object, "user");
}
@Override
public void removeUser(String userName) {
// 设置删除条件,如果条件内容为空则删除所有
Query query = new Query();
Criteria criteria = new Criteria("name");
criteria.is(userName);
query.addCriteria(criteria);
mongoTemplate.remove(query, "user");
}
@Override
public void updateUser(UserModel user) {
// 设置修改条件
Query query = new Query();
Criteria criteria = new Criteria("name");
criteria.is(user.getName());
query.addCriteria(criteria);
// 设置修改内容
Update update = Update.update("age", user.getAge());
// 参数:查询条件,更改结果,集合名
mongoTemplate.updateFirst(query, update, "user");
}
@Override
public List findForRequery(String userName) {
Query query = new Query();
Criteria criteria = new Criteria("name");
criteria.regex(".*?" + "a" + ".*");
// criteria.is(userName);
// Pattern pattern = Pattern.compile("^.*a.*$",
// Pattern.CASE_INSENSITIVE);
// DBObject object = new BasicDBObject();
// object.put("name", pattern);
// criteria.is(object);
// criteria.
// query.addCriteria(criteria);
// mongoTemplate.find(new Query(new Criteria(
// "name").regex(".*?"+"张"+".*")).limit(9), User.class);
// 查询条件,集合对应的实体类,集合名
query.addCriteria(criteria);
List userList = mongoTemplate.find(query, UserModel.class, userName);
return userList;
}
@Override
public BasicDBList mongoGroup() {
// TODO Auto-generated method stub
GroupBy groupBy = GroupBy.key("age").initialDocument("{count:0}").reduceFunction("function(doc, out){out.count++}").finalizeFunction("function(out){return out;}");
GroupByResults res = mongoTemplate.group("test", groupBy, UserModel.class);
DBObject obj = res.getRawResults();
BasicDBList dbList = (BasicDBList) obj.get("retval");
return dbList;
}
@Override
public void saveData(DBObject obj) {
mongoTemplate.save(obj, "test");
}
}
4.controller 实现调用
/**
* @author lennon
*
*/
@Controller
public class MongoDb {
@Autowired
private UserDao userDao;
@RequestMapping(value = "setMongo")
public void setMongo(HttpServletRequest request, HttpServletResponse response) {
// userDao.findAll();
UserModel user = new UserModel("皇帝1", 10000);
userDao.insertUser(user);
}
}
该例子只实现了 编译运行 简单操作没问题 做到对使用mongodb的了解,以后还要慢慢深入