From 6b78674dabc2a3f42004fd28b3a085f7b1ab99f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=A3=95?= <1798488403@qq.com> Date: Wed, 23 Nov 2022 16:45:22 +0800 Subject: [PATCH] jielong' --- ...软件系统的需求构思及描述.docx | Bin 25635 -> 25227 bytes doc/界面图.rp | Bin 62055 -> 0 bytes .../com/example/demo/common/WechatUtil.java | 11 +- .../com/example/demo/common/ZipUtils.java | 143 ++++++++++++++++++ .../demo/controller/DragonController.java | 42 +++++ .../demo/controller/TaskuploadController.java | 31 ++++ .../com/example/demo/controller/Webneed.java | 84 ++++++++-- .../java/com/example/demo/domain/Dragon.java | 89 +++++++++++ .../com/example/demo/domain/Dragonson.java | 61 ++++++++ .../com/example/demo/mapper/DragonMapper.java | 10 ++ .../example/demo/mapper/DragonsonMapper.java | 10 ++ .../example/demo/mapper/xml/DragonMapper.xml | 4 + .../example/demo/service/IDragonService.java | 25 +++ .../demo/service/impl/DragonServiceImpl.java | 41 +++++ .../src/main/resources/templates/daochu.html | 2 +- 15 files changed, 530 insertions(+), 23 deletions(-) delete mode 100644 doc/界面图.rp create mode 100644 src/demo/src/main/java/com/example/demo/common/ZipUtils.java create mode 100644 src/demo/src/main/java/com/example/demo/controller/DragonController.java create mode 100644 src/demo/src/main/java/com/example/demo/domain/Dragon.java create mode 100644 src/demo/src/main/java/com/example/demo/domain/Dragonson.java create mode 100644 src/demo/src/main/java/com/example/demo/mapper/DragonMapper.java create mode 100644 src/demo/src/main/java/com/example/demo/mapper/DragonsonMapper.java create mode 100644 src/demo/src/main/java/com/example/demo/mapper/xml/DragonMapper.xml create mode 100644 src/demo/src/main/java/com/example/demo/service/IDragonService.java create mode 100644 src/demo/src/main/java/com/example/demo/service/impl/DragonServiceImpl.java diff --git a/doc/“班级通”软件系统的需求构思及描述.docx b/doc/“班级通”软件系统的需求构思及描述.docx index 4e972dd27744c84601f10a4370ac32f73354c245..bbb7f507c1857369a6a83b6c13713f10b40ea391 100644 GIT binary patch delta 11273 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 bx@0ChOP4(%7uoH9^Z?e6%hJhy3IhEPfHlYn diff --git a/src/demo/src/main/java/com/example/demo/common/WechatUtil.java b/src/demo/src/main/java/com/example/demo/common/WechatUtil.java index 65e19b8..3271718 100644 --- a/src/demo/src/main/java/com/example/demo/common/WechatUtil.java +++ b/src/demo/src/main/java/com/example/demo/common/WechatUtil.java @@ -1,7 +1,4 @@ package com.example.demo.common; -;/** - * Create by eval on 2019/3/20 - */ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; @@ -17,13 +14,7 @@ import java.util.Arrays; import java.util.HashMap; import java.util.Map; -/** - * @ClassName WechatUtil - * @Description TODO - * @Author eval - * @Date 9:44 2019/3/20 - * @Version 1.0 - */ + public class WechatUtil { public static JSONObject getSessionKeyOrOpenId(String code) { String requestUrl = "https://api.weixin.qq.com/sns/jscode2session"; diff --git a/src/demo/src/main/java/com/example/demo/common/ZipUtils.java b/src/demo/src/main/java/com/example/demo/common/ZipUtils.java new file mode 100644 index 0000000..63e413e --- /dev/null +++ b/src/demo/src/main/java/com/example/demo/common/ZipUtils.java @@ -0,0 +1,143 @@ +package com.example.demo.common; + +import java.io.*; +import java.util.ArrayList; +import java.util.List; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; + +public class ZipUtils { + private static final int BUFFER_SIZE = 2 * 1024; + + /** + * 压缩成ZIP 方法1 + * + * @param srcDir 压缩文件夹路径 + * @param out 压缩文件输出流 + * @param KeepDirStructure 是否保留原来的目录结构,true:保留目录结构; + * false:所有文件跑到压缩包根目录下(注意:不保留目录结构可能会出现同名文件,会压缩失败) + * @throws RuntimeException 压缩失败会抛出运行时异常 + */ + + public static void toZip(String srcDir, OutputStream out, boolean KeepDirStructure) + throws RuntimeException { + long start = System.currentTimeMillis(); + ZipOutputStream zos = null; + try { + zos = new ZipOutputStream(out); + File sourceFile = new File(srcDir); + compress(sourceFile, zos, sourceFile.getName(), KeepDirStructure); + long end = System.currentTimeMillis(); + System.out.println("压缩完成,耗时:" + (end - start) + " ms"); + } catch (Exception e) { + throw new RuntimeException("zip error from ZipUtils", e); + } finally { + if (zos != null) { + try { + zos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + + /** + * 压缩成ZIP 方法2 + * + * @param srcFiles 需要压缩的文件列表 + * @param out 压缩文件输出流 + * @throws RuntimeException 压缩失败会抛出运行时异常 + */ + + public static void toZip(List srcFiles, OutputStream out) throws RuntimeException { + long start = System.currentTimeMillis(); + ZipOutputStream zos = null; + try { + zos = new ZipOutputStream(out); + for (File srcFile : srcFiles) { + byte[] buf = new byte[BUFFER_SIZE]; + zos.putNextEntry(new ZipEntry(srcFile.getName())); + int len; + FileInputStream in = new FileInputStream(srcFile); + while ((len = in.read(buf)) != -1) { + zos.write(buf, 0, len); + } + zos.closeEntry(); + in.close(); + } + long end = System.currentTimeMillis(); + System.out.println("压缩完成,耗时:" + (end - start) + " ms"); + } catch (Exception e) { + throw new RuntimeException("zip error from ZipUtils", e); + } finally { + if (zos != null) { + try { + zos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + + + /** + * 递归压缩方法 + * + * @param sourceFile 源文件 + * @param zos zip输出流 + * @param name 压缩后的名称 + * @param KeepDirStructure 是否保留原来的目录结构,true:保留目录结构; + * false:所有文件跑到压缩包根目录下(注意:不保留目录结构可能会出现同名文件,会压缩失败) + * @throws Exception + */ + + private static void compress(File sourceFile, ZipOutputStream zos, String name, + boolean KeepDirStructure) throws Exception { + byte[] buf = new byte[BUFFER_SIZE]; + if (sourceFile.isFile()) { + // 向zip输出流中添加一个zip实体,构造器中name为zip实体的文件的名字 + zos.putNextEntry(new ZipEntry(name)); + // copy文件到zip输出流中 + int len; + FileInputStream in = new FileInputStream(sourceFile); + while ((len = in.read(buf)) != -1) { + zos.write(buf, 0, len); + } + // Complete the entry + zos.closeEntry(); + in.close(); + } else { + File[] listFiles = sourceFile.listFiles(); + if (listFiles == null || listFiles.length == 0) { + // 需要保留原来的文件结构时,需要对空文件夹进行处理 + if (KeepDirStructure) { + // 空文件夹的处理 + zos.putNextEntry(new ZipEntry(name + "/")); + // 没有文件,不需要文件的copy + zos.closeEntry(); + } + } else { + for (File file : listFiles) { + // 判断是否需要保留原来的文件结构 + if (KeepDirStructure) { + // 注意:file.getName()前面需要带上父文件夹的名字加一斜杠, + // 不然最后压缩包中就不能保留原来的文件结构,即:所有文件都跑到压缩包根目录下了 + compress(file, zos, name + "/" + file.getName(), KeepDirStructure); + } else { + compress(file, zos, file.getName(), KeepDirStructure); + } + } + } + } + } + + + public static void main(String[] args) throws Exception { + /** 测试压缩方法1 */ + FileOutputStream fos1 = new FileOutputStream(new File("./test.zip")); + ZipUtils.toZip("C:\\Users\\1\\OneDrive - sliverki\\学习", fos1, true); + + } +} diff --git a/src/demo/src/main/java/com/example/demo/controller/DragonController.java b/src/demo/src/main/java/com/example/demo/controller/DragonController.java new file mode 100644 index 0000000..9a74fdd --- /dev/null +++ b/src/demo/src/main/java/com/example/demo/controller/DragonController.java @@ -0,0 +1,42 @@ +package com.example.demo.controller; + +import com.example.demo.common.util.FormatResponseUtil; +import com.example.demo.common.util.ResponseResult; +import com.example.demo.domain.Dragon; +import com.example.demo.service.impl.DragonServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("/dragon") +public class DragonController { + @Autowired(required = false) + DragonServiceImpl dragonService; + + @GetMapping("/dragonList") + public ResponseResult queryAll() { + return FormatResponseUtil.formatResponse(dragonService.queryAll()); + } + + @PostMapping("/addDragon") + public ResponseResult addDragon(@RequestBody Dragon dragon) { + //System.out.println("1111111111"); + return FormatResponseUtil.formatResponse(dragonService.save(dragon)); + } + + @DeleteMapping("/delete")//这里执行的是物理删除 + public ResponseResult delTDragonById(Integer id) { + return FormatResponseUtil.formatResponse(dragonService.delDragonById(id)); + } + + @GetMapping("/one") + public ResponseResult queryById(int id) { + return FormatResponseUtil.formatResponse(dragonService.queryDragonById(id)); + } + + @PostMapping("/dragonInfo") + public ResponseResult updateArea(@RequestBody Dragon dragon) { + return FormatResponseUtil.formatResponse(dragonService.updateById(dragon)); + } + +} diff --git a/src/demo/src/main/java/com/example/demo/controller/TaskuploadController.java b/src/demo/src/main/java/com/example/demo/controller/TaskuploadController.java index 94fa529..4203300 100644 --- a/src/demo/src/main/java/com/example/demo/controller/TaskuploadController.java +++ b/src/demo/src/main/java/com/example/demo/controller/TaskuploadController.java @@ -1,8 +1,10 @@ package com.example.demo.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.example.demo.domain.Dragonson; import com.example.demo.domain.Taskson; import com.example.demo.domain.User; +import com.example.demo.mapper.DragonsonMapper; import com.example.demo.mapper.TasksonMapper; import com.example.demo.mapper.UserMapper; import io.swagger.v3.oas.annotations.Operation; @@ -20,6 +22,7 @@ import java.io.*; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.Date; import java.util.List; @Tag(name = "任务上传", description = " ") @@ -29,6 +32,9 @@ public class TaskuploadController { private TasksonMapper tasksonMapper; @Autowired private UserMapper userMapper; + @Autowired + private DragonsonMapper dragonsonMapper; + @RequestMapping(value = "/taskupload", method = RequestMethod.POST) @Operation(summary = "任务上传接口") @@ -91,10 +97,35 @@ public class TaskuploadController { } System.out.println("upload success"); taskson.setFilepath(path); + taskson.setFinishtime(new Date()); this.tasksonMapper.updateById(taskson); return "upload successful"; } + @RequestMapping("/uploadDragon") + public String uploaddragon(@RequestParam(name = "skey", required = true) String skey, + @RequestParam(name = "dragonid", required = true) int dragonid, + @RequestParam(name = "text", required = true) String text) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like("skey", skey); + User user = this.userMapper.selectOne(queryWrapper); + QueryWrapper queryWrapper1 = new QueryWrapper<>(); + queryWrapper1.like("studentnumber", user.getStudentNumber()); + queryWrapper1.like("dragon_id", dragonid); + Dragonson dragonson = this.dragonsonMapper.selectOne(queryWrapper1); + if (dragonson == null) { + dragonson = new Dragonson(); + dragonson.setDragonid(dragonid); + dragonson.setStudentnumber(user.getStudentNumber()); + this.dragonsonMapper.insert(dragonson); + } + dragonson.setText(text); + dragonson.setFinishtime(new Date()); + this.dragonsonMapper.updateById(dragonson); + return "success"; + + } + } diff --git a/src/demo/src/main/java/com/example/demo/controller/Webneed.java b/src/demo/src/main/java/com/example/demo/controller/Webneed.java index 501b1d9..ed028ad 100644 --- a/src/demo/src/main/java/com/example/demo/controller/Webneed.java +++ b/src/demo/src/main/java/com/example/demo/controller/Webneed.java @@ -1,7 +1,10 @@ package com.example.demo.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.example.demo.domain.Dragonson; import com.example.demo.domain.User; +import com.example.demo.mapper.DragonsonMapper; import com.example.demo.mapper.UserMapper; import org.apache.poi.hssf.usermodel.*; import org.springframework.beans.factory.annotation.Autowired; @@ -10,24 +13,29 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; +import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import java.io.IOException; +import java.io.*; +import java.net.URLEncoder; import java.util.List; @Controller public class Webneed { @Autowired - UserMapper userMapper; + DragonsonMapper dragonsonMapper; @GetMapping("/exceldownload") - public void download(HttpServletResponse response, @RequestParam(value = "taskid", required = false) String taskid) throws IOException { + public void download(HttpServletResponse response, @RequestParam(value = "dragonid", required = false) String dragonid) throws IOException { HSSFWorkbook workbook = new HSSFWorkbook(); - HSSFSheet sheet = workbook.createSheet("任务情况"); - List list = this.userMapper.selectList(null); - String filename = taskid + ".xls"; + HSSFSheet sheet = workbook.createSheet("接龙情况"); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like("dragon_id", dragonid); + + List list = this.dragonsonMapper.selectList(queryWrapper); + String filename = dragonid + ".xls"; int rowNum = 1; //表头 - String[] headers = {"学号", "姓名", "power"}; + String[] headers = {"num", "dragonid", "studentnumber", "finishtime", "text"}; HSSFRow row = sheet.createRow(0); for (int i = 0; i < headers.length; i++) { HSSFCell cell = row.createCell(i); @@ -35,11 +43,13 @@ public class Webneed { cell.setCellValue(text); } //在表中存放查询到的数据放入对应的列 - for (User user : list) { + for (Dragonson dragonson : list) { HSSFRow row1 = sheet.createRow(rowNum); - row1.createCell(0).setCellValue(user.getStudentNumber()); - row1.createCell(1).setCellValue(user.getName()); - row1.createCell(2).setCellValue(user.getPower()); + row1.createCell(0).setCellValue(dragonson.getId()); + row1.createCell(1).setCellValue(dragonson.getDragonid()); + row1.createCell(2).setCellValue(dragonson.getStudentnumber()); + row1.createCell(3).setCellValue(dragonson.getFinishtime()); + row1.createCell(4).setCellValue(dragonson.getText()); rowNum++; } response.setContentType("application/octet-stream"); @@ -54,7 +64,57 @@ public class Webneed { return "daochu"; } - @RequestMapping("") + @RequestMapping("/filedownload") + public String downloadfile(@RequestParam(value = "taskid", required = true) String taskid, + HttpServletResponse response) throws UnsupportedEncodingException { + File scFileDir = new File("./"); + String fileName = taskid + ".zip"; + File fileDir = new File(scFileDir, fileName); + System.out.println(fileDir.getName()); + if (fileDir.exists()) { + // 配置文件下载 + response.setHeader("content-type", "application/octet-stream"); + response.setContentType("application/octet-stream"); + // 下载文件能正常显示中文 + response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8")); + // 实现文件下载 + byte[] buffer = new byte[1024]; + FileInputStream fis = null; + BufferedInputStream bis = null; + try { + fis = new FileInputStream(fileDir); + bis = new BufferedInputStream(fis); + OutputStream os = response.getOutputStream(); + int i = bis.read(buffer); + while (i != -1) { + os.write(buffer, 0, i); + i = bis.read(buffer); + } + System.out.println("Download the song successfully!"); + } catch (Exception e) { + System.out.println("Download the song failed!"); + } finally { + if (bis != null) { + try { + bis.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (fis != null) { + try { + fis.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + + + return null; + } + } diff --git a/src/demo/src/main/java/com/example/demo/domain/Dragon.java b/src/demo/src/main/java/com/example/demo/domain/Dragon.java new file mode 100644 index 0000000..867b137 --- /dev/null +++ b/src/demo/src/main/java/com/example/demo/domain/Dragon.java @@ -0,0 +1,89 @@ +package com.example.demo.domain; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.time.LocalDateTime; + +public class Dragon { + private static final long serialVersionUID = 1L; + + public static final String CREATE_TIME = "createTime"; + public static final String MODIFIED_TIME = "lastEditTime"; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + private String name; + /* + * 任务内容 + * */ + private String property; + + /** + * 创建时间戳 + */ + @TableField(fill = FieldFill.INSERT) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + + /** + * 最后修改时间戳 + */ + @TableField(fill = FieldFill.UPDATE) + private LocalDateTime lastEditTime; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getProperty() { + return property; + } + + public void setProperty(String property) { + this.property = property; + } + + public LocalDateTime getCreateTime() { + return createTime; + } + + public void setCreateTime(LocalDateTime createTime) { + this.createTime = createTime; + } + + public LocalDateTime getLastEditTime() { + return lastEditTime; + } + + public void setLastEditTime(LocalDateTime lastEditTime) { + this.lastEditTime = lastEditTime; + } + + @Override + public String toString() { + return "Dragon{" + + "id=" + id + + ", name=" + name + + ", priority=" + property + + ", createTime=" + createTime + + ", lastEditTime=" + lastEditTime + + "}"; + } +} diff --git a/src/demo/src/main/java/com/example/demo/domain/Dragonson.java b/src/demo/src/main/java/com/example/demo/domain/Dragonson.java new file mode 100644 index 0000000..1fe88e2 --- /dev/null +++ b/src/demo/src/main/java/com/example/demo/domain/Dragonson.java @@ -0,0 +1,61 @@ +package com.example.demo.domain; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +@Data +@TableName("dragonson") +public class Dragonson extends Wrapper { + /** + * id + */ + @TableField("id") + private int id; + /** + * dragon_id + */ + @TableField("dragon_id") + private int dragonid; + /** + * studentnumber + */ + @TableField("studentnumber") + private String studentnumber; + /** + * finishtime + */ + @TableField("finishtime") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date finishtime; + /** + * text + */ + @TableField("text") + private String text; + + @Override + public Dragonson getEntity() { + return null; + } + + @Override + public MergeSegments getExpression() { + return null; + } + + @Override + public void clear() { + + } + + @Override + public String getSqlSegment() { + return null; + } +} diff --git a/src/demo/src/main/java/com/example/demo/mapper/DragonMapper.java b/src/demo/src/main/java/com/example/demo/mapper/DragonMapper.java new file mode 100644 index 0000000..0b998f9 --- /dev/null +++ b/src/demo/src/main/java/com/example/demo/mapper/DragonMapper.java @@ -0,0 +1,10 @@ +package com.example.demo.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.example.demo.domain.Dragon; + +/** + * 和数据库的连接层 + */ +public interface DragonMapper extends BaseMapper { +} diff --git a/src/demo/src/main/java/com/example/demo/mapper/DragonsonMapper.java b/src/demo/src/main/java/com/example/demo/mapper/DragonsonMapper.java new file mode 100644 index 0000000..7fd6359 --- /dev/null +++ b/src/demo/src/main/java/com/example/demo/mapper/DragonsonMapper.java @@ -0,0 +1,10 @@ +package com.example.demo.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.example.demo.domain.Dragonson; + +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface DragonsonMapper extends BaseMapper { +} diff --git a/src/demo/src/main/java/com/example/demo/mapper/xml/DragonMapper.xml b/src/demo/src/main/java/com/example/demo/mapper/xml/DragonMapper.xml new file mode 100644 index 0000000..3e1169b --- /dev/null +++ b/src/demo/src/main/java/com/example/demo/mapper/xml/DragonMapper.xml @@ -0,0 +1,4 @@ + + + + diff --git a/src/demo/src/main/java/com/example/demo/service/IDragonService.java b/src/demo/src/main/java/com/example/demo/service/IDragonService.java new file mode 100644 index 0000000..3737521 --- /dev/null +++ b/src/demo/src/main/java/com/example/demo/service/IDragonService.java @@ -0,0 +1,25 @@ +package com.example.demo.service; + +import com.example.demo.domain.Dragon; + +import java.util.List; + +/** + * 面向数据库的接口 + */ +public interface IDragonService { + /** + * 查询所有Area + */ + List queryAll(); + + /** + * 通过Id查询Dragon + */ + Dragon queryDragonById(int id); + + /** + * 通过Id删除Dragon + */ + boolean delDragonById(int id); +} diff --git a/src/demo/src/main/java/com/example/demo/service/impl/DragonServiceImpl.java b/src/demo/src/main/java/com/example/demo/service/impl/DragonServiceImpl.java new file mode 100644 index 0000000..3092d96 --- /dev/null +++ b/src/demo/src/main/java/com/example/demo/service/impl/DragonServiceImpl.java @@ -0,0 +1,41 @@ +package com.example.demo.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.example.demo.domain.Dragon; +import com.example.demo.mapper.DragonMapper; +import com.example.demo.service.IDragonService; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.List; + +public class DragonServiceImpl extends ServiceImpl implements IDragonService { + + + @Autowired(required = false) + DragonMapper dragonMapper; + + @Override + public List queryAll() { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.orderByAsc(Dragon::getId); + List dragonList = dragonMapper.selectList(wrapper); + return dragonList; + } + + @Override + public Dragon queryDragonById(int id) { + Dragon dragon = dragonMapper.selectById(id); + return dragon; + } + + + @Override + public boolean delDragonById(int id) { + boolean ans; + int i = dragonMapper.deleteById(id); + return ans = i > 0 ? true : false; + } + +} diff --git a/src/demo/src/main/resources/templates/daochu.html b/src/demo/src/main/resources/templates/daochu.html index abe20ec..d24304f 100644 --- a/src/demo/src/main/resources/templates/daochu.html +++ b/src/demo/src/main/resources/templates/daochu.html @@ -13,7 +13,7 @@