Spring + Struts + Hibernate + Bootstrap-table 實現分頁和增刪改查


1、bootstrap界面效果圖:

 

2、Teacher實體類

public class Teacher {
    private int id;
    private String name;
    private String phone;
    
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
}

 

3、TeacherDao

public interface TeacherDao extends BaseDao<Teacher>{

}

 

4、TeacherDaoImpl

public class TeacherDaoImpl extends BaseDaoImpl<Teacher> implements TeacherDao{

}

 

5、TeacherService

public interface TeacherService extends BaseService<Teacher>{

}

 

6、TeacherServiceImpl

public class TeacherServiceImpl extends BaseServiceImpl<Teacher> implements TeacherService{

}

 

7、TeacherAction

public class TeacherAction extends BaseAction<Teacher>{
    private String name;
    private String phone;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    
    public void grid() {
        super.filter = "1=1";    
        if (!"".equals(name) && name != null) {
            super.filter += " AND name like '%" + name + "%'";
        }
        if (!"".equals(phone) && phone != null) {
            super.filter += " AND phone like '%" + phone + "%'";
        }
        super.grid();    
    }
    
    public void save(){
        super.id=entity.getId();
        super.save();
    }
    
    public void getById(){
        super.getById();
    }
    
    public void delete(){
        super.delete();
    }
}

 

8、bootstrap布局

<div class="container">
     <h3>教師管理</h3>
       <hr>    
       <!-- 查詢塊 -->
        <div class="row collapse" id="collapseFilter" aria-expanded="true">
            <div class="col-md-12">
                <h5>查詢條件</h5>
                <div class="box-body">
                    <form class="form-inline" >
                        <div class="form-group">            
                            <input id="name" type="text" class="form-control" placeholder="名字" />
                        </div>            
                        <div class="form-group">            
                            <input id="phone" type="text" class="form-control" placeholder="電話" />
                        </div>                        
                        <button id="btn_search" type="button" class="btn btn-primary btn-sm" onclick="search();"> <span class="glyphicon glyphicon-search" aria-hidden="true"></span>查詢 </button>
                        <button id="btn_clean_search" type="button" class="btn btn-danger btn-sm" onclick="clearSearch();">清空條件</button>
                    </form>
                </div>
            </div>
        </div>    
        <!-- 表格塊 -->
        <div class="row">
            <div class="col-md-12">
                <div id="toolbar">
                    <!-- 工具欄 -->    
                    <button type="button" class="btn  btn-primary btn-sm" onclick="addData();"><span class="fa fa-plus" aria-hidden="true"></span>&nbsp;新增 </button>
                    <button type="button" class="btn  btn-primary btn-sm" onclick="editData();"><span class="fa fa-pencil" aria-hidden="true"></span>&nbsp;修改 </button>
                    <button type="button" class="btn  btn-primary btn-sm" onclick="deleteData();"><span class="fa fa-trash" aria-hidden="true"></span>&nbsp;刪除 </button>        
                    <button type="button" class="btn  btn-primary btn-sm" data-toggle="collapse" data-target="#collapseFilter" aria-expanded="true" aria-controls="collapseFilter"> <i class="fa fa-filter"></i>&nbsp;查詢 </button>    
                </div>
                <!-- 表格 -->
                <table id="mytable" class="table table-hover"></table>
            </div>
        </div>
  </div> 
    
    <!-- 模態框(Modal) -->
    <div class="modal fade" id="formModal" tabindex="-1" role="dialog" aria-labelledby="modalLabel" aria-hidden="true">
        <div class="modal-dialog modal-lg">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                    <h4 id="modalTitle" class="modal-title"></h4>
                </div>
                <div class="modal-body">
                    <form class="form-horizontal" id="myform" enctype="multipart/form-data">
                        <input type="hidden" name="entity.id" id="txt_id"/>
                        <div class="box-body">
                           <div class="form-group">
                                <label class="col-sm-2 control-label">教師名稱</label>
                                <div class="col-sm-9">
                                    <input type="text" class="form-control" name="entity.name" id="txt_name" required="" placeholder="教師名稱" autocomplete="off">
                                </div>
                           </div>
                           <div class="form-group">
                                <label class="col-sm-2 control-label">電話號碼</label>
                                <div class="col-sm-9">
                                    <input type="text" class="form-control" name="entity.phone" id="txt_phone" required="" placeholder="電話號碼" autocomplete="off">
                                </div>
                           </div>                                    
                        </div>
                        <!-- /.box-body -->
                        <div class="box-footer text-right">
                            <button type="button" class="btn btn-default" data-btn-type="cancel" data-dismiss="modal"><span class="fa fa-remove" aria-hidden="true"></span> 關閉 </button>
                            <button type="button" id="btnOK" onclick="submitData();" class="btn btn-primary"><span class="fa fa-save" aria-hidden="true"></span> 提交 </button>                        
                        </div>
                        <!-- /.box-footer -->
                    </form>
                </div>
            </div>
        </div>
    </div>
    <!-- 模態框(Modal) -->  

 

9、teacher_table.js

var $table = $('#mytable');
$(function(){ 
    initTable(null);
}); 

