博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用spring连接及操作mongodb3.0
阅读量:6292 次
发布时间:2019-06-22

本文共 11190 字,大约阅读时间需要 37 分钟。

前边有一篇记录过不使用spring,直接在java代码中连接和操作mongodb数据库,这里就紧随其后记录一下使用spring的情况下,在java中简单操作mongodb。
maven导包配置:
因为涉及了sping以及springmvc,因此也需要导入它们相关的包:
4.0.0
spring_mongo
spring_mongo
war
0.0.1-SNAPSHOT
spring_mongo Maven Webapp
http://maven.apache.org
org.springframework.data
spring-data-mongodb
1.8.0.RELEASE
org.mongodb
mongo-java-driver
3.0.3
commons-logging
commons-logging
1.2
org.springframework
spring-test
4.1.6.RELEASE
junit
junit
4.11
org.springframework
spring-context
4.1.7.RELEASE
org.springframework
spring-context-support
4.0.9.RELEASE
maven-compiler-plugin
2.3.2
1.7
1.7
UTF-8
${java.home}/lib/rt.jar;${java.home}/lib/jce.jar
spring_mongo
spring基础配置:
主要是开启注解扫描等:
spring连接mongodb以及建立相关工厂的配置:
与数据库对应的实体类:
需要注意的是这里需要实现序列化的接口并设置uid的属性,否则不能在操作中直接把数据库返回结果转换成对象属性:
package spring_mongo.models;import java.io.Serializable;public class UserModel implements Serializable {    private static final long serialVersionUID = 1L;    private String userName;    private String password;    public UserModel(String userName, String password) {        super();        this.userName = userName;        this.password = password;    }    public String getUserName() {        return userName;    }    public void setUserName(String userName) {        this.userName = userName;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }}
根据spring配置获取操作mongodb的MongoTemplete,需要实现ApplicationContextAware接口:
package spring_mogo.dao.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);    }}
操作数据库的接口以及对应的实现类:
演示了最基础的增删改查,需要注意的地方在于参数的声明以及接收返回数据时和实体类的转换:
(1)接口:
package spring_mogo.dao;import java.util.List;import spring_mongo.models.UserModel;public interface UserDao {    /**     * 查询数据     *      * @author:tuzongxun     * @Title: findAll     * @param @return     * @return List
* @date May 13, 2016 3:07:39 PM * @throws */ public List
findAll(); /** * 新增数据 * * @author:tuzongxun * @Title: insertUser * @param @param user * @return void * @date May 13, 2016 3:09:45 PM * @throws */ public void insertUser(UserModel user); /** * 删除数据 * * @author:tuzongxun * @Title: removeUser * @param @param userName * @return void * @date May 13, 2016 3:09:55 PM * @throws */ public void removeUser(String userName); /** * 修改数据 * * @author:tuzongxun * @Title: updateUser * @param @param user * @return void * @date May 13, 2016 3:10:06 PM * @throws */ public void updateUser(UserModel user); /** * 按条件查询 * * @author:tuzongxun * @Title: findForRequery * @param * @return void * @date May 13, 2016 3:23:37 PM * @throws */ public List
findForRequery(String userName);}
(2)实现类,这里要继承
AbstractBaseMongoTemplete类,从而获得mongoTemplete进行各种操作:
package spring_mogo.dao.daoImp;import java.util.List;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 org.springframework.stereotype.Component;import spring_mogo.dao.UserDao;import spring_mongo.models.UserModel;import com.mongodb.BasicDBObject;import com.mongodb.DBObject;@Component("UserDaoImp")public class UserDaoImp extends AbstractBaseMongoTemplete implements UserDao {    /**     * 查询所有数据     *      * @author:tuzongxun     * @Title: findAll     * @Description: TODO     * @param @return     * @date May 13, 2016 3:10:29 PM     * @throws     */    @Override    public List
findAll() { // 需要设置集合对应的尸体类和相应的集合名,从而查询结果直接映射 List
userList = mongoTemplate.findAll(UserModel.class, "user"); return userList; } /** * 新增数据 * * @author:tuzongxun * @Title: insertUser * @Description: TODO * @param @param user * @date May 13, 2016 3:10:45 PM * @throws */ @Override public void insertUser(UserModel user) { // 设置需要插入到数据库的文档对象 DBObject object = new BasicDBObject(); object.put("userName", user.getUserName()); object.put("password", user.getPassword()); mongoTemplate.insert(object, "user"); } /** * 按条件删除数据 * * @author:tuzongxun * @Title: removeUser * @Description: TODO * @param @param userName * @date May 13, 2016 3:11:01 PM * @throws */ @Override public void removeUser(String userName) { // 设置删除条件,如果条件内容为空则删除所有 Query query = new Query(); Criteria criteria = new Criteria("userName"); criteria.is(userName); query.addCriteria(criteria); mongoTemplate.remove(query, "user"); } /** * 修改数据 * * @author:tuzongxun * @Title: updateUser * @Description: TODO * @param @param user * @date May 13, 2016 3:11:12 PM * @throws */ @Override public void updateUser(UserModel user) { // 设置修改条件 Query query = new Query(); Criteria criteria = new Criteria("userName"); criteria.is(user.getUserName()); query.addCriteria(criteria); // 设置修改内容 Update update = Update.update("password", user.getPassword()); // 参数:查询条件,更改结果,集合名 mongoTemplate.updateFirst(query, update, "user"); } /** * 根据条件查询 * * @author:tuzongxun * @Title: findForRequery * @Description: TODO * @param @param userName * @date May 13, 2016 4:08:15 PM * @throws */ @Override public List
findForRequery(String userName) { Query query = new Query(); Criteria criteria = new Criteria("userName"); criteria.is(userName); query.addCriteria(criteria); // 查询条件,集合对应的实体类,集合名 List
userList = mongoTemplate.find(query, UserModel.class, "user"); return userList; }}
测试类:
为了验证以上代码和配置的正确性,测试类代码如下:
package spring_mongo.test;import java.util.List;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import spring_mogo.dao.UserDao;import spring_mongo.models.UserModel;@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = { "classpath:spring.xml" })public class mongoTest {    @Autowired    private UserDao userDao;    /**     * 查询测试     *      * @author:tuzongxun     * @Title: monFindTest     * @param     * @return void     * @date May 13, 2016 3:27:51 PM     * @throws     */    @Test    public void monFindTest() {        List
userModels = userDao.findAll(); if (userModels != null && userModels.size() > 0) { for (UserModel user : userModels) { System.out.println(user.getUserName() + ":" + user.getPassword()); } } } /** * 插入数据测试 * * @author:tuzongxun * @Title: monInsertTest * @param * @return void * @date May 13, 2016 3:27:38 PM * @throws */ @Test public void monInsertTest() { UserModel user = new UserModel("test111", "123456"); userDao.insertUser(user); this.monFindTest(); } /** * 删除测试 * * @author:tuzongxun * @Title: monRemoveTest * @param * @return void * @date May 13, 2016 3:28:06 PM * @throws */ @Test public void monRemoveTest() { String userName = "test111"; userDao.removeUser(userName); this.monFindTest(); } /** * 测试修改 * * @author:tuzongxun * @Title: monUpdateTest * @param * @return void * @date May 13, 2016 3:50:08 PM * @throws */ @Test public void monUpdateTest() { UserModel user = new UserModel("test111", "test"); userDao.updateUser(user); this.monFindTest(); } /** * 按条件查询 * * @author:tuzongxun * @Title: monFindForRuq * @param * @return void * @date May 13, 2016 4:10:53 PM * @throws */ @Test public void monFindForRuq() { String userName = "test111"; List
userModels = userDao.findForRequery(userName); if (userModels != null && userModels.size() > 0) { for (UserModel user : userModels) { System.out.println(user.getUserName() + ":" + user.getPassword()); } } }}

转载地址:http://zeuta.baihongyu.com/

你可能感兴趣的文章
SpringMVC中与Spring相关的@注解
查看>>
在线求助 man page(转)
查看>>
Android基础控件SeekBar拖动条的使用
查看>>
PTA基础编程题目集6-2多项式求值(函数题)
查看>>
中国大学MOOC-JAVA学习(浙大翁恺)—— 信号报告
查看>>
Linux下Firefox汉化方法
查看>>
OC API
查看>>
Java遍历包中所有类方法注解
查看>>
[JLOI2014]松鼠的新家
查看>>
struts2 ognl 调用静态方法
查看>>
微软职位内部推荐-Senior Software Engineer
查看>>
力软框架 接口映射的时候不能修改添加接口原因
查看>>
ArrayList与string、string[]的转换代码
查看>>
关于Java加载属性文件放在web容器不好使的解决办法
查看>>
PHP使用RabbitMQ实例
查看>>
plsql导入excel文件
查看>>
疑难en_a
查看>>
[Java入门笔记] Java语言基础(四):流程控制
查看>>
cubla sample-code
查看>>
ACM中出现RuntimeError的原因及可能的解决办法
查看>>