https://www.cnblogs.com/qianjinyan/p/10065160.html 

在我上一篇随笔中介绍了关于要做的系统的数据结构,连接如上

今天实现连接mssql server,查询出所有buglist的效果,CRUD

实现方法极其简单,如下图

 Bug类对象中列出字段

package com.jasmine.demo.bean;public class Bug {private long id;private String pname;private String crname;private String crnum;private String tasknum;private String oname;private String description;private String rca;private String solution;private String developer;private String tester;private String creationdt;private String updatedt;public long getId() {return id;}public void setId(long id) {this.id = id;}public String getPname() {return pname;}public void setPname(String pname) {this.pname = pname;}public String getCrname() {return crname;}public void setCrname(String crname) {this.crname = crname;}public String getCrnum() {return crnum;}public void setCrnum(String crnum) {this.crnum = crnum;}public String getTasknum() {return tasknum;}public void setTasknum(String tasknum) {this.tasknum = tasknum;}public String getOname() {return oname;}public void setOname(String oname) {this.oname = oname;}public String getDescription() {return description;}public void setDescription(String description) {this.description = description;}public String getRca() {return rca;}public void setRca(String rca) {this.rca = rca;}public String getSolution() {return solution;}public void setSolution(String solution) {this.solution = solution;}public String getDeveloper() {return developer;}public void setDeveloper(String developer) {this.developer = developer;}public String getTester() {return tester;}public void setTester(String tester) {this.tester = tester;}public String getCreationdt() {return creationdt;}public void setCreationdt(String creationdt) {this.creationdt = creationdt;}public String getUpdatedt() {return updatedt;}public void setUpdatedt(String updatedt) {this.updatedt = updatedt;}@Overridepublic String toString() {return "Bug{" +"id=" + id +", pname='" + pname + '\'' +", crname='" + crname + '\'' +", crnum='" + crnum + '\'' +", tasknum='" + tasknum + '\'' +", oname='" + oname + '\'' +", description='" + description + '\'' +", rca='" + rca + '\'' +", solution='" + solution + '\'' +", developer='" + developer + '\'' +", tester='" + tester + '\'' +", creationdt='" + creationdt + '\'' +", updatedt='" + updatedt + '\'' +'}';}public Bug() {super();}public Bug(long id, String pname, String crname, String crnum, String tasknum, String oname, String description, String rca, String solution, String developer, String tester, String creationdt, String updatedt) {this.id = id;this.pname = pname;this.crname = crname;this.crnum = crnum;this.tasknum = tasknum;this.oname = oname;this.description = description;this.rca = rca;this.solution = solution;this.developer = developer;this.tester = tester;this.creationdt = creationdt;this.updatedt = updatedt;}
}

 

BugService 接口中定义了增删查改等方法具体实现是在对应的impl中
package com.jasmine.demo.service;import com.jasmine.demo.bean.Bug;import java.util.List;public interface BugService {List<Bug> findAll();Bug findById(int id);int create(String pname,String crname,String crnum, String tasknum, String oname, String description, String rca, String solution, String developer, String tester);int update(long id, String crnum, String tasknum, String oname, String description, String rca, String solution, String developer, String tester);int deleteByID(int id);}

  

 

