SpringMVC整合Mongodb開發,高階操作
阿新 • • 發佈:2018-12-24
package com.pudp.dao;
import java.util.List;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Repository;
import com.pudp.base.MongoGenDao;
import com.pudp.model.Member;
import com.pudp.util.StringUtil;
/**
* description:
*
* @author <a href='mailto:[email protected]'> Cn.蘇若年 (En.dennisit)</a> Copy Right since 2013-10-13
*
* com.pudp.dao.MemberDao.java
*
*/
@Repository
public class MemberDao extends MongoGenDao<Member>{
/**
* 分頁查詢 對應mongodb操作中的 db.member.find().skip(10).limit(10);
*
* @author <a href='mailto:[email protected]'>Cn.蘇若年(En.dennisit)</a> Copy Right since 2013-10-13 下午04:09:58
*
* @param member
* 查詢的條件
* @param start
* 使用者分頁查詢的起始值
* @param size
* 查詢的資料數目
*
* @return
* 返回查詢到的資料集合
*/
public List<Member> queryPage(Member member, Integer start, Integer size) {
Query query = new Query();
//此處可以增加分頁查詢條件Criteria.然後query.addCriteria(criteria);
return this.getPage(query,(start-1)*size,size);
}
/**
* 查詢滿足分頁的記錄總數
*
* @author <a href='mailto:[email protected]'>Cn.蘇若年(En.dennisit)</a> Copy Right since 2013-10-16 上午10:20:12
*
* @param member
* 查詢的條件
* @return
* 返回滿足條件的記錄總數
*/
public Long queryPageCount(Member member){
Query query = new Query();
//此處可以增加分頁查詢條件Criteria.然後query.addCriteria(criteria);
return this.getPageCount(query);
}
/**
* 更新操作
*
* @author <a href='mailto:[email protected]'>Cn.蘇若年(En.dennisit)</a> Copy Right since 2013-10-17 下午02:21:26
*
* @param member
* 要更新的資料
* @throws Exception
* 更新異常
*/
public void updateFirst(Member member) throws Exception {
Update update = new Update();
if(null==member.getId()||"".equals(member.getId().trim())){
//如果主鍵為空,則不進行修改
throw new Exception("Update data Id is Null");
}
if(StringUtil.isNotNullValue(member.getUsername())){
update.set("username", member.getUsername());
}
if(StringUtil.isNotNullValue(member.getPassword())){
update.set("password", member.getPassword());
}
if(StringUtil.isNotNullValue(member.getSex())){
update.set("sex", member.getSex());
}
if(StringUtil.isNotNullValue(member.getEmail())){
update.set("email", member.getEmail());
}
this.updateFirst(Query.query(Criteria.where("_id").is(member.getId())),update);
}
/**
* 更新庫中所有資料
*
* @author <a href='mailto:[email protected]'>Cn.蘇若年(En.dennisit)</a> Copy Right since 2013-10-17 下午02:22:07
*
* @param member
* 更新的資料
* @throws Exception
* 更新異常
*/
public void updateMulti(Member member) throws Exception {
Update update = new Update();
if(null==member.getId()||"".equals(member.getId().trim())){
//如果主鍵為空,則不進行修改
throw new Exception("Update data Id is Null");
}
if(StringUtil.isNotNullValue(member.getUsername())){
update.set("username", member.getUsername());
}
if(StringUtil.isNotNullValue(member.getPassword())){
update.set("password", member.getPassword());
}
if(StringUtil.isNotNullValue(member.getSex())){
update.set("sex", member.getSex());
}
if(StringUtil.isNotNullValue(member.getEmail())){
update.set("email", member.getEmail());
}
this.updateMulti(Query.query(Criteria.where("_id").is(member.getId())),update);
}
/**
* 實現鉤子方法,返回反射的型別
* @author <a href='mailto:[email protected]'>Cn.蘇若年(En.dennisit)</a> Copy Right since 2013-10-17
*
* @return
* 反射型別
*/
@Override
protected Class<Member> getEntityClass() {
return Member.class;
}
}