1. 程式人生 > >SpringMVC整合Mongodb開發,高階操作

SpringMVC整合Mongodb開發,高階操作

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; } }