package com.jasmine.demo.service.impl;import com.jasmine.demo.bean.Bug;
import com.jasmine.demo.jdbc.BugRowMapper;
import com.jasmine.demo.service.BugService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class BugServiceImpl implements BugService {@Autowiredprivate JdbcTemplate jdbcTemplate;@Overridepublic List<Bug> findAll() {String sql = "SELECT BUG_ID,PROJECT_NAME,CR_NAME,BUG_CR_NUM,BUG_TASK_NUM,OBJECT_NAME,BUG_DESCRIPTION\n" +",BUG_RCA,BUG_SOLUTION,B.EMPLOY_NAME DEVELOPER,A.EMPLOY_NAME TESTER,QA_CREATIONDT,QA_UPDATEDT,BUG_DELETED_FLAG\n" +"FROM QA_BUGLIST\n" +"JOIN QA_PROJECT ON BUG_PROJECT_ID = PROJECT_ID\n" +"JOIN QA_CRTYPE ON CR_ID = BUG_CR_TYPE_ID\n" +"JOIN QA_RTYPE ON OBJECT_ID = QA_TYPE_ID\n" +"JOIN QA_EMPLOY A ON A.[EMPLOY_ID] = QA_TESTER_ID AND A.[EMPLOY_GROUP] = 1 ---表示测试\n" +"JOIN QA_EMPLOY B ON B.[EMPLOY_ID] = QA_ASSIGNEE_ID AND B.[EMPLOY_GROUP] = 2 ---表示开发人员\n" +"WHERE BUG_DELETED_FLAG =0 order by 1 desc";List<Bug> bugs = jdbcTemplate.query(sql,new BugRowMapper() );return bugs;}@Overridepublic Bug findById(int id) {String sql = "SELECT BUG_ID,PROJECT_NAME,CR_NAME,isnull(BUG_CR_NUM,'') as BUG_CR_NUM,isnull(BUG_TASK_NUM,'') as BUG_TASK_NUM,OBJECT_NAME,isnull(BUG_DESCRIPTION,'') as BUG_DESCRIPTION\n" +",isnull(BUG_RCA,'') as BUG_RCA,isnull(BUG_SOLUTION,'') as BUG_SOLUTION,B.EMPLOY_NAME DEVELOPER,A.EMPLOY_NAME TESTER,QA_CREATIONDT,QA_UPDATEDT,BUG_DELETED_FLAG\n" +"FROM QA_BUGLIST\n" +"JOIN QA_PROJECT ON BUG_PROJECT_ID = PROJECT_ID\n" +"JOIN QA_CRTYPE ON CR_ID = BUG_CR_TYPE_ID\n" +"JOIN QA_RTYPE ON OBJECT_ID = QA_TYPE_ID\n" +"JOIN QA_EMPLOY A ON A.[EMPLOY_ID] = QA_TESTER_ID AND A.[EMPLOY_GROUP] = 1 ---表示测试\n" +"JOIN QA_EMPLOY B ON B.[EMPLOY_ID] = QA_ASSIGNEE_ID AND B.[EMPLOY_GROUP] = 2 ---表示开发人员\n" +"WHERE BUG_DELETED_FLAG =0 and BUG_ID = ?";Bug bug = jdbcTemplate.queryForObject(sql,new BugRowMapper(),id);return bug;}@Overridepublic int create(String pname,String crname,String crnum, String tasknum, String oname, String description, String rca, String solution, String developer, String tester) {String sql ="INSERT QA_BUGLIST(BUG_PROJECT_ID,BUG_CR_TYPE_ID,BUG_CR_NUM,BUG_TASK_NUM,QA_TYPE_ID,BUG_DESCRIPTION,BUG_RCA,BUG_SOLUTION,QA_ASSIGNEE_ID,QA_TESTER_ID,QA_CREATIONDT,QA_UPDATEDT)\n" +"VALUES(?,?,?,?,?,?,?,?,?,?,GETDATE(),GETDATE())";return jdbcTemplate.update(sql,pname,crname,crnum,tasknum,oname,description,rca,solution,developer,tester);}@Overridepublic int update(long id, String crnum, String tasknum,  String description, String rca, String solution, String developer, String tester,String oname){String sql = "update QA_BUGLIST set BUG_CR_NUM =?,BUG_TASK_NUM =?,BUG_DESCRIPTION=?,BUG_RCA=?,BUG_SOLUTION= ?,QA_UPDATEDT =getdate() where BUG_ID = ?";System.out.println(sql);return jdbcTemplate.update(sql,crnum,tasknum,description,rca,solution,id);}@Overridepublic int deleteByID(int id) {String sql = "update QA_BUGLIST set BUG_DELETED_FLAG = 1,  BUG_DELETED_COMMENT = '逻辑删除' where BUG_ID = ?";System.out.println(sql);int count = jdbcTemplate.update(sql,id);return count;}
}


DB的配置写在application.xml中

启动类之后,跳转的所有页面,写在controller中,

启动后,打开连接,看到自己的数据

接下来要做的就是让页面好看一点,这样的数据看不清楚

JdbcTemplate

thymeleaf

页面跳转等等,页面比较丑,还没做分页,搜寻条件也没有添加

1. 查看所有bug

2. 查看指定bug的详细信息

点击查看按钮后显示单个bug的信息

3. 删除单列bug信息,点击单个bug信息后面的删除按钮即可删除,删除之前最好有确定按钮用来提示,以免误删

4. 更新,我这边做在查看单个详细列表页面中,如上图,有信息更新按钮,点击后带入原先的参数跳转到更新页面,在新的页面进行更新,然后保存

5. 新增bug页面,在查看所有bug页面有新增按钮,点击进入如下页面,保存进行新增操作

源代码提交在github地址如下:

https://github.com/JasmineQian/TestPlatform

