家庭财务管理系统实战3- 实现列表数据的增删改查功能

声明:本系列文章为练手之作,编码前并未做详细的需求分析、设计等,作者纯粹是想起什么来写什么,功能也是想起什么来实现什么,读者就舍其糟粕,取其精华吧(谈不上精华,各种常用功能还是有的)。


今天实现数据的增删改查功能。


系统会用到各种各样的基础数据,因此建立数据字典表,存放各种基础数据,


CREATE TABLE `datadict` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `catalog` varchar(50) DEFAULT NULL COMMENT '数据类型',
  `code` varchar(50) DEFAULT NULL COMMENT '数据代码',
  `codename` varchar(200) DEFAULT NULL COMMENT '数据含义',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=40 DEFAULT CHARSET=utf8

    id  catalog   code      codename      
------  --------  --------  --------------
     1  root      payout    支出        
     2  root      income    收入        
     3  root      currency  币种        
     4  root      card      卡类别 

先贴个效果图:



关于列表的显示,详见http://blog.csdn.net/blogtime/article/details/15812419

列表页面jsp代码如下,datadict.jsp:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="UTF-8"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://"
            + request.getServerName() + ":" + request.getServerPort()
            + path ;
%>
<script>
$(function(){
	$('#dg').datagrid({
        url:'<%=basePath%>/commonController/listDatadict.do',//显示数据列表的action
        singleSelect:true,
        columns:[[
            {field:'id',title:'id',hidden:true,width:300},
            {field:'catalog',title:'类别',width:300},
            {field:'code',title:'代码',width:300},
            {field:'codename',title:'代码名称',width:300}
        ]],
        toolbar: [{
        	text:'添加',
            iconCls: 'icon-add',
            handler: function(){
            	$('#window').window({   //easyui控件,用来显示添加,编辑等页面,默认是隐藏的,点击添加或编辑的时候会弹出
            		title:'添加',
            		closed:false
            	});
            	$('#window').window('refresh', '<%=basePath%>/jsp/adddatadict.jsp');//点击添加按钮,弹出添加页面框
            }
        },'-',{
        	text:'编辑',
            iconCls: 'icon-edit',
            handler: function(){
            	var select = $('#dg').datagrid('getSelected');
                if (select == null){
                    $.messager.alert("Info","请选择记录!","Info");
                }
                else{
                    $.ajax({
                        type: 'POST',   
                        url: '<%=basePath%>/commonController/preUpdateDatadictData.do',//编辑分两步,首先读取原始数据,显示到页面,然后修改提交
                        data: 'id='+select.id,
                        dataType:'text',
                        success: function(msg){
                        	$('#window').window({
                                title:'编辑',
                                closed:false,
                                content:msg
                            });
                        }
                    });
                }
            }
        },'-',{
        	text:'删除',
            iconCls: 'icon-remove',
            handler: function(){
            	var select = $('#dg').datagrid('getSelected');
            	if (select == null){
            		$.messager.alert("Info","请选择记录!","Info");
            	}
            	else{
            		$.ajax({
            			type: 'POST',   
                        url: '<%=basePath%>/commonController/deleteDatadictData.do',//删除操作的action
                        data: 'id='+select.id,
                        dataType:'text',
                        success: function(msg){
                            var temp = $.parseJSON(msg); 
                            if (temp.success) {
                                $.messager.alert('删除成功!',temp.msg,'Info');
                            }
                            else{
                                $.messager.alert('删除失败',temp.msg,'Info');
                            }
                            $('#dg').datagrid('load');
                          }
            		});
            	}
            }
        }],
        onLoadSuccess:function(data){
        }
    });
});
	
</script>
<div>
    <table id="dg"></table>
</div>

下面是adddatadict.jsp: 

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="UTF-8"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://"
            + request.getServerName() + ":" + request.getServerPort()
            + path ;
%>
<script>
$(function(){
	
});
function submit(){
	$('#myform').form('submit', {
        url : '<%=basePath%>/commonController/addDatadictData.do',//添加数据的action
        onSubmit : function() {
            
            if ($(this).form("validate")) {
                return true;
            } else {
                return false;
            }
        },
        success : function(data) {
        	var temp = $.parseJSON(data); 
        	if (temp.success) {
        		$.messager.alert('增加成功',temp.msg,'Info');
        	}
        	else{
        		$.messager.alert('添加失败',temp.msg,'Info');
        	}
        	$('#window').window('close');//添加成功后关闭添加页面框
        	$('#dg').datagrid('load');//重新加载列表
        }
    });
}
function cancel() {
    $('#myform').form('clear');
    $('#window').window('close');
}	
</script>
<div>
    <form id="myform" method="post">
        <table align="center">
            <tr>
                <td>
                <label>选择类别:</label>
                </td>
                <td>
                <input class="easyui-combobox" id = "catalog" name="catalog" 
		        data-options="required:true,
		            valueField:'code',
                    textField:'codename',
		            url:'<%=basePath%>/commonController/listDatadictCata.do'  //页面上的combobox下拉框数据加载action
		        " />
                </td>
            </tr>
            <tr>
                <td>
                <label>代码:</label>
                </td>
                <td>
                <input class="easyui-validatebox" type="text" id="code" name="code" 
                    style="width: 290px;" data-options="required:true">
                </td>
            </tr>
            <tr>
                <td>
                <label>中文名称:</label>
                </td>
                <td>
                <input class="easyui-validatebox" type="text" id="codename" name="codename"
                    style="width: 290px;" data-options="required:true">
                </td>
            </tr>
        </table>
