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('选择要删除的数据!');
} }

这是小编的原创随笔,请尊重原创,若是转载请注明出处,谢谢。

Spring + Struts + Hibernate + Bootstrap-table 实现分页和增删改查的更多相关文章

  1. ssm框架(Spring Springmvc Mybatis框架)整合及案例增删改查

    三大框架介绍 ssm框架是由Spring springmvc和Mybatis共同组成的框架.Spring和Springmvc都是spring公司开发的,因此他们之间不需要整合.也可以说是无缝整合.my ...

  2. 初识Hibernate框架,进行简单的增删改查操作

    Hibernate的优势 优秀的Java 持久化层解决方案  (DAO) 主流的对象—关系映射工具产品 简化了JDBC 繁琐的编码 将数据库的连接信息都存放在配置文件 自己的ORM框架 一定要手动实现 ...

  3. 16~25.spring+hibernate简单实例 .连接数据库并进行增删改查

    1.概念 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQ ...

  4. Spring boot+mybatis+thymeleaf 实现登录注册,增删改查

    本文重在实现理解,过滤器,业务,逻辑需求,样式请无视.. 项目结构如下 1.idea新建Spring boot项目,在pom中加上thymeleaf和mybatis支持.pom.xml代码如下 < ...

  5. WPF DataGrid 数据绑定、样式、分页、增删改查,连接Access数据库

    先上效果图: XAML: <UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation&q ...

  6. Spring学习笔记:声明式事务管理增删改查业务

    一.关于是事务 以方法为单位,进行事务控制:抛出异常,事务回滚. 最小的执行单位为方法.决定执行成败是通过是否抛出异常来判断的,抛出异常即执行失败 二.声明式事务: 声明式事务(declarative ...

  7. Hibernate级联及控制反转的增删改查

    在JavaHibernate中,双向多对一的操作一直是一个重点难点,本篇文章就是来探讨这个问题. 双向多对一:一个班级对应多个学生,多个学生同属于一个班级,通过班级信息可以查到班级内的学生,通过学生可 ...

  8. 14.hibernate的反向生成实现全套增删改查

    图片顺序就是步骤顺序 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.

  9. SSH(Struts 2.3.31 + Spring 4.1.6 + Hibernate 5.0.12 + Ajax)框架整合实现简单的增删改查(包含分页,Ajax 无刷新验证该用户是否存在)

    软件152 余建强 该文将以员工.部门两表带领大家进入SSH的整合教程: 源码下载:http://download.csdn.net/detail/qq_35318576/9877235 SSH 整合 ...

随机推荐

  1. 解决Macbook Pro 2017安装Windows10双系统后在Windows系统中Apple蓝牙鼠标不能使用问题

    MAC BOOK PRO 2017安装Windows10双系统 在Windows系统中蓝牙鼠标不能使用解决办法 最近因工作需要,macOS系统不能要求,大部分工作必须要在Windows系统中进行,最初 ...

  2. 【转帖】Python 重复造轮子/造轮子找模子,你都应该熟读该文

    Chardet,字符编码探测器,可以自动检测文本.网页.xml的编码. colorama,主要用来给文本添加各种颜色,并且非常简单易用. Prettytable,主要用于在终端或浏览器端构建格式化的输 ...

  3. 【抓包工具】tcpdump

    tcpdump - dump traffic on a network 根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析.它支 ...

  4. mac OS 安装 Eclipse

    安装Eclipse前先确认你的Mac上是否已安装Java运行环境.进入终端,输入"java -version",如果返回了java版本号则说明已安装 访问Eclipse官方首页ht ...

  5. 狄慧201771010104《面向对象程序设计(java)》第十六周学习总结

    实验十六  线程技术 实验时间 2017-12-8 一.知识点总结: 1.程序与进程的概念 ‐程序是一段静态的代码,它是应用程序执行的蓝本. ‐进程是程序的一次动态执行,它对应了从代码加载.执行至执行 ...

  6. 图论--最短路-- Dijkstra模板(目前见到的最好用的)

    之前的我那个板子,老是卡内存,不知道为什么,我看别人过的那个题都是结构体,我就开始对自己板子做了修改,然后他奶奶的就过了,而且速度也提高了,内存也小了.(自从用了这个板子,隔壁小孩馋哭了)也不知道为啥 ...

  7. The Preliminary Contest for ICPC Asia Xuzhou 2019 徐州网络赛 D Carneginon

    Carneginon was a chic bard. But when he was young, he was frivolous and had joined many gangs. Recen ...

  8. predixy源码学习--开篇

    最近开始研究predixy.predixy是一款高性能全功能redis代理 ,网上有的文章大部分都是功能上的介绍,很少有源码相关的分享. predixy的相关介绍在github: https://gi ...

  9. 进程间通信之socketpair

    socketpair是进程间通信的一种方式. API: ]); DEMO: #include <stdio.h> #include <stdlib.h> #include &l ...

  10. 一键运行CIS安全扫描,集群安全无忧!

    CIS安全扫描是Rancher 2.4推出的其中一个重磅功能,旨在帮助用户快速.有效地加强集群的安全性.本文将详细介绍CIS安全扫描这一功能,包含详细的操作demo. 本文来自Rancher Labs ...