javaWeb项目中集成MongoDB-3.x数据库

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

一、说明

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

javaWeb项目中集成MongoDB-3.x数据库_第1张图片

二、配置

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的了解,以后还要慢慢深入

转载于:https://my.oschina.net/u/1985317/blog/889425

你可能感兴趣的:(javaWeb项目中集成MongoDB-3.x数据库)