Springboot+JdbcTemplate +thymeleaf 頁面 做迷你版的bug系統
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; } @Override public 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 { @Autowired private JdbcTemplate jdbcTemplate; @Override public 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; } @Override public 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; } @Override public 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); } @Override public 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); } @Override public 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地址如下: