MyBatis+EasyUI+CRUD前台
目录
1.后台准备
1.准备query接收前台分页参数
BaseQuery
public abstract class BaseQuery {
private int page = 1; //默认是第一页
private int rows = 10; //默认每页10条数据
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public int getRows() {
return rows;
}
public void setRows(int rows) {
this.rows = rows;
}
@Override
public String toString() {
return "BaseQuery{" +
"page=" + page +
", rows=" + rows +
'}';
}
}
DepartmentQuery
public class DepartmentQuery extends BaseQuery {
}
2.Service
IBaseService抽取
public interface IBaseService<T> {
void save(T t);
void update(T t);
void delete(Long id);
T findOne(Long id);
List<T> findAll();
PageResult<T> queryAll(BaseQuery query);
}
IDepartmentService
public interface IDepartmentService extends IBaseService<Department> {
}
BaseServiceImpl抽取
@Transactional
public class BaseServiceImpl<T> implements IBaseService<T> {
@Autowired
private BaseMapper<T> baseMapper;
@Override
public void save(T t) {
baseMapper.insert(t);
}
@Override
public void update(T t) {
baseMapper.updateByPrimaryKey(t);
}
@Override
public void delete(Long id) {
baseMapper.deleteByPrimaryKey(id);
}
@Override
@Transactional(readOnly = true,propagation = Propagation.SUPPORTS)
public T findOne(Long id) {
return baseMapper.selectByPrimaryKey(id);
}
@Override
@Transactional(readOnly = true,propagation = Propagation.SUPPORTS)
public List<T> findAll() {
return baseMapper.selectAll();
}
//完成分页功能性
@Override
public PageResult<T> queryAll(BaseQuery query) {
//配置分页的值
PageHelper.startPage(query.getPage(),query.getRows());
Page<T> page = baseMapper.queryAll(query);
return new PageResult<T>(page);
}
}
DepartmentServiceImpl
@Service
public class DepartmentServiceImpl extends BaseServiceImpl<Department> implements IDepartmentService {
}
3.准备响应格式
public class PageResult<T> {
private long total; //总条数
private List<T> rows; //这一行的数据
public PageResult(Page<T> page) {
this.total = page.getTotal();
this.rows = page.getResult();
}
public long getTotal() {
return total;
}
public void setTotal(long total) {
this.total = total;
}
public List<T> getRows() {
return rows;
}
public void setRows(List<T> rows) {
this.rows = rows;
}
}
4.Controller跳转
@Controller
@RequestMapping("/department")
public class DepartmentController {
@Autowired
private IDepartmentService departmentService;
@RequestMapping("/index")
public String index(){
return "department/index";
}
@RequestMapping("/page")
@ResponseBody
public PageResult<Department> page(DepartmentQuery query){
return departmentService.queryAll(query);
}
//返回的结果:{success:true,msg:xxxx}
@RequestMapping("/save")
@ResponseBody
public JsonResult save(Department department){
try {
if(department.getId()!=null){
//有id就是修改
departmentService.update(department);
}else {
departmentService.save(department);
}
return new JsonResult();
} catch (Exception e) {
e.printStackTrace();
return new JsonResult(false,e.getMessage());
}
}
@RequestMapping("/delete")
@ResponseBody
public JsonResult delete(Long id){
try {
departmentService.delete(id);
return new JsonResult();
} catch (Exception e) {
e.printStackTrace();
return new JsonResult(false,e.getMessage());
}
}
}
2.前台准备
1.映入相关的依赖包
2.准备JSP
<%-- Created by IntelliJ IDEA. User: Administrator Date: 2019/4/8 Time: 9:51 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> <%@include file="/WEB-INF/views/common/common.jsp" %> <%--引入当前这个模块对应的js文件--%> <script type="text/javascript" src="static/js/model/department.js"></script> </head> <body> <table id="departmentGrid"></table> <div id="toolbar"> <a href="javascript:;" data-method="add" plain="true" class="easyui-linkbutton c1">添加</a> <a href="javascript:;" data-method="update" plain="true" class="easyui-linkbutton c2">修改</a> <a href="javascript:;" data-method="delete" plain="true" class="easyui-linkbutton c3">删除</a> <a href="javascript:;" data-method="refresh" plain="true" class="easyui-linkbutton c4">刷新</a> </div> <div id="departmentDialog"> <form id="departmentForm" method="post"> <input type="hidden" name="id"> <table cellpadding="5"> <tr> <td>编码:</td> <td><input class="easyui-textbox" type="text" name="sn" data-options="required:true"></input></td> </tr> <tr> <td>名称:</td> <td><input class="easyui-textbox" type="text" name="name" data-options="required:true"></input></td> </tr> <tr> <td>路径:</td> <td><input class="easyui-textbox" type="text" name="dirpath" data-options="required:true"></input></td> </tr> <tr> <td>状态:</td> <td> <select class="easyui-combobox" name="state" style="width:200px; " data-options="panelHeight:'auto'"> <option value="-1">作废</option> <option value="0">正常</option> <option value="1">异常</option> </select> </td> </tr> </table> </form> </div> <div id="departmentDialogButtons"> <a href="javascript:;" data-method="save" plain="true" class="easyui-linkbutton c5">确定</a> <a href="javascript:;" data-method="close" plain="true" class="easyui-linkbutton c6">取消</a> </div> </body> </html>
3.准备Js
$(function () { //wc公共的组件抽取 var departmentGrid = $('#departmentGrid'); var departmentDialog = $('#departmentDialog'); var departmentForm = $('#departmentForm'); //事情注册 $("*[data-method]").on("click",function () { var methodName = $(this).data("method"); itsource[methodName](); }) itsource = { add(){ //居中并且打开 departmentDialog.dialog("center").dialog("open"); //保存每次打开,数据都是空的 departmentForm.form("clear"); }, update(){ //判断是否选中一行 var row = departmentGrid.datagrid("getSelected"); if(!row){ $.messager.alert('提示',"请选中后再进行操作!","info"); return ; } //居中并且打开 departmentDialog.dialog("center").dialog("open"); //保存每次打开,数据都是空的 departmentForm.form("clear"); //进行回显 departmentForm.form("load",row); }, save(){ //提交表单 departmentForm.form('submit', { url:"department/save", onSubmit: function(){ return $(this).form('validate'); }, success:function(data){ //把它转成json var result = JSON.parse(data); if(result.success){ itsource.refresh(); itsource.close(); }else{ $.messager.alert('操作失败',result.msg,"error"); } } }); }, delete(){ //选中一行才可以删除 var row = departmentGrid.datagrid("getSelected"); if(!row){ $.messager.alert('提示',"请选中后再进行操作!","info"); return ; } //问:是否真的要删除? $.messager.confirm('确认','您确认想要删除记录吗?',function(r){ if (r){ $.get("department/delete",{id:row.id},function (result) { if(result.success){ itsource.refresh(); }else{ $.messager.alert('操作失败',result.msg,"error"); } }) } }); }, refresh(){ //刷新一次 departmentGrid.datagrid("reload"); }, close(){ departmentDialog.dialog("close"); } }; //通过js创建咱们的grid departmentGrid.datagrid({ fit:true, fitColumns:true, singleSelect:true, url:'department/page', toolbar:"#toolbar", pageList:[5,10,20,30,40,100], pagination:true, columns:[[ {field:'sn',title:'编码',width:100}, {field:'name',title:'名称',width:100}, {field:'dirpath',title:'路径',width:100,align:'right'}, {field:'state',title:'状态',width:100,align:'right'} ]] }); //通过js创建咱们的弹出框 departmentDialog.dialog({ title: '编辑数据', // width: 400, // height: 200, closed: true, //默认关闭 modal: true, buttons:"#departmentDialogButtons" }); })
4.准备参数common.jsp
<%-- 公共的引入代码 --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <% //获到上下文路径 String path = request.getContextPath(); //拼接相应的路径前缀: http://localhost:80/crm2/ String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <base href="<%=basePath%>"> <link rel="stylesheet" type="text/css" href="static/js/easyui/themes/default/easyui.css"> <link rel="stylesheet" type="text/css" href="static/js/easyui/themes/icon.css"> <link rel="stylesheet" type="text/css" href="static/js/easyui/themes/color.css"> <script type="text/javascript" src="static/js/jquery.min.js"></script> <script type="text/javascript" src="static/js/easyui/jquery.easyui.min.js"></script> <script type="text/javascript" src="static/js/easyui/locale/easyui-lang-zh_CN.js"></script>
5.公共的包
public class JsonResult {
//代表是否成功
private boolean success = true;
private String msg;
public JsonResult() {}
public JsonResult(boolean success, String msg) {
this.success = success;
this.msg = msg;
}
public boolean isSuccess() {
return success;
}
public void setSuccess(boolean success) {
this.success = success;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}