使用Mongodb实现打卡签到系统的实例代码_MongoDB

来源:脚本之家  责任编辑:小易  

不知道你用是什么驱动 我用的是官方的C#驱动 Skip((page-1)*size).Take(size)把size设成1 应该可以 就像分页似的www.zgxue.com防采集请勿采集本网。

使用excel文件导入数据,整合mongodb实现打卡签到系统

Spring Security的相关配置:1、建一个web project,并导入所有需要的lib 2、配置web.xml,使用Spring的机制装载:3、来看看applicationContext.xml这个配置文件,关于Spring的基本配置和 Spring

环境参数 开发工具:IDEA 基础环境:Maven+JDK8 主要技术:SpringBoot、Mongodb SpringBoot版本:2.2.6

{ id:, nick:'', account:'', password:'', friends: {grounp:'分组1',list:[用户ID1,用户ID2]}, {grounp:'分组2',list:[用户ID3,用户ID4]} }

实现步骤如下:

主要介绍当前比较主流的NoSQL技术,采用NoSQL中最为流行的Mongodb数据库,主要介绍Mongdb数据库的基本使用方法,介绍Mongodb的文档对象操作方法,介绍Mongodb的管理操作,介绍Mongodb的高级部分

1.添加依赖

有必要.但是不一定你亲自去做.mongodb对外提供的python接口pymongo,内部实现了连接池,并且多线程安全.也就是说你是用pymongo的话无须关心管理连接.其它语言的接口不知道是否有相同的功能,我认为

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <!-- excel工具 --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.0.1</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <scope>test</scope> </dependency>

最近在研究mongodb,针对.net 中使用mongodb的文章要么是早期的驱动版本,要么资料很少,所以写个随笔记录一下 http://www.cnblogs.com/zhaodayou/p/6875586.html

2.实体层

3.业务service层

4. service实现层