//表格初始化
function initTable(searchArgs) {
$table.bootstrapTable('destroy');
$table.bootstrapTable({    
        url: 'http://localhost:8080/ssh/teacherGrid',
        method: 'post',
        contentType: "application/x-www-form-urlencoded",
        dataType: "json",
        striped: true,//是否顯示行間隔色
        sortable: true, //是否啟用排序   
        sortName: "id",//排序字段
        sortOrder: "desc",  //排序方式
        cache: false,//是否使用緩存     
        uniqueId: "id",//每行的唯一標識                    
        toolbar: "#toolbar",//指定工具欄                   
        showColumns: true,//顯示隱藏列列選擇按鈕
        search: false, //是否顯示搜索框                  
        showRefresh: false, //顯示刷新按鈕                   
        showToggle: false,//切換顯示樣式                  
        showFooter: false, //顯示Table腳部                                                      
        pagination: true,//是否顯示分頁                 
        showPaginationSwitch: false,  //是否顯示分頁按鈕                 
        clickToSelect: false,  //是否啟用點擊選中行                  
        minimumCountColumns: 2,  //最少要顯示的列數                 
        undefinedText: '-', //cell沒有值時顯示                 
        sidePagination: "server", //分頁方式:client客戶端分頁,server服務端分頁                    
        pageSize: 3,//每頁的記錄行數                 
        pageNumber: 1,  //初始化加載第1頁,默認第1頁                  
        pageList: "[5,10,20]",//可供選擇的每頁的行數
        height:tableHeight(),
        iconsPrefix: 'glyphicon',
      /* queryParamsType的默認值為 'limit' ,在默認情況下 傳給服務端的參數為:offset,limit,sort
                               設置為 ''  在這種情況下傳給服務器的參數為:pageSize,pageNumber */
        queryParamsType:'', 
          queryParams: function queryParams(params) { 
        var param = {  
            pageNumber: params.pageNumber,    
            pageSize: params.pageSize,   
            sortName:this.sortName,
            sortOrder:this.sortOrder
        };  
            if(searchArgs!=null){
                for(var key in searchArgs){
                      param[key]=searchArgs[key];
                  }  
            }
          
          return param;
        },
        editable:false,//開啟編輯模式        
        columns: [{
            field: 'state',
            checkbox: true,
            align: 'center',
            valign: 'middle'
        }, 
        {
            title: '教師名稱',
            field: 'name',
            align: 'center',
            valign: 'middle',
            sortable: true
        }, {
            title: '手機號碼',
            field: 'phone',
            align: 'center',
            valign: 'middle',
            sortable: true
        }],  
        onLoadSuccess: function () {
            //加載成功時執行
            console.log("加載成功!");
        }, onLoadError: function () {
            //加載失敗時執行
             console.log("加載失敗!");
          
        }, formatLoadingMessage: function () {
            //正在加載
            return "請稍等,正在加載中...";
        }, formatNoMatches: function () {
            //沒有匹配的結果
            return '無符合條件的記錄';
        }
    });
}

//獲取窗口高度
function tableHeight() {
    return $(window).height() - 160;
} 

//搜索分頁查詢
function search(){
   var searchArgs={
       name : $("#name").val(),
       phone: $("#phone").val()
   };
   initTable(searchArgs);
}

//清空條件按鈕點擊事件
function clearSearch(){
    $('#name').val("");
    $('#phone').val("");
    initTable(null);
}

 

10、teacher_crud.js

//獲取選中的id
function getIdSelections() {
    return $.map($table.bootstrapTable('getSelections'), function (row) {
        return row.id
    });
}//打開模態框
function addData(){
    $("#modalTitle").text("添加教師");
    $('#formModal').modal('show');
}

//關閉模態框時重置表單
$('#formModal').on('hide.bs.modal', function() { 
    $("#txt_id").val("");
    $("#txt_name").val("");     
    $("#txt_phone").val("");    
});  

//保存數據
function submitData(){       
    var param = $("#myform").serialize();
        console.log(param);
          $.ajax({  
           type: "post",  
           url: "http://localhost:8080/ssh/saveTeacher",  
           data: param ,
           dataType: 'json',  
           contentType: "application/x-www-form-urlencoded; charset=utf-8",      
           success: function(data) {  
                  console.log("保存返回的數據:"+JSON.stringify(data));
                  $('#formModal').modal('hide');
                  if(data['msg']){
                      toastr.success(data['msg']);
                  }else{
                      toastr.error(data['msg']);
                  }          
                  initTable(null);
           }
     
        });  
} 


//編輯數據
function editData(){
    var ids = getIdSelections();
    if (ids.length != 1) {
        toastr.info('選擇一條數據進行編輯!'); 
    } else {    
        var id= parseInt(ids);
        console.log("編輯的id:"+id);
        $.ajax({  
            type: "post",  
            url: "http://localhost:8080/ssh/getTeacher",  
            data: {id:id},
            dataType: 'json',  
            contentType: "application/x-www-form-urlencoded; charset=utf-8",      
            success: function(data) { 
                console.log("獲取單條數據:"+JSON.stringify(data));              
                  $('#txt_id').val(data.id);
                  $('#txt_name').val(data.name);
                  $('#txt_phone').val(data.phone);
                 $("#modalTitle").text("編輯教師");
                  $('#formModal').modal('show');
            }
          
        });  
    }
}

//刪除數據
function deleteData(){
    var ids = getIdSelections().toString();
    if (ids.length > 0) {
        console.log("刪除的ids:"+ids);
         if(confirm("確定要刪除選中的數據嗎?")){
                $.ajax({  
                      type: "post",  
                      url: "http://localhost:8080/ssh/deleteTeacher",  
                      data: {"ids":ids},
                      dataType: 'json',  
                      contentType: "application/x-www-form-urlencoded; charset=utf-8",      
                      success: function(data) { 
                            console.log("刪除返回的數據:"+JSON.stringify(data));
                            if(data['msg']){
                                  toastr.success(data['msg']);
                              }else{
                                  toastr.error(data['msg']);
                              }     
                            initTable(null);
                      }
                    
                      });
         }
      
    } else {
        toastr.warning('選擇要刪除的數據!');
    }  
    
}

 

這是小編的原創隨筆,請尊重原創,若是轉載請注明出處,謝謝。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM