MongoTemplate操作mongodb

[java]  view plain  copy
  1. public class ExamLogDaoImpl implements ExamLogDao{  
  2.       
  3.     @Autowired  
  4.     private MongoTemplate mongoTemplate;  
  5.     /** 
  6.      * 进入考试 
  7.      * return uuid 
  8.      */  
  9.     @Override  
  10.     public String enterExamLog(Object[] args) {  
  11.         Date date=new Date();  
  12.         DateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  13.         String logUuid=RText.getUUID();//自动生成uuid  
  14.         String enterTime=format.format(date); //系统当前时间  
  15.         Log_Exam_Base examL=new Log_Exam_Base();  
  16.         examL.setLogUuid(logUuid);  
  17.         examL.setExamId(ObjectUtils.toString(args[0], ""));  
  18.         examL.setExamName(ObjectUtils.toString(args[1], ""));  
  19.         examL.setEgid(ObjectUtils.toString(args[2], ""));  
  20.         examL.setUserId(ObjectUtils.toString(args[3], ""));  
  21.         examL.setUserName(ObjectUtils.toString(args[4], ""));  
  22.         examL.setAccount(ObjectUtils.toString(args[5], ""));  
  23.         examL.setClientIp(ServletActionContext.getRequest().getRemoteAddr());  
  24.         examL.setEnterTime(enterTime);  
  25.         mongoTemplate.insert(examL, "ExamLog");//自定义集合名插入文档  
  26.         return logUuid;  
  27.     }  
  28.       
  29.     /** 
  30.      * 退出考试 
  31.      */  
  32.     @Override  
  33.     public void exitExamLog(Object[] args) {  
  34.         Date date=new Date();  
  35.         DateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  36.         String exitTime=format.format(date); //系统当前时间  
  37.         Query query = new Query(Criteria.where("logUuid").is(ObjectUtils.toString(args[0], "")));  
  38.         Update update = new Update().set("exitTime", exitTime);  
  39.         WriteResult r=mongoTemplate.upsert(query, update, "ExamLog");//根据字段修改文档  
  40.           
  41.     }  
  42.     /** 
  43.      * 答题操作 
  44.      */  
  45.   
  46.     @Override  
  47.     public void answerTopicLog(Object[] args) {  
  48.         Date date=new Date();  
  49.         DateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  50.         String exitTime=format.format(date); //系统当前时间  
  51.         Log_Exam_Operation eolM=new Log_Exam_Operation();  
  52.         eolM.setOperationTime(exitTime);  
  53.         eolM.setTopicId(ObjectUtils.toString(args[1], ""));  
  54.         eolM.setTopic(ObjectUtils.toString(args[2], ""));  
  55.         eolM.setAnswer(ObjectUtils.toString(args[3], ""));  
  56.         eolM.setAnswerContent(ObjectUtils.toString(args[4], ""));  
  57.         Query query = Query.query(Criteria.where("logUuid").is(ObjectUtils.toString(args[0], "")));  
  58.         Update update = new Update().addToSet("operation", eolM);  
  59.         WriteResult r=mongoTemplate.upsert(query, update, "ExamLog");//根据某一字段往内嵌文档增加一条数据  
  60.     }  
  61.     /** 
  62.      * 日志列表 
  63.      */  
  64.     @Override  
  65.     public PageObject getExamLogPageObject(Object[] args,Map req) {  
  66.         int totalCount = 1;  
  67.         int start = NumberUtils.toInt(ObjectUtils.toString(req.get("start"),"0"));  
  68.         int limit = NumberUtils.toInt(ObjectUtils.toString(req.get("limit"),"25"));  
  69.         List returnValue = ;  
  70.         try {  
  71.             Query query = new Query().limit(limit);//分页条数设置  
  72.             if(args.length>=3){//条件模糊查询  
  73.                 if(args[0]!=&&!"".equals(ObjectUtils.toString(args[0]))){  
  74.                     query.addCriteria(new Criteria("account").regex(".*?" + ObjectUtils.toString(args[0]) + ".*"));  
  75.                 }  
  76.                 if(args[1]!=&&!"".equals(ObjectUtils.toString(args[1]))){  
  77.                     query.addCriteria(new Criteria("userName").regex(".*?" + ObjectUtils.toString(args[1]) + ".*"));  
  78.                 }  
  79.                 if(args[2]!=&&!"".equals(ObjectUtils.toString(args[2]))){  
  80.                     query.addCriteria(new Criteria("examName").regex(".*?" + ObjectUtils.toString(args[2]) + ".*"));  
  81.                 }  
  82.             }  
  83.             query.skip(start);//跳过前start条数据  
  84.               
  85.             query.sort().on("enterTime", Order.DESCENDING);//按进入时间倒序排序  
  86.             returnValue = mongoTemplate.find(query, Log_Exam_Base.class"ExamLog");  
  87.             totalCount = (int) mongoTemplate.count(query, "ExamLog");  
  88.         } catch (Exception e) {  
  89.             e.printStackTrace();  
  90.         }  
  91.         PageObject page = new PageObject();  
  92.         page.setDatasource(returnValue);  
  93.         page.setTotalCount(totalCount);  
  94.           
  95.         int _absolutePage = (int)Math.ceil(totalCount * 1.0/limit);  
  96.         page.setAbsolutePage(_absolutePage);  
  97.           
  98.         int _currentPage = start/limit + 1;  
  99.         page.setCurrentPage(_currentPage);  
  100.           
  101.         return page;  
  102.     }  
  103.     @Override  
  104.     public List getExamLogList(Object[] args) {  
  105.         List returnValue = ;  
  106.         try {  
  107.             Query query = new Query().limit(60000);  
  108.             if(args.length>=3){  
  109.                 if(args[0]!=&&!"".equals(ObjectUtils.toString(args[0]))){  
  110.                     query.addCriteria(new Criteria("account").regex(".*?" + ObjectUtils.toString(args[0]) + ".*"));  
  111.                 }  
  112.                 if(args[1]!=&&!"".equals(ObjectUtils.toString(args[1]))){  
  113.                     query.addCriteria(new Criteria("userName").regex(".*?" + ObjectUtils.toString(args[1]) + ".*"));  
  114.                 }  
  115.                 if(args[2]!=&&!"".equals(ObjectUtils.toString(args[2]))){  
  116.                     query.addCriteria(new Criteria("examName").regex(".*?" + ObjectUtils.toString(args[2]) + ".*"));  
  117.                 }  
  118.             }  
  119.             query.sort().on("enterTime", Order.DESCENDING);//按进入时间倒序排序  
  120.             returnValue = mongoTemplate.find(query, Log_Exam_Base.class"ExamLog");  
  121.         } catch (Exception e) {  
  122.             e.printStackTrace();  
  123.         }  
  124.         return returnValue;  
  125.     }  
  126.     /** 
  127.      * 获取内嵌子文档列表数据 
  128.      */  
  129.     @Override  
  130.     public PageObject getExamOperation(Object[] args, Map req) {  
  131.         int totalCount = 1;  
  132.         int start = NumberUtils.toInt(ObjectUtils.toString(req.get("start"),"0"));  
  133.         int limit = NumberUtils.toInt(ObjectUtils.toString(req.get("limit"),"25"));  
  134.           
  135.         List returnValue = ;  
  136.         try {  
  137.             Query query = new Query().limit(limit);  
  138.             query.addCriteria(Criteria.where("logUuid").is(ObjectUtils.toString(args[0], "")));  
  139.             query.skip(start);  
  140.             query.sort().on("operationTime", Order.DESCENDING);//按操作时间倒序排序  
  141.             List exmL = mongoTemplate.find(query, Log_Exam_Base.class"ExamLog");  
  142.             if(exmL.size()>0){  
  143.                 Log_Exam_Base em=(Log_Exam_Base) exmL.get(0);  
  144.                 returnValue=em.getOperation();  
  145.             }  
  146.             if(returnValue!=){  
  147.                 totalCount = returnValue.size();  
  148.             }  
  149.         } catch (Exception e) {  
  150.             e.printStackTrace();  
  151.         }  
  152.         PageObject page = new PageObject();  
  153.         page.setDatasource(returnValue);  
  154.         page.setTotalCount(totalCount);  
  155.           
  156.         int _absolutePage = (int)Math.ceil(totalCount * 1.0/limit);  
  157.         page.setAbsolutePage(_absolutePage);  
  158.           
  159.         int _currentPage = start/limit + 1;  
  160.         page.setCurrentPage(_currentPage);  
  161.           
  162.         return page;  
  163.     }  
  164. }  
