SpringSide集成MongoDB
来源:互联网 发布:科幻电影推荐 知乎 编辑:程序博客网 时间:2024/06/07 04:09
1.环境搭建1.1简介 Spring-Data是基于Spring的数据访问、持久化框架。 SpringSide4.0通过Spring-Data实现持久层对数据的访问、持久化操作。 MongoDB是NoSql数据库中的一种,基于分布式文件对数据进行存储。 Spring-Data-MongoDB是Spring-Data操作MongoDB的组件包。 1.2步骤 1.2.1 基于SpringSide4.0搭建开发环境(略) 1.2.2 通过maven在项目中添加MongoDB支持 SpringSide4.0演示项目quickstart中pom.xml示例:<dependency><groupId>org.springframework.data</groupId><artifactId> spring-data-mongodb </artifactId> <version> 1.1.0.RELEASE </version></dependency><dependency> <groupId>org.springframework.data</groupId> <artifactId> spring-data-mongodb-cross-store </artifactId> <version> 1.1.0.RELEASE </version></dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId> spring-data-mongodb-log4j </artifactId> <version> 1.1.0.RELEASE </version> </dependency> 1.2.3 关联配置 applicationContext-mongo.xml示例:<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/contexthttp://www.springframework.org/schema/context/spring-context-3.1.xsdhttp://www.springframework.org/schema/data/mongohttp://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsdhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.1.xsd" ><!—引入资源文件--><context:property-placeholder location="classpath:applicationContext-mongo.properties"/><!—MongoDB映射对象--><mongo:mongo host="${mongo.host}" port="${mongo.port}"><mongo:options connections-per-host="${mongo.connectionsPerHost}"threads-allowed-to-block-for-connection-multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}"connect-timeout="${mongo.connectTimeout}"max-wait-time="${mongo.maxWaitTime}"auto-connect-retry="${mongo.autoConnectRetry}"socket-timeout="${mongo.socketTimeout}"/> </mongo:mongo><!—MongoDB工厂--><mongo:db-factory dbname="${mongo.dbname}" mongo-ref="mongo"/><!—MongoDB数据操作模板对象--><bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"> <constructor-arg name="mongoDbFactory" ref="mongoDbFactory" /></bean><!—只在需要通过实现Spring Data 中Repositories及其子接口进行数据操作的情况下配置,Spring会自动为配置包路径下的接口创建代理实例--><mongo:repositories base-package="org.springside.examples.quickstart.service.mongodb" mongo-template-ref="mongoTemplate"/></beans>applicationContext-mongo.properties示例:mongo.host=127.0.0.1mongo.port=27017mongo.dbname=testmongo.connectionsPerHost=10mongo.threadsAllowedToBlockForConnectionMultiplier=5mongo.maxWaitTime=120000mongo.connectTimeout=0mongo.socketTimeout=0mongo.autoConnectRetry=false1.2.4代码实现 1.2.4.1 方式一继承Spring Data 中Repositories针对MongoDB的子接口MongoRepository示例:public interface AssetInfoAnnotationService extends MongoRepository<AssetInfo, String> {@Query(value="{'assetId':?0}",fields="{'assetId':1}")public List<AssetInfo> findAssetInfo(String assetId);}1.2.4.2 方式二通过注入MongoDB数据操作模板对象mongoTemplate示例:@Componentpublic class AssetInfoService {@Autowiredprivate MongoTemplate mongoTemplate;public List<AssetInfo> findAssetInfo(){List result=null;//查询方案一Query query=new Query();query.addCriteria(where("assetId").is("1"));result=mongoTemplate.find(query,AssetInfo.class);//查询方案二String querySql="{assetId:'1'}";BasicQuery basicQuery=new BasicQuery(querySql);result=mongoTemplate.find(basicQuery,AssetInfo.class);return result;}}2.操作查询2.1.1 AND Query query=new Query();query.addCriteria(where("assetId").is("1"));query.addCriteria(where("des").is("精彩"));等价于String querySql="{assetId:'1',des:'精彩'}";BasicQuery basic=new BasicQuery(querySql);2.1.2 比较Query query=new Query();//影片时长大于19 并且 小于21 并且 大于等于20 并且 小于等于21query.addCriteria(where("runTime").gt(19).lt(21).gte(20).lte(21));等价于String querySql="{runTime:{$gt:19},runTime:{$lt:21},runTime:{$gte:20},runTime:{$lte:21}}";BasicQuery basicQuery=new BasicQuery(querySql);2.1.3 in、all、ninQuery query=new Query();String assetIds[]={"1","3"};query.addCriteria(where("assetId").in(assetIds));等价于String querySql="{assetId:{$in:['1','2']}}";BasicQuery basic=new BasicQuery(querySql);all与in的区别是all需要匹配所有nin的作用于in相反2.1.4 exists判断字段是否存在Query query=new Query();query.addCriteria(where("assetId").exists(true));等价于String querySql="{assetId:{$exists:true}}";BasicQuery basic=new BasicQuery(querySql);2.1.5 ne不等于Query query=new Query();query.addCriteria(where("assetId").ne("2"));等价于String querySql="{assetId:{$ne:'2'}}";BasicQuery basic=new BasicQuery(querySql);2.1.6 orQuery query=new Query();Criteria c=new Criteria();c.orOperator(new Criteria[]{where("assetId").is("1"),where("assetId").is("3")});query.addCriteria(c);等价于String querySql=" {$or:[{assetId:'1'},{assetId:'3'}]}";BasicQuery basic=new BasicQuery(querySql);2.2排序List<Order> orders= new ArrayList<Order>();Order order=new Order(Direction.DESC,"assetId");orders.add(order);Sort sort=new Sort(orders);Query query= new Query();query.with(sort);或者BasicQuery basic=new BasicQuery(querySql);basic.with(sort);2.3 分页List<Order> orders= new ArrayList<Order>();Order order=new Order(Direction.DESC,"assetId");orders.add(order);Sort sort=new Sort(orders);Query query= new Query();query.with(sort);query.skip(page.getPageSize()*(page.getPageNo()-1));//开始坐标query.limit(page.getPageSize());//返回记录条数或者BasicQuery basic=new BasicQuery(querySql);basic.with(sort);basic.skip(page.getPageSize()*(page.getPageNo()-1));//开始坐标basic.limit(page.getPageSize());//返回记录条数2.3注解@Document(collection="assetInfo")---更名public class AssetInfo implements Serializable{/*** */private static final long serialVersionUID = 1L;@Id ----绑定注解private String id; private String showTypeInfo;// Asset类型private String bandwidth;// 带宽private String keywords;// 关键字@Indexed---索引private String assetId;@DBRef----外键private AssetInfo relateAsset;@Transient---不存储private String title;// 名字@Field(value="des")---更名private String description;}
0 0
- SpringSide集成MongoDB
- SpringSide集成支付宝支付功能
- SpringSide
- SpringSide
- SpringSide
- springside
- Spring MongoDB集成
- spring-data 集成mongodb
- mongodb与spring集成
- spring mongodb集成
- spring MongoDB 集成(分页)
- Spring Mongodb集成
- Spring-data集成mongodb
- Mongodb与spring集成
- mongodb集成spring
- MongoDB集成Spring Data
- Mongodb与spring集成
- MongoDB Spring集成Mongo
- PCA的一些基本资料
- [Sparrow OS 设计文档连载(九)] File System
- 第18周oj平台题目②--帮警长数一数【循环、分支简单综合】
- 广州传智播客最全面的.Net课程
- 图像去模糊的一些网站
- SpringSide集成MongoDB
- Python 基础编程---操作符 (二)
- 针对UAC安全的研究与思考
- android最新源码(4.4.2_r1版本以上)下载
- 最炫丽的网页平面UI课程就在广州传智播客
- hbase 常用操作
- Java解析Json(org.json,json-lib)
- 一些算法的MapReduce实现——最小生成树
- 【虚拟化基础知识培训】为什么需要了解下虚拟化