-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
7a2e75a
commit 70fcc3b
Showing
12 changed files
with
362 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
138 changes: 138 additions & 0 deletions
138
src/main/java/com/enjoylife/common/db/mongo/GenericDao.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,138 @@ | ||
package com.enjoylife.common.db.mongo; | ||
|
||
import com.enjoylife.common.model.Page; | ||
import org.jongo.Jongo; | ||
import org.jongo.MongoCollection; | ||
import org.springframework.util.CollectionUtils; | ||
|
||
import java.util.LinkedList; | ||
import java.util.List; | ||
|
||
/** | ||
* Created with IntelliJ IDEA. | ||
* Author: liangjun.zhong | ||
* Date: 14-1-13 | ||
* Time: PM8:43 | ||
* To change this template use File | Settings | File Templates. | ||
*/ | ||
public class GenericDao<T> { | ||
|
||
protected static final Object[] NO_PARAMETERS = {}; | ||
protected static final String ALL = "{}"; | ||
|
||
protected final Class<T> clazz; | ||
protected final MongoCollection collection; | ||
|
||
public GenericDao(String collectionName, Class<T> clazz, Jongo jongo) { | ||
this.collection = jongo.getCollection(collectionName); | ||
this.clazz = clazz; | ||
} | ||
|
||
private boolean check(int pageNo, int pageSize){ | ||
boolean result = true; | ||
if(pageNo<0 || pageSize<=0) | ||
return false; | ||
return result; | ||
} | ||
|
||
public T findOne(String query, Object... params){ | ||
return collection.findOne(query, params).as(this.clazz); | ||
} | ||
|
||
public List<T> find(String query, Object... params){ | ||
Iterable<T> iterable = collection.find(query, params).as(this.clazz); | ||
List<T> records = new LinkedList<T>(); | ||
for(T t : iterable){ | ||
records.add(t); | ||
} | ||
if(CollectionUtils.isEmpty(records)){ | ||
return null; | ||
} | ||
return records; | ||
} | ||
|
||
public boolean upsert(T t, String query, Object... params){ | ||
collection.update(query, params).upsert().merge(t); | ||
return true; | ||
} | ||
|
||
public void batchUpsert(List<T> list, String query, Object... params){ | ||
if(CollectionUtils.isEmpty(list)) | ||
return; | ||
for(T t : list){ | ||
upsert(t, query, params); | ||
} | ||
} | ||
|
||
public boolean remove(){ | ||
collection.remove(); | ||
return true; | ||
} | ||
|
||
public boolean remove(String query){ | ||
collection.remove(query); | ||
return true; | ||
} | ||
|
||
public boolean remove(String query, Object... params){ | ||
collection.remove(query, params); | ||
return true; | ||
} | ||
|
||
public boolean save(T t){ | ||
collection.save(t); | ||
return true; | ||
} | ||
|
||
|
||
|
||
public long count(){ | ||
return collection.count(ALL); | ||
} | ||
|
||
public long count(String query) { | ||
return collection.count(query); | ||
} | ||
|
||
public long count(String query, Object... params) { | ||
return collection.count(query, params); | ||
} | ||
|
||
|
||
|
||
public Page<T> paginate(int pageNo, int pageSize){ | ||
return paginate(pageNo, pageSize, ALL); | ||
} | ||
|
||
public Page<T> paginate(int pageNo, int pageSize, String query){ | ||
return paginate(pageNo, pageSize, query, NO_PARAMETERS); | ||
} | ||
|
||
public Page<T> paginate(int pageNo, int pageSize, String query, Object... params){ | ||
if(!check(pageNo, pageSize)) | ||
return null; | ||
|
||
pageNo = pageNo<=0?1:pageNo; | ||
Iterable<T> iterable = collection.find(query, params).sort("{_id:1}").skip((pageNo-1)*pageSize).limit(pageSize).as(this.clazz); | ||
|
||
List<T> records = new LinkedList<T>(); | ||
for(T t : iterable){ | ||
records.add(t); | ||
} | ||
if(CollectionUtils.isEmpty(records)){ | ||
return null; | ||
} | ||
|
||
Page<T> result = new Page<T>(); | ||
result.setPageNo(pageNo); | ||
result.setPageSize(pageSize); | ||
result.setRecords(records); | ||
|
||
return result; | ||
} | ||
|
||
|
||
|
||
|
||
|
||
} |
51 changes: 51 additions & 0 deletions
51
src/main/java/com/enjoylife/common/db/mongo/JongoFactory.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
package com.enjoylife.common.db.mongo; | ||
|
||
import com.mongodb.Mongo; | ||
import com.mongodb.MongoURI; | ||
import com.mongodb.WriteConcern; | ||
import org.apache.log4j.Logger; | ||
import org.jongo.Jongo; | ||
import java.net.UnknownHostException; | ||
|
||
|
||
/** | ||
* Created with IntelliJ IDEA. | ||
* Author: liangjun.zhong | ||
* Date: 14-7-30 | ||
* Time: PM4:58 | ||
* To change this template use File | Settings | File Templates. | ||
*/ | ||
public class JongoFactory { | ||
|
||
private static final Logger logger = Logger.getLogger(JongoFactory.class); | ||
private static Jongo jongo; | ||
|
||
public static Jongo getJongo(String uri, String dbName) throws Exception { | ||
if (jongo == null) { | ||
checkDBParams(uri, dbName); | ||
synchronized (JongoFactory.class) { | ||
if (jongo == null) { | ||
jongo = generateJongo(uri, dbName); | ||
} | ||
} | ||
} | ||
return jongo; | ||
} | ||
|
||
private static void checkDBParams(String uri, String dbName) throws Exception { | ||
if(uri==null || dbName==null){ | ||
Exception exception = new RuntimeException("start mongodb with invalid params"); | ||
logger.error(exception); | ||
throw exception; | ||
} | ||
} | ||
|
||
private static Jongo generateJongo(String uri, String dbName) throws UnknownHostException { | ||
Mongo mongoSafe = new Mongo(new MongoURI("mongodb://"+uri)); | ||
mongoSafe.setWriteConcern( WriteConcern.SAFE ); | ||
return new Jongo(mongoSafe.getDB(dbName)); | ||
} | ||
|
||
|
||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
package com.enjoylife.common.model; | ||
|
||
import java.io.Serializable; | ||
import java.util.List; | ||
|
||
/** | ||
* Created with IntelliJ IDEA. | ||
* Author: liangjun.zhong | ||
* Date: 13-12-25 | ||
* Time: PM5:44 | ||
* To change this template use File | Settings | File Templates. | ||
*/ | ||
public class Page<T> implements Serializable { | ||
|
||
private static final long serialVersionUID = -4272544971040417942L; | ||
|
||
private int pageNo; | ||
private int pageSize; | ||
private List<T> records; | ||
|
||
|
||
public int getPageNo() { | ||
return pageNo; | ||
} | ||
|
||
public void setPageNo(int pageNo) { | ||
this.pageNo = pageNo; | ||
} | ||
|
||
public int getPageSize() { | ||
return pageSize; | ||
} | ||
|
||
public void setPageSize(int pageSize) { | ||
this.pageSize = pageSize; | ||
} | ||
|
||
public List<T> getRecords() { | ||
return records; | ||
} | ||
|
||
public void setRecords(List<T> records) { | ||
this.records = records; | ||
} | ||
|
||
|
||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
package com.enjoylife.demo; | ||
|
||
/** | ||
* Created with IntelliJ IDEA. | ||
* Author: liangjun.zhong | ||
* Date: 14-8-4 | ||
* Time: AM2:51 | ||
* To change this template use File | Settings | File Templates. | ||
*/ | ||
public class UserEntity extends User { | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
package com.enjoylife.demo; | ||
|
||
import com.enjoylife.common.db.mongo.GenericDao; | ||
import org.jongo.Jongo; | ||
|
||
import java.util.List; | ||
|
||
/** | ||
* Created with IntelliJ IDEA. | ||
* Author: liangjun.zhong | ||
* Date: 14-8-4 | ||
* Time: AM2:50 | ||
* To change this template use File | Settings | File Templates. | ||
*/ | ||
public class UserTestDao extends GenericDao<UserEntity> { | ||
|
||
public UserTestDao(Jongo jongo) { | ||
super("UserTest", UserEntity.class, jongo); | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
<?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:aop="http://www.springframework.org/schema/aop" | ||
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" | ||
xsi:schemaLocation=" | ||
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd | ||
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd | ||
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd | ||
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> | ||
|
||
|
||
<bean id="jongo" class="com.enjoylife.common.db.mongo.JongoFactory" factory-method="getJongo"> | ||
<constructor-arg value="127.0.0.1:27017" /> | ||
<constructor-arg value="enjoylife" /> | ||
</bean> | ||
|
||
|
||
|
||
|
||
|
||
|
||
</beans> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
<?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:aop="http://www.springframework.org/schema/aop" | ||
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" | ||
xsi:schemaLocation=" | ||
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd | ||
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd | ||
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd | ||
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> | ||
|
||
|
||
|
||
|
||
|
||
|
||
</beans> |
Oops, something went wrong.