</form>
</div>
<div style="text-align:center;padding:5px">
            <a href="javascript:void(0)" class="easyui-linkbutton" οnclick="submit()">提交</a>
            <a href="javascript:void(0)" class="easyui-linkbutton" οnclick="cancel()">取消</a>
</div>

下面是修改记录的jsp页面,preupdatedatadictdata.jsp,

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="UTF-8"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://"
            + request.getServerName() + ":" + request.getServerPort()
            + path ;
%>
<script>
$(function(){
	
});
function submit(){
	$('#myform').form('submit', {
        url : '<%=basePath%>/commonController/updateDatadictData.do',
        onSubmit : function() {
            
            if ($(this).form("validate")) {
                return true;
            } else {
                return false;
            }
        },
        success : function(data) {
        	var temp = $.parseJSON(data); 
        	if (temp.success) {
        		$.messager.alert('修改成功',temp.msg,'Info');
        	}
        	else{
        		$.messager.alert('修改失败',temp.msg,'Info');
        	}
        	$('#window').window('close');
        	$('#dg').datagrid('load');
        }
    });
}
function cancel() {
    $('#myform').form('clear');
    $('#window').window('close');
}	
</script>
<div>
    <form id="myform" method="post">
    <input type="hidden" value="${entity.id}" name="id" id="id"/>
        <table align="center">
            <tr>
                <td>
                <label>选择类别:</label>
                </td>
                <td>
                <input class="easyui-combobox" id = "catalog" name="catalog" 
		        data-options="required:true,
		            valueField:'code',
                    textField:'codename',
                    editable:false,
                    readonly:true,
		            url:'<%=basePath%>/commonController/listDatadictCata.do',
		            onLoadSuccess:function(){
		              $('#catalog').combobox('setValue','${entity.catalog}');
		            }
		        " />
                </td>
            </tr>
            <tr>
                <td>
                <label>代码:</label>
                </td>
                <td>
                <input class="easyui-validatebox" type="text" id="code" name="code" value="${entity.code}"
                    style="width: 290px;" data-options="required:true">
                </td>
            </tr>
            <tr>
                <td>
                <label>中文名称:</label>
                </td>
                <td>
                <input class="easyui-validatebox" type="text" id="codename" name="codename" value="${entity.codename}"
                    style="width: 290px;" data-options="required:true">
                </td>
            </tr>
        </table>
</form>
</div>
<div style="text-align:center;padding:5px">
            <a href="javascript:void(0)" class="easyui-linkbutton" οnclick="submit()">提交</a>
            <a href="javascript:void(0)" class="easyui-linkbutton" οnclick="cancel()">取消</a>
</div>



下面是datadict表对应的实体类,以及在mapper.xml中的定义:  

package system.homebank.entity;

import java.io.Serializable;

public class DataDict implements Serializable 
{
  private static final long serialVersionUID = -2692788275202369407L;
  
  private Integer id;
  private String catalog;
  private String code;
  private String codename;
  public Integer getId()
  {
    return id;
  }
  public void setId(Integer id)
  {
    this.id = id;
  }
  public String getCatalog()
  {
    return catalog;
  }
  public void setCatalog(String catalog)
  {
    this.catalog = catalog;
  }
  public String getCode()
  {
    return code;
  }
  public void setCode(String code)
  {
    this.code = code;
  }
  public String getCodename()
  {
    return codename;
  }
  public void setCodename(String codename)
  {
    this.codename = codename;
  }
  
  
}

<resultMap id="datadictResultMap" type="system.homebank.entity.DataDict">
        <id property="id" column="id"/>
        <result property="catalog" column="catalog"/>
        <result property="code" column="code"/>
        <result property="codename" column="codename"/>
    </resultMap>
<insert id="addDatadictData" parameterType="DataDict" useGeneratedKeys="true">
        insert into datadict(catalog,code,codename) values (#{catalog},#{code},#{codename})
    </insert>
    <delete id="delDatadictData" parameterType="String" >
        delete from  datadict where id = #{id}
    </delete>
    <select id="getDatadictDataById" parameterType="String" resultType="DataDict">
        select * from datadict where id = #{id}
    </select>
    <insert id="updateDatadictData" parameterType="DataDict">
        update datadict set catalog = #{catalog},code = #{code},codename = #{codename}
        where id = #{id}
    </insert>

下面是增删改的controller,代码简单写,直接返回添加成功了: 

@RequestMapping("/addDatadictData.do")
  @ResponseBody
  public Object addDatadictData(DataDict model)
  {
    this.service.addDatadictData(model);
    Map<String,String> map = new HashMap<String,String>();
    map.put("success", "true");
    map.put("msg", "添加成功!");
    return map;
  }
  @RequestMapping("/deleteDatadictData.do")
  @ResponseBody
  public Object delDatadictData(@RequestParam String id)
  {
    this.service.delDatadictData(id);
    Map<String,String> map = new HashMap<String,String>();
    map.put("success", "true");
    map.put("msg", "删除成功!");
    return map;
  }
  @RequestMapping("/preUpdateDatadictData.do")
  public Object preUpdateDatadictData(@RequestParam String id,Model model)
  {
    DataDict data = this.service.getDatadictDataById(id);
    model.addAttribute("entity", data);
    return "/preupdatedatadictdata";
  }
  @RequestMapping("/updateDatadictData.do")
  @ResponseBody
  public Object updateDatadictData(DataDict model)
  {
    this.service.updateDatadictData(model);
    Map<String,String> map = new HashMap<String,String>();
    map.put("success", "true");
    map.put("msg", "修改成功!");
    return map;
  }

下面贴几张效果图:





  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

失足成万古风流人物

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值