Spring对MongoDB的简单集成及数据操作
来源:互联网 发布:mac看不到隐藏资料库 编辑:程序博客网 时间:2024/06/05 17:08
Spring data 对MongoDB的操作也日趋成熟,只要配置好系统框架,其实后面的编码跟以前没什么区别,一样的实体,一样的查询。
使用Spring data 确保以下jar包被引用:
spring-data-mongodb-1.0.0.RELEASE.jar
spring-data-commons-1.2.0.RELEASE.jar
aopalliance-1.0.0.jar
commons-logging-1.1.1.jar
mongo-java-driver-2.5.3.jar
spring-aop-3.0.7.RELEASE.jar
spring-asm-3.0.7.RELEASE.jar
spring-beans-3.0.7.RELEASE.jar
spring-context-3.0.7.RELEASE.jar
spring-core-3.0.7.RELEASE.jar
spring-expression-3.0.7.RELEASE.jar
详细配置见官方文档:http://static.springsource.org/spring-data/data-mongodb/docs/current/reference/html/
applicationContext.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"> <!-- Annotation Config --> <context:annotation-config/><context:component-scan base-package="com.knowyou" /> <mongo:mongo host="localhost" port="27017" /> <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"> <constructor-arg ref="mongo"/> <constructor-arg name="databaseName" value="knowyou"/> </bean></beans>
其实到这里已经可以OK了,mongoTemplate已经提供了对MongoDB的各项操作。
为了操作方便我把基本的方法封装成一个Base的数据操作类,如下:
interface EntityDAO
package com.van.knowyou.base.dao;import java.util.List;public interface EntityDAO<T> {/** * 保存. * @param entity */void save(T entity);/** * 删除. * @param entity */void delete(T entity);/** * 根据ID查找. * @param id */T findById(String id);/** * 查找列表. * @return */List<T> list();}
EntityDAOImplMongo
package com.van.knowyou.base.dao.impl;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.mongodb.core.MongoOperations;import org.springframework.stereotype.Component;import com.van.knowyou.base.dao.EntityDAO;import com.van.knowyou.base.utils.TableUtils;/** * EntityDAO的MongoDB实现方式。 * @author Van * @date 2013-02-06 * @param <T> */@Componentpublic class EntityDAOImplMongo<T> implements EntityDAO<T>{ @Autowired private MongoOperations mongoOperations; private String tableName; private Class<T> entityClass; public EntityDAOImplMongo() { super(); } public EntityDAOImplMongo(Class<T> entityClass) { this.entityClass = entityClass; String className = this.entityClass.getName(); /**根据实体类名称产生表名*/ this.tableName=TableUtils.generateTableNameByClass(className); } @Override public void save(T entity){ mongoOperations.save(entity,tableName); } @Override public void delete(T entity){ mongoOperations.remove(entity,tableName); } @Override public T findById(String id){ return mongoOperations.findById(id,entityClass,tableName); } @Override public List<T> list(){ return mongoOperations.findAll(entityClass,tableName); }}
TableUtils 这个类也贴一下,因为MongoDB没有表的概念,所以需要根据实体为集合名一下名,我com.xx.User,那么我的集合名称为:t_user
package com.van.knowyou.base.utils;/** * 数据表赋值类. * @author Van * @date 2013-02-06 */public class TableUtils {/**数据表前缀*/private static final String TABLE_PREFIX="t_";/** * 根据实体Class名称产生对应的数据表名称。 * @param className * @return */public static String generateTableNameByClass(String className){int index = className.lastIndexOf(".")+1;String tableName=className.substring(index,className.length());return TABLE_PREFIX+tableName.toLowerCase();}}
以上的Base的数据操作类,下面是具体实现类的引用:
interface UserDAO
package com.van.knowyou.user.dao;import com.van.knowyou.base.dao.EntityDAO;import com.van.knowyou.user.entity.User;public interface UserDAO extends EntityDAO<User>{}
UserDAOImpl (这里需要注意以下,需要重写父类的构造,将具体的Class传入)
package com.van.knowyou.user.dao.impl;import org.springframework.stereotype.Component;import com.van.knowyou.base.dao.impl.EntityDAOImplMongo;import com.van.knowyou.user.dao.UserDAO;import com.van.knowyou.user.entity.User;@Componentpublic class UserDAOImpl extends EntityDAOImplMongo<User> implements UserDAO{public UserDAOImpl() {super(User.class);}}
其它Service类就不写了,直接通过接口调用方法就行。
另外,刚开始研究MongoDB,有些思路还不是很成熟,希望在这方面有经验的朋友不吝赐教,给我留言,谢谢。
- Spring对MongoDB的简单集成及数据操作
- spring MongoDB 集成crud操作(简单封装)
- spring MongoDB 集成crud操作(简单封装)
- 对MongoDB简单操作
- spring对数据库的简单操作及方法
- Mongodb简介及Spring集成
- Python对Mongodb的一些简单操作
- spring集成mongodb封装的简单的CRUD
- spring集成mongodb封装的简单的CRUD
- Mongodb安装及简单的CURD操作
- spring与mongodb的集成
- Spring boot下的对MongoDB的相关操作
- mongodb安装及简单操作
- MongoDB的简单操作
- mongodb的简单操作
- MongoDB的简单操作
- Mongodb的简单操作
- mongodb的简单操作
- 使用Tkinter做python的GUI编程
- select 应用
- MediaQueryList
- Spring:注解驱动MVC
- MSSQL 2008不能用IP登录和sa用户开启
- Spring对MongoDB的简单集成及数据操作
- 在Mac OS X 用C++编写OpenGL程序
- 一张触目惊心的图!
- Stimulsoft Reports.WinRT报表设计器正式版发布
- hdu - 2795 - Billboard(线段树)
- hibernate一级缓存和二级缓存的区别
- HDU_2027 统计元音
- diy Tabs Style
- 回调设计模式