Springパッケージmongodbのコード実装
9573 ワード
よく知られているように、spring統合のいくつかのnosqlまたはsqlデータベースは、xxxxxTemplateを使用することに慣れています.一般的にxxxxxTemplateを見るとspring統合と考えられます.原生の使い方と区別します.ここではjavaプロジェクトにおけるオリジナルのmongodbの使用方法については議論せず,springが提供するmongodbのパッケージについてのみ議論する.
その前にmongodbのデータストレージフォーマットを理解する必要があります.私は一般的にjson形式で保存しています.構造は次のコードで示されています.mongodbのデータを表示する方法は、mongoVUEツールを使用します.効率に影響を与えることなく、Mongodbに数億レベルのデータを格納できます.注意:Mongodbは多条件クエリーに適していません.私たちは一般的にid値でクエリーをします.マルチ条件クエリーではインデックスを作成する必要があり、ライブラリを検出しやすくなります.
スプリングプログラムでmongodbを使用するには、どうすればいいですか.
まず、
mongodbのjarパッケージを導入
次に、
私たちのspringのプロファイルにMongodbの構成を追加する必要があります.
この配置は一目瞭然ではないでしょうか.Springの多くのパッケージ構成もこのようにして、1つのリングに1つのリングを掛けて、最後にmongodbCacheのような使えるハンドルをください.
最後:
MongoDBCacheImplを実装することで、ビジネスロジックを書くことができます.
これでmongodbで私たちのデータを追加削除して調べることができます.レプリケーションレベルのmongodbでは、データ量が3億以上で、更新クエリー操作も一般的に5 ms以内です.
その前にmongodbのデータストレージフォーマットを理解する必要があります.私は一般的にjson形式で保存しています.構造は次のコードで示されています.mongodbのデータを表示する方法は、mongoVUEツールを使用します.効率に影響を与えることなく、Mongodbに数億レベルのデータを格納できます.注意:Mongodbは多条件クエリーに適していません.私たちは一般的にid値でクエリーをします.マルチ条件クエリーではインデックスを作成する必要があり、ライブラリを検出しやすくなります.
{
"_id" : "123456789",
"_class" : "com.OrderInfo",
"historyId" : "123456789_1_2",
"orderId" : NumberLong("123456789"),
"orderDirection" : " ",
"overStatus" : " ",
"orgArea" : " ",
"org" : " ",
"orderType" : " ",
"paymentType" : " ",
"paymentTpyeGroup" : " ",
"orderPrice" : 0.0,
"duePrice" : 0.0,
"payPrice" : 1000.0,
"tuiKuanPrice" : 0.0,
"diffPrice" : -1000.0,
"memberId" : "testlzg",
"laiyuan" : " ",
"invoicePutType" : " ",
"operationTime" : "20190104160726",
"status" : " ",
"carrier" : " ",
"ttsj" : "20190104160726",
"waybillSign" : "300000000000000",
"operateNodeSystem" : " - ",
"bizNodeType" : " ",
"bizNodeName" : " ",
"bizNodeCode" : "910",
"belongSystem" : "TMS",
"systemCode" : "josl",
"operater" : " ",
"operaterErp" : "1122",
"distributeType" : "65",
"endDate" : "20190104160726",
"validTag" : "1",
"orderStatus" : " ",
"duizhangStatus" : " ",
"updateTime" : ISODate("2016-10-10T03:16:52.068Z"),
"orgId" : "6",
"createTime" : "20161010111636",
"damagedPrice" : 0.0,
"tmplateNode" : " "
}
スプリングプログラムでmongodbを使用するには、どうすればいいですか.
まず、
mongodbのjarパッケージを導入
org.springframework.data
spring-data-mongodb
もちろん、mavenを使用しない場合はspring-data-mongodb-1.3.3を単独で直接ダウンロードできます.JArはあなたのプロジェクトに導入されました.次に、
私たちのspringのプロファイルにMongodbの構成を追加する必要があります.
mongoDbFactoryPrism" />
この配置は一目瞭然ではないでしょうか.Springの多くのパッケージ構成もこのようにして、1つのリングに1つのリングを掛けて、最後にmongodbCacheのような使えるハンドルをください.
最後:
MongoDBCacheImplを実装することで、ビジネスロジックを書くことができます.
public class MongoDBCacheImpl {
public void setMongoOperations(MongoOperations mongoOperations) {
this.mongoOperations = mongoOperations;
}
private MongoOperations mongoOperations;
// key
public T getByKey(Object key, Class entityClass) {
return mongoOperations.findById(key, entityClass);
}
public List getByColumn(String columnName, Object columeValue, Class entityClass) {
return mongoOperations.find(new Query(Criteria.where(columnName).is(columeValue)), entityClass);
}
//
public void save(Object obj) {
mongoOperations.save(obj);
}
//
public void remove(Object obj) {
mongoOperations.remove(obj);
}
public Long getCountByDate(Date beginTime, Date endTime, Class entityClass) {
Assert.notNull(beginTime, "beginTime is not null.");
Assert.notNull(endTime, "endTime is not null.");
Assert.isTrue(endTime.after(beginTime), "endTime must be after beginTime.");
return mongoOperations.count(new Query(Criteria.where("createdate").gte(beginTime).and("createdate").lt(endTime)), entityClass);
}
public List findAllByDate(Date beginTime, Date endTime, Class entityClass) {
Assert.notNull(beginTime, "beginTime is not null.");
Assert.notNull(endTime, "endTime is not null.");
Assert.isTrue(endTime.after(beginTime), "endTime must be after beginTime.");
Query query = new Query().addCriteria(
Criteria.where("riqi").exists(true)
.andOperator(Criteria.where("riqi").gte(beginTime),Criteria.where("riqi").lt(endTime)));
return mongoOperations.find(query, entityClass);
}
public List findAllByDateAndColumn(String dateColumnName, Date beginTime, Date endTime, String columnName, Object columeValue, Class entityClass) {
Query query = new Query().addCriteria(
Criteria.where(dateColumnName).exists(true)
.andOperator(Criteria.where(dateColumnName).gte(beginTime),Criteria.where(dateColumnName).lt(endTime))
.and(columnName).is(columeValue));
return mongoOperations.find(query, entityClass);
}
//
public Long getCountByDateAndColumn(String dateColumnName, Date beginTime, Date endTime, String columnName, Object columeValue, Class entityClass) {
Query query = new Query().addCriteria(
Criteria.where(dateColumnName).exists(true)
.andOperator(Criteria.where(dateColumnName).gte(beginTime),Criteria.where(dateColumnName).lt(endTime))
.and(columnName).is(columeValue));
return mongoOperations.count(query,entityClass);
}
//
public Pagination getPageListByDateColumn(String dateColumnName, Date beginTime, Date endTime, Pagination page, Class entityClass) {
Query query = new Query().addCriteria(
Criteria.where(dateColumnName).exists(true)
.andOperator(Criteria.where(dateColumnName).gte(beginTime),Criteria.where(dateColumnName).lte(endTime)));
if (null != page && page.getTotalCount()>0){
page.setTotalCount(page.getTotalCount());
query.skip(page.getFirstResult());
query.limit(page.getPageSize());
}else {
return null;
}
List pageData = mongoOperations.find(query,entityClass);
page.setDatas(pageData);
return page;
}
// Key
public void updateByKey(Object key, String updateColumn, Object value, Class entityClass) {
Query query = new Query(Criteria.where( "_id" ).is(key));
mongoOperations.updateFirst(query,Update.update(updateColumn,value),entityClass);
}
// key
public void deleteByKey(Object key, Class entityClass) {
Query query = new Query(Criteria.where( "_id" ).is(key));
mongoOperations.remove(query,entityClass);
}
//
public void removeAll(String dateColumnName, Date beginTime, Date endTime, String columnName, Object columeValue, Class entityClass){
Query query = new Query().addCriteria(
Criteria.where(dateColumnName).exists(true)
.andOperator(Criteria.where(dateColumnName).gte(beginTime),Criteria.where(dateColumnName).lte(endTime))
.and(columnName).is(columeValue));
mongoOperations.remove(query,entityClass);
}
}
これでmongodbで私たちのデータを追加削除して調べることができます.レプリケーションレベルのmongodbでは、データ量が3億以上で、更新クエリー操作も一般的に5 ms以内です.