用到的实体类
[java]  view plain  copy
  1. public class Log_Exam_Base extends BaseLog{  
  2.     private String examId;//考试id  
  3.     private String examName;//考试名称  
  4.     private String enterTime;//进入时间  
  5.     private String exitTime;//退出时间  
  6.     private String egid;//成绩id  
  7.     private List<Log_Exam_Operation> operation;//答题操作集合  
  8.       
  9.       
  10.     public String getExamId() {  
  11.         return examId;  
  12.     }  
  13.     public void setExamId(String examId) {  
  14.         this.examId = examId;  
  15.     }  
  16.     public String getEnterTime() {  
  17.         return enterTime;  
  18.     }  
  19.     public void setEnterTime(String enterTime) {  
  20.         this.enterTime = enterTime;  
  21.     }  
  22.     public String getExitTime() {  
  23.         return exitTime;  
  24.     }  
  25.     public void setExitTime(String exitTime) {  
  26.         this.exitTime = exitTime;  
  27.     }  
  28.     public List<Log_Exam_Operation> getOperation() {  
  29.         return operation;  
  30.     }  
  31.     public void setOperation(List<Log_Exam_Operation> operation) {  
  32.         this.operation = operation;  
  33.     }  
  34.     public String getEgid() {  
  35.         return egid;  
  36.     }  
  37.     public void setEgid(String egid) {  
  38.         this.egid = egid;  
  39.     }  
  40.     public String getExamName() {  
  41.         return examName;  
  42.     }  
  43.     public void setExamName(String examName) {  
  44.         this.examName = examName;  
  45.     }  
  46.       
  47.       
  48. }  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值