package com.ckf.mongodb_punch.service.impl; import com.ckf.mongodb_punch.mapper.AttendRepository; import com.ckf.mongodb_punch.entity.Attend; import com.ckf.mongodb_punch.service.AttendService; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.MongoTemplate; 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.Service; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.util.ArrayList; import java.util.List; @Service public class AttendServiceImpl implements AttendService { @Autowired private AttendRepository attendRepository; @Autowired private MongoTemplate mongoTemplate; /** * 上传文件 * @param classes * @param nameListExcel * @return */ @Override public String upload(String classes, MultipartFile nameListExcel) { String result = "no"; if (nameListExcel == null) { return result; } //实例化对象列表,用于存储Excel中的数据 List<Attend> attendList = new ArrayList<Attend>(); //读取文件对象nameListExcel 中的数据(读取Excel中每一行数据,存到对象,存到对象列表中) try { //根据路径获取这个操作excel的实例 HSSFWorkbook wb = new HSSFWorkbook(nameListExcel.getInputStream()); //根据页面index 获取sheet页 HSSFSheet sheet = wb.getSheetAt(0); HSSFRow row = null; //循环sesheet页中数据从第二行开始,第一行是标题 for (int i = 1; i < sheet.getPhysicalNumberOfRows(); i++) { //获取每一行数据 row = sheet.getRow(i); Attend attend = new Attend(); //下面cellnum对应着下标,id是第一位对应着下标为0,name是第二位对应的下标为1,等等.. attend.setId(Integer.valueOf((int) row.getCell(0).getNumericCellValue())); attend.setName(row.getCell(1).getStringCellValue()); attend.setSign(Integer.valueOf((int) row.getCell(2).getNumericCellValue())); attendList.add(attend); } } catch (IOException e) { e.printStackTrace(); } System.out.println("解析Excel中的数据:" + attendList); /** * 如果成功就,写入mongodb中 */ attendRepository.saveAll(attendList); result = "ok"; return result; } /** * 签到 * @param name * @return */ @Override public String sign(String name) { Query query = Query.query(Criteria.where("name").is(name)); //局部修改的内容 Update update = new Update(); update.set("sign", 1); //attend 集合名 对应实体的集合名 mongoTemplate.updateFirst(query, update, "attend"); return "ok"; } /** * 全查询学生信息 * @param sign * @return */ @Override public List<Attend> findAllBySign(Integer sign) { return attendRepository.findAllBySign(sign); } }

5.controller层

package com.ckf.mongodb_punch.controller; import com.ckf.mongodb_punch.entity.Attend; import com.ckf.mongodb_punch.service.AttendService; import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import java.util.HashMap; import java.util.List; import java.util.Map; @RestController public class AttendController{ @Autowired private AttendService attendService;@GetMapping("/sign") public String sign(String name){ /** * 将名字传给服务层,mongodb修改登录状态 */ attendService.sign(name); return "ok"; } /** * 上传文件 * @param classes * @param nameListExcel * @return */ @PostMapping("/upload") public String upload(String classes, MultipartFile nameListExcel){/** * 接收到前台传过来的文件对象,交给service层或者Excel工具类来解析数据* System.out.println("接收前台表单提交数据:"+classes+nameListExcel);*/ String result = attendService.upload(classes,nameListExcel);return result;} /** * 查询未签到同学 和已签到同学* @return */ @GetMapping("/list")public Map list(){ Map result = new HashMap<String,Object>(); /** * 已签到 */ List<Attend> complete = attendService.findAllBySign(1);result.put("complete",complete); /** * 未签到 */ List<Attend> incomplete = attendService.findAllBySign(0);result.put("incomplete",incomplete); return result;} }

6.application.yml

这里使用的是mongodb的安全认证配置

spring: data: mongodb: uri: mongodb://ckf_user:123456@192.168.85.154:27017/attend_db

默认单例配置如下

spring: data: mongodb: uri:mongodb://localhost:27017/attend_db

这里使用的是异步实现的

7.list.html

代码如下

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>考勤管理页面</title> <style> #complete,#incomplete{ width: 50%; float: left; } </style> <script src="http://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js" type="text/javascript" charset="utf-8"></script></head><body> <h3>导入名单</h3> 班级名称: <input type="text" name="classes" id="classes"/> 请选择导入文件 <input type="file" name="nameList" id="nameList"/> <input type="button" id="upload" value="上传"> <hr/> <div id="incomplete"> <h3>未签到的</h3> <p></p> </div> <div id="complete"> <h3>已签到</h3> <p></p> </div></body><script type="text/javascript"> $(function () { //初始化页面查询结果 $.ajax({ type:"get", url:"/list", success:function(data){ console.log(data); var complete =""; var incomplete =""; $.each(data.complete,function (index,object) { complete += object.id +"&nbsp;" +object.name +"<br/>"; }) $("#complete p").html(complete); $.each(data.incomplete,function (index,object) { incomplete += object.id +"&nbsp;" +object.name +"<br/>"; }) $("#incomplete p").html(incomplete); } }); $("body").on("click","#upload",function(){ //将数据打包到formData对象中 var formData = new FormData(); formData.append("classes",$("#classes").val()); formData.append("nameListExcel",$("#nameList")[0].files[0]); $.ajax({ type:"post", url:"/upload", //dataType:"json", data:formData, processData: false, contentType: false, success:function(data){ console.log(data); if(data=="ok"){ alert("上传成功,即将刷新页面") //刷新当前页面 location.reload(); }else { alert("上传失败,请重新上传") } } }); }) }) </script></html>

签到打卡代码如下:

8.sign-in.html

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>签到页面</title> <script src="http://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js" type="text/javascript" charset="utf-8"></script></head><body> 请输入你的姓名:<input type="text" id="name"/> <input type="button" id="sign" value="签到"/></body><script type="text/javascript"> $(function () { $("body").on("click","#sign",function(){ $.ajax({ type:"get", url:"/sign", data:{"name":$("#name").val()}, success:function(data){ console.log(data); if(data=="ok"){ alert("签到成功,返回签到页面") //刷新当前页面 location.reload(); }else { alert("签到成功,请重新签到") } } }); }) }) </script></html>

list.html页面效果图

工作表效果图

远程工具查询刚导入的数据如下 数据后面有包的路径是因为导入数据的时候没有添加mongodb配置类,添加了就没有了。

添加配置类之后的效果图 

注意:导入excel文件(xsl工作表)的时候使用2003之前版本的,后缀带XLS。

有哪里不明白的地方记得下方留言哦。

项目已托管码云

地址:https://gitee.com/ckfeng/mongodb_punch.git 

总结

到此这篇关于使用Mongodb实现打卡签到系统的文章就介绍到这了,更多相关使用Mongodb实现打卡签到系统内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网!

最近在做mongoDB的统计,有需求是按照一天24小时分组,按照一周的7天分组,按照一个月30天分组,按照一年12个月分组统计,mongodb 入库的时间字段是 2016-12-12 这样的字符串格式,并没有用mongodb的格式UTC,有时差问题.思路是,只能通过mongodb的 管道 进行层层筛选,分组的时候使用mongodb的自带函数,$substr 进行截取进行分组.db.advPlaysDetails.aggregate({match:{advId:"1"}},{match:{playTime:{$gt:"2016-11-29",$lt:"2016-11-31"}}},{project:{new_time_stamp:{$substr:["$playTime",11,2]},"_id":0,playTimes:1,}},{group:{_id:"$new_time_stamp",playTimes:{$sum:"$playTimes"}}}substr 第一个参数 要切割的字段,第二个参数:从第几个字段开始切,第三个字段:切几个.至于统计出来,比如,一周里,可能有一两天根本就没有数据这种情况,可以实现弄一个7天的集合或者数组,里边数据默认为0 或其他初始值.至于一个月多少天,不能定死30,应该用Calendar自己去算内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • python 实现网课实时监控自动签到、打卡功能
  • android自定义按周签到打卡功能实例代码
  • 定位地理位置php判断员工打卡签到经纬度是否在打卡之内
  • 基于javascript实现每日签到打卡轨迹功能
  • mongodb的安装及配置文件选项全解
  • 详解mongodb管理命令
  • mongodb实现备份压缩的方法教程
  • mongodb数据库的日志文件深入分析
  • windows下安装mongodb以及node.js连接mongodb实例
  • mongodb优化指南
  • 关于单台mongodb实例开启oplog的过程详解
  • mongodb索引使用详解
  • mongodb 复制(副本集)学习笔记
  • mongodb eval 执行服务器端脚本
  • 求解决,使用Spring-data-mongodb写出根据日期时间(按日、周、月、年)进行分组统计数据量,急~在线等
  • Mongodb如何实现上一篇下一篇的查询功能
  • MongoDB是什么
  • 如何使用MongoDB+Springboot实现分布式ID
  • 如何用spring集成mongodb实现文件上传
  • mongodb 能实现聊天功能吗
  • 如何在.Net中使用MongoDB
  • mongodb如何管理连接的?有必要实现连接池吗
  • 如何在.Net中使用MongoDB
  • 如何在.Net中使用MongoDB
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全mssqlmysqlmariadboracledb2mssql2008mssql2005sqlitepostgresqlmongodbredisaccess数据库文摘数据库其它首页mongodbpython 实现网课实时监控自动签到、打卡功能android自定义按周签到打卡功能实例代码定位地理位置php判断员工打卡签到经纬度是否在打卡之内基于javascript实现每日签到打卡轨迹功能mongodb的安装及配置文件选项全解详解mongodb管理命令mongodb实现备份压缩的方法教程mongodb数据库的日志文件深入分析windows下安装mongodb以及node.js连接mongodb实例mongodb优化指南关于单台mongodb实例开启oplog的过程详解mongodb索引使用详解mongodb 复制(副本集)学习笔记mongodb eval 执行服务器端脚本mongodb常用操作命令大全mongodb各种查询操作详解mongodb数据库插入、更新和删除操mongodb 数据库操作--备份 还原 mongodb插入数据的3种方法mongodb中使用distinct去重的简单mongodb整库备份与还原以及单个cmongodb查询操作限制返回字段的方mongodb 实现远程连接浅谈mysql和mariadb区别(mariadbmongodb的基础知识简介mongodb的聚合框架aggregation framework1亿条记录的mongodb数据库随机查询性能测php中mongodb数据库的连接、添加、修改、mongodb安装图文教程mongodb 随机获取一条记录的方法mongodb使用心得简单总结初识nosql nosql数据库入门 nosql数据库基关于mongodb索引管理-索引的创建、查看、mongodb数据库foreach循环遍历用法
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved