Get the App
SLTechnology News&Howtos  ›  Database  › 

How to realize the sign-in system by Mongodb

Shulou Source: shulou.com Published: 2022-06-01 09:07:43 10月03日 Update

What the editor wants to share with you this time is how to achieve the Mongodb sign-in system. The article is rich in content. Interested friends can learn about it. I hope you can get something after reading this article.

Use excel file to import data and integrate mongodb to realize sign-in system

Environmental parameters

Development tools: IDEA basic environment: Maven+JDK8 main technologies: SpringBoot, MongodbSpringBoot version: 2.2.6

The implementation steps are as follows:

1. Add dependency

Org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-data-mongodb org.projectlombok lombok true org.apache.poi poi-ooxml 4.0.1 org.springframework.boot spring-boot-starter-test test org.junit.vintage junit-vintage-engine junit junit test

two。 Physical layer

3. Business service layer

4. Service implementation layer

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 / * upload file * @ param classes * @ param nameListExcel * @ return * / @ Override public String upload (String classes, MultipartFile nameListExcel) {String result = "no"; if (nameListExcel = = null) {return result;} / / instantiated object list, which is used to store data in Excel List attendList = new ArrayList () / / read the data in the file object nameListExcel (read each row of data in the Excel, save it to the object list) try {/ / get the instance of this operation excel according to the path HSSFWorkbook wb = new HSSFWorkbook (nameListExcel.getInputStream ()); / / get the sheet page HSSFSheet sheet = wb.getSheetAt (0) according to the page index; HSSFRow row = null; / / the data in the circular sesheet page starts from the second line, and the first line is the title for (int I = 1) I < sheet.getPhysicalNumberOfRows (); iTunes +) {/ / get each row of data row = sheet.getRow (I); Attend attend = new Attend (); / / below cellnum corresponds to the subscript, id is the first subscript corresponding to 0, and the second subscript is 1, and so on. 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 ("parsing data in Excel:" + attendList) / * if successful, write * / attendRepository.saveAll (attendList) to mongodb; result = "ok"; return result;} / * * check in * @ param name * @ return * / @ Override public String sign (String name) {Query query = Query.query (Criteria.where ("name") .is (name)); / / locally modified content Update update = new Update (); update.set ("sign", 1) / / the collection name of the entity corresponding to the attend collection name mongoTemplate.updateFirst (query, update, "attend"); return "ok";} / * * full query student information * @ param sign * @ return * / @ Override public List findAllBySign (Integer sign) {return attendRepository.findAllBySign (sign);}}

5.controller layer

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) {/ * pass the name to the service layer, mongodb modify the login status * / attendService.sign (name); return "ok" } / * upload file * @ param classes * @ param nameListExcel * @ return * / @ PostMapping ("/ upload") public String upload (String classes, MultipartFile nameListExcel) {/ * receive the file object from the foreground and send it to the service layer or Excel utility class to parse the data * System.out.println ("receive foreground form submission data:" + classes+nameListExcel); * / String result = attendService.upload (classes,nameListExcel); return result } / * query unchecked-in students and checked-in students * @ return * / @ GetMapping ("/ list") public Map list () {Map result = new HashMap (); / * * checked-in * / List complete = attendService.findAllBySign (1); result.put ("complete", complete); / * * not checked-in * / List incomplete = attendService.findAllBySign (0); result.put ("incomplete", incomplete); return result;}}

6.application.yml

Mongodb's security authentication configuration is used here.

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

The default singleton configuration is as follows

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

The asynchronous implementation is used here.

7.list.html

The code is as follows

Attendance management page # complete,#incomplete {width: 50%; float: left;} Import list Class name: please select the import file that is not checked in

Signed in

$(function () {/ / initialize page query results $.ajax ({type: "get", url: "/ list", success:function (data) {console.log (data); var complete = ""; var incomplete = ""; $.each (data.complete,function (index,object) {complete + = object.id + "+ object.name +";}) $("# complete p") .html (complete) $.each (data.incomplete,function (index,object) {incomplete + = object.id + "+ object.name +";}) $("# incomplete p") .html (incomplete);}}); $("body") .on ("click", "# upload", function () {/ / package data into formData objects 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 ("page is uploaded successfully") / refresh the current page location.reload () } else {alert ("upload failed, please upload again");})})

The check-in code is as follows:

8.sign-in.html

Please enter your name: $(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 ("check in successfully, return to check in page") / / refresh the current page location.reload ();} else {alert ("check in successfully, please re-check in");})})

List.html page effect picture

Worksheet effect drawing

The remote tool queries the newly imported data as follows: there is a path to the package after the data is imported because there is no mongodb configuration class added when the data is imported.

Effect diagram after adding configuration class

Note: import excel files (xsl worksheets) with versions prior to 2003, with the suffix XLS.

After reading this article about how Mongodb implements the sign-in system, if you think the content of the article is good, you can share it with more people.

Tags: Data page file object sign-in success query configuration system line subscript content tool effect effect article code foreground classmate entity Apple Docker Huawei Linux macOS MariaDB Microsoft MySQL NVidia OPPO Reno OPPO Reno macOS Apple MariaDB Shulou Information