spring集成mongodb封装的简单的CRUD
来源:互联网 发布:财神爷抢红包软件 编辑:程序博客网 时间:2024/05/16 10:28
1、什么是mongodb
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。mongoDB
2、和spring集成
最近公司的项目有用到mongodb,主要用于存储日志记录,所以研究了下它和spring的集成,并且做了个简单的CRUD的封装,首先用到的包是:
spring-3.1.x以上的相关包(必须是3.1.x以上,否则集成之后运行会报错)
spring-data-mongodb-1.3.0.M1.jar
先看配置文件(spring-mongodb.xml)
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:mongo="http://www.springframework.org/schema/data/mongo"
- xsi:schemaLocation=
- "http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-3.0.xsd
- http://www.springframework.org/schema/data/mongo
- http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd
- http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
- <mongo:db-factory id="mongoDbFactory"
- host="${mongo.host}"
- port="${mongo.port}"
- dbname="${mongo.dbname}"
- username="${mongo.username}"
- password="${database.password}"/>
- <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
- <constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/>
- </bean>
- </beans>
其中:host为mongodb服务器地址,port为端口号,dbname为数据库名,username为mongodb用户名,password为mongodb密码,好了,全部配置就在这里。
接下来就是CRUD封装类
- package cn.sunsharp.alibaba.core.mongo;
- import java.util.List;
- import org.springframework.data.mongodb.core.query.Query;
- import org.springframework.data.mongodb.core.query.Update;
- import cn.sunsharp.alibaba.core.Page;
- public interface BaseMongoDAO<T> {
- /**
- * 通过条件查询实体(集合)
- *
- * @param query
- */
- public List<T> find(Query query) ;
- /**
- * 通过一定的条件查询一个实体
- *
- * @param query
- * @return
- */
- public T findOne(Query query) ;
- /**
- * 通过条件查询更新数据
- *
- * @param query
- * @param update
- * @return
- */
- public void update(Query query, Update update) ;
- /**
- * 保存一个对象到mongodb
- *
- * @param entity
- * @return
- */
- public T save(T entity) ;
- /**
- * 通过ID获取记录
- *
- * @param id
- * @return
- */
- public T findById(String id) ;
- /**
- * 通过ID获取记录,并且指定了集合名(表的意思)
- *
- * @param id
- * @param collectionName
- * 集合名
- * @return
- */
- public T findById(String id, String collectionName) ;
- /**
- * 分页查询
- * @param page
- * @param query
- * @return
- */
- public Page<T> findPage(Page<T> page,Query query);
- /**
- * 求数据总和
- * @param query
- * @return
- */
- public long count(Query query);
- }
实现:
- package cn.sunsharp.alibaba.core.mongo.impl;
- import java.util.List;
- import org.springframework.data.mongodb.core.MongoTemplate;
- import org.springframework.data.mongodb.core.query.Query;
- import org.springframework.data.mongodb.core.query.Update;
- import cn.sunsharp.alibaba.core.Page;
- import cn.sunsharp.alibaba.core.ReflectionUtils;
- import cn.sunsharp.alibaba.core.mongo.BaseMongoDAO;
- public abstract class BaseMongoDAOImpl<T> implements BaseMongoDAO<T>{
- private static final int DEFAULT_SKIP = 0;
- private static final int DEFAULT_LIMIT = 200;
- /**
- * spring mongodb 集成操作类
- */
- protected MongoTemplate mongoTemplate;
- @Override
- public List<T> find(Query query) {
- return mongoTemplate.find(query, this.getEntityClass());
- }
- @Override
- public T findOne(Query query) {
- return mongoTemplate.findOne(query, this.getEntityClass());
- }
- @Override
- public void update(Query query, Update update) {
- mongoTemplate.findAndModify(query, update, this.getEntityClass());
- }
- @Override
- public T save(T entity) {
- mongoTemplate.insert(entity);
- return entity;
- }
- @Override
- public T findById(String id) {
- return mongoTemplate.findById(id, this.getEntityClass());
- }
- @Override
- public T findById(String id, String collectionName) {
- return mongoTemplate.findById(id, this.getEntityClass(), collectionName);
- }
- @Override
- public Page<T> findPage(Page<T> page,Query query){
- long count = this.count(query);
- page.setTotal(count);
- int pageNumber = page.getPageNumber();
- int pageSize = page.getPageSize();
- query.skip((pageNumber - 1) * pageSize).limit(pageSize);
- List<T> rows = this.find(query);
- page.setRows(rows);
- return page;
- }
- @Override
- public long count(Query query){
- return mongoTemplate.count(query, this.getEntityClass());
- }
- /**
- * 获取需要操作的实体类class
- *
- * @return
- */
- private Class<T> getEntityClass(){
- return ReflectionUtils.getSuperClassGenricType(getClass());
- }
- /**
- * 注入mongodbTemplate
- *
- * @param mongoTemplate
- */
- protected abstract void setMongoTemplate(MongoTemplate mongoTemplate);
- }
这样,就完成了spring和mongodb的集成,其实很简单的。测试话就直接调用相关方法就可以了。。。
0 0
- spring集成mongodb封装的简单的CRUD
- spring集成mongodb封装的简单的CRUD
- SpringData集成Mongodb封装简单的CRUD
- spring MongoDB 集成crud操作(简单封装)
- spring MongoDB 集成crud操作(简单封装)
- 简单的spring-data集成mongoDB项目,实现crud的功能
- Spring mongodb 之简单CRUD
- mongodb学习4-简单的CRUD
- MongoDB的一些简单CRUD操作
- jpa+spring对实体的crud和实现分页功能的简单实用的封装
- Spring对MongoDB的简单集成及数据操作
- Spring Data MongoDB 一:入门篇(环境搭建、简单的CRUD操作)
- Spring Data MongoDB 一:入门篇(环境搭建、简单的CRUD操作)
- Spring Data MongoDB 一:入门篇(环境搭建、简单的CRUD操作)
- Spring Data MongoDB 一:入门篇(环境搭建、简单的CRUD操作)
- jersey+spring+mybatis+maven框架集成和实现简单的crud
- Spring Data 与MongoDB 集成一:入门篇(开发环境搭建和简单CRUD)
- Spring Data 与MongoDB 集成一:入门篇(开发环境搭建和简单CRUD)
- vxworks Arm 架构下的中断
- 黑马程序员 JAVA基础 -面向对象(四)
- Android界面编程之一 View组件
- 解决 nginx 服务器不支持 ThinkPHP 框架的问题
- 对象变量和类变量
- spring集成mongodb封装的简单的CRUD
- C++ 标准IO库:面向对象的标准库
- Android界面编程之二 第一组UI组件:布局管理器
- JSP基础——分别使用表达式和脚本方式打印九九乘法表
- Android界面编程之三 第二组UI组件:TextView及其子类
- 最大熵与逻辑回归的等价性
- ScrollView的使用以及简单Demo
- 原子性操作atomic_t
- Android界面编程之四 第三组UI组件:ImageView及其子类