Spring Boot使用AJAX從數據庫讀取數據異步刷新前端表格

  近期項目須要是實現一個經過篩選選取所需數據刷新表格的功能,由於表格只佔頁面的一小部分,不但願整個也頁面都隨之刷新,因此首先想到了使用AJAX來實現。javascript

  如下介紹解決方法(請忽視拼音命名)。前端

  篩選前先隨便給table添加一些數據:java

 

 

 

 

 

 

 

 

 

 

  首先在domin中定義相應的數據結構,這裏使用以前已經定義好的一個類,裏面包含了咱們所需的幾個屬性,因此就直接抱過來ajax

 1 public class JichutongjiTable {
 2     private int kaoshirenshu;
 3     private int yingdaorenshu;
 4     private double pingjunfen;
 5     private double fangcha;
 6     private int zhishidian;
 7     private int zuigaofen;
 8     private int zuidifen;
 9 
10     public int getZuigaofen() {
11         return zuigaofen;
12     }
13 
14     public void setZuigaofen(int zuigaofen) {
15         this.zuigaofen = zuigaofen;
16     }
17 
18     public int getZuidifen() {
19         return zuidifen;
20     }
21 
22     public void setZuidifen(int zuidifen) {
23         this.zuidifen = zuidifen;
24     }
25 
26     public int getKaoshirenshu() {
27         return kaoshirenshu;
28     }
29 
30     public void setKaoshirenshu(int kaoshirenshu) {
31         this.kaoshirenshu = kaoshirenshu;
32     }
33 
34     public int getYingdaorenshu() {
35         return yingdaorenshu;
36     }
37 
38     public void setYingdaorenshu(int yingdaorenshu) {
39         this.yingdaorenshu = yingdaorenshu;
40     }
41 
42     public double getPingjunfen() {
43         return pingjunfen;
44     }
45 
46     public void setPingjunfen(double pingjunfen) {
47         this.pingjunfen = pingjunfen;
48     }
49 
50     public double getFangcha() {
51         return fangcha;
52     }
53 
54     public void setFangcha(double fangcha) {
55         this.fangcha = fangcha;
56     }
57 
58     public int getZhishidian() {
59         return zhishidian;
60     }
61 
62     public void setZhishidian(int zhishidian) {
63         this.zhishidian = zhishidian;
64     }
65 }

  接着在mapper中定義定義所需的方法從數據庫中取數據(請忽視亂糟糟的SQL......)數據庫

 1 @Component
 2 public interface JichutongjiMapper {
 3     //獲取基礎信息
 4     @Select("SELECT COUNT(*) as kaoshirenshu FROM (SELECT * FROM fenshu GROUP BY xuehao HAVING SUM(xueshengdefen)<>0) as t1 UNION ALL SELECT COUNT(*) as yingdaorenshu FROM (SELECT * FROM fenshu GROUP BY xuehao) as t1 UNION ALL SELECT FLOOR(sum(a)/COUNT(a)) as pingjunfen FROM (SELECT sum(xueshengdefen) as a FROM fenshu GROUP BY xuehao) AS b UNION ALL SELECT variance(a) as fangcha FROM (SELECT sum(xueshengdefen) as a FROM fenshu GROUP BY xuehao) AS b")
 5     public List<Integer> getJichutongji();
 6     //獲取最高分
 7     @Select("SELECT MAX(tt.chengji) AS zuigaofen FROM (SELECT SUM(xueshengdefen) AS chengji FROM fenshu GROUP BY xuehao) AS tt")
 8     public Integer getMaxMark();
 9     //獲取最低分
10     @Select("SELECT MIN(tt.chengji) AS zuidifen FROM (SELECT SUM(xueshengdefen) AS chengji FROM fenshu GROUP BY xuehao) AS tt")
11     public Integer getMinMark();
12 }

 

  下一步編寫service供controller調用數據結構

 1 @Service
 2 public class JichuqingkuangService {
 3     @Autowired
 4     private JichutongjiMapper jichutongjiMapper;
 5     @Autowired
 6     private  ShitifenxiMapper shitifenxiMapper;
 7     public List<Integer> getJichutongji(){
 8         List<Integer> list= jichutongjiMapper.getJichutongji();
 9         return list;
10     }
11         public Integer getMaxMark(){
12         return jichutongjiMapper.getMaxMark();
13     }
14     public Integer getMinMark(){
15         return jichutongjiMapper.getMinMark();
16     }
17 }

  而後,在controller中調用service並按規定路徑返回給前臺所需的數據app

 1 @Controller
 2 public class IndexController {
 3 
 4     @Autowired
 5     private JichuqingkuangService jichuqingkuangService;
 6    @PostMapping(value="/easyuiIndexTable")
 7     @ResponseBody
 8     public Map<String,String> xiaoguoTable(){
 9 
10         Map<String,String> map=new HashMap<>();
11         List<Integer> list= jichuqingkuangService.getJichutongji();
12         String highScore = ""+jichuqingkuangService.getMaxMark();
13         String lowScore = ""+jichuqingkuangService.getMinMark();
14 
15         map.put("totalNumber",""+list.get(0));
16         map.put("actualNumber",""+list.get(1));
17         map.put("highScore",highScore);
18         map.put("lowScore",lowScore);
19         map.put("avgScore",""+list.get(2));
20         map.put("variance",""+list.get(3));
21 
22 
23         return map;
24     }
25 }
26     

  在JS中處理數據並刷新前端顯示:dom

<script type="text/javascript">
function refurbishIndex(){

    var optionJson=[];
    $.ajax({
        type:"post",
        url:"/easyuiIndexTable",
        data:{},
        async: false,
        success:function (data) {
            optionJson=data;

            var str="";

            str+="<tr>"+
                "<td>"+optionJson.totalNumber+"</td>"+
                "<td>"+optionJson.actualNumber+"</td>"+
                "<td>"+optionJson.highScore+"</td>"+
                "<td>"+optionJson.lowScore+"</td>"+
                "<td>"+optionJson.avgScore+"</td>"+
                "<td>"+optionJson.variance+"</td>"+
                "</tr>";

            document.getElementById("tbodydata").innerHTML=str;


        }
    });
}
</script>

  前端HTML頁面table代碼:async

 1 <table style="width:100%;height:190px">
 2     <tr>
 3         <td style="width:100%">
 4             <table>
 5                 <thead>
 6                 <tr class="cen">
 7                     <th>實際人數(單位:人)</th>
 8                     <th>應到人數(單位:人)</th>
 9                     <th>最高分(單位:分)</th>
10                     <th>最低分(單位:分)</th>
11                     <th>考試平均分(單位:分)</th>
12                     <th>考試方差(單位:1)</th>
13                 </tr>
14                 </thead>
15                 <tbody id="tbodydata">
16                 <tr>
17                     <td>1111</td>
18                     <td>2222</td>
19                     <td>3333</td>
20                     <td>4444</td>
21                     <td>5555</td>
22                     <td>6666</td>
23                 </tr>
24 
25                 </tbody>
26             </table>
27         </td>
28     </tr>
29 
30 </table>

  最後,在button中調用此刷新方法:post

<button onclick="refurbishIndex()">篩選</button> 

 

  至此,便完成了數據讀取,傳遞,刷新的整個流程,點擊篩選按鈕後,table表格內的數據實現刷新

 

參考博文:http://blog.csdn.net/love254443233/article/details/48468397

相關文章
相關標籤/搜索