转载于:https://www.cnblogs.com/qianjinyan/p/10097451.html

Springboot+JdbcTemplate +thymeleaf 页面 做迷你版的bug系统相关推荐

  1. thymeleaf页面中使用th:onclick标签

    在SpringBoot集成ThymeLeaf页面中使用th:onclick方法且带动态参数时,按照传统想法直接写是报错的. 一.方法汇总 下面是网络上提供的若干方法: 友情提示:下文中th其实为th: ...

  2. 迷你版webpack

    迷你版一 代码 myWebpack打包工具文件 //pack.js let path=require('path') let processPath=process.cwd() let config= ...

  3. spring boot构建基础版web项目(一)springboot、thymeleaf控制层基础构

    原文作者:弥诺R 原文地址:http://www.minuor.com/147852147/article 转载声明:转载请注明原文地址,注意版权维护,谢谢! 写前说明 根据个人在各篇博文中看到的信息 ...

  4. python 制作自己的新闻_新闻-十行代码,用Python做一个迷你版的美图秀秀

    十行代码,用Python做一个迷你版的美图秀秀 2020-02-28 10:16:08 作者: 匿名 浏览量:65次 美图秀秀相信大家都不陌生,大家只要操作美图秀秀,就可以P掉图片中脸上的一些瑕疵,让 ...

  5. thymeleaf 使用页面报错_异常处理-SpringBoot中thymeleaf对应前台页面大于号\小于号使用问题...

    浏览器报错信息: There was an unexpected error (type=Internal Server Error, status=500). Exception parsing d ...

  6. 写一个迷你版Smarty模板引擎,对认识模板引擎原理非常好(附代码)

    前些时间在看创智博客韩顺平的Smarty模板引擎教程,再结合自己跟李炎恢第二季开发中CMS系统写的tpl模板引擎.今天就写一个迷你版的Smarty引擎,虽然说我并没有深入分析过Smarty的源码,但是 ...

  7. thymeleaf依赖_玩转SpringBoot集成 Thymeleaf 模版引擎

    随着互联网技术的发展,在前后端分离开发模式已经逐渐成为主流的今天,前后端技术的划分也越来越清晰,社会分工进一步细化,职业岗位也更加细分,慢慢开始就有了前端攻城狮和后端攻城狮,技术也进一步细分,出现了以 ...

  8. Springboot整合thymeleaf模板

    Thymeleaf是个XML/XHTML/HTML5模板引擎,可以用于Web与非Web应用. Thymeleaf的主要目标在于提供一种可被浏览器正确显示的.格式良好的模板创建方式,因此也可以用作静态建 ...

  9. 还没理解微前端?手把手教你实现一个迷你版

    大厂技术  高级前端  Node进阶 点击上方 程序员成长指北,关注公众号 回复1,加入高级Node交流群 最近看了几个微前端框架的源码(single-spa[1].qiankun[2].micro- ...

最新文章

  1. CMakeLists.txt从入门到精通
  2. hdu6376 度度熊剪纸条 思维
  3. 排序算法java源代码_排序算法汇总(java实现,附源代码)
  4. git搜索--grep
  5. wince下sources\sources.cmn\Makefile.def的相关作用
  6. 演化:这五年里,我们对架构师职责的思考与定位
  7. 网易云terraform实践
  8. 使用 Cuttlefish 虚拟 Android 设备
  9. python3字符串常用操作
  10. jquery ajax 参数可以序列化
  11. Codeforces Round #395 C
  12. 新员工入职自动加入所在部门的邮件组。
  13. 产品需求文档(PRD)的撰写方法
  14. 利用matlab描点绘制平滑曲线
  15. playm3u8插件android,playm3u8播放器
  16. 简洁高效的JQuery
  17. 关于连接同一wifi,手机可以上网,电脑无法上网问题
  18. 我的母校照片~~``
  19. 建设工程施工劳务分包合同
  20. 软件测试大牛成长计划

热门文章

  1. ssacnf和sprintf实战取ip地址
  2. 总结:C#中跨窗体传值的几种方法
  3. crackme之019
  4. linux 安装centos
  5. post和get的区别?
  6. Zookeeper【最新版V3.4.6】- 官方翻译系列:Watch 机制的理解
  7. Linux 终端訪问 FTP 及 上传下载 文件
  8. 一天一点T-SQL:使用登录触发器进行安全管控
  9. 走近虚拟机——McAfee研究员孙冰谈虚拟机技术和虚拟机安全
  10. ASP.NET开发经验积累