SSM框架之批量增加示例(同步请求jsp视图解析)

准备环境:SSM框架+JDK8/JDK7+MySQL5.7+MAVEN3以上+Tomcat8/7应用服务器

示例说明:

分发给用户优惠券,通过checkbox选中批量分发,对应也就是批量增加。

对于公司使用freemarket或者jsp或者volocity,有一定的启示意思。

不论视图用的是jsp或者非jsp,都可以参考这个示例。

下面采用的是MVC模式。

简单说下MVC模式吧

MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。

  • Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑,在数据变化时更新控制器。
  • View(视图) - 视图代表模型包含的数据的可视化。
  • Controller(控制器) - 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。

 

 

 下面的示例足以验证MVC,可供参考:

jsp代码如下所示:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>发放优惠券</title>
<link href="${APP_PATH}/css/main.css" type="text/css" rel="stylesheet">
<link rel="stylesheet" href="${APP_PATH}/layui/css/layui.css" media="all">
<script src="${APP_PATH}/js/easyui/jquery-1.8.0.min.js"
    type="text/javascript"></script>

</head>
<body>
    <div class="layui-container">
        <div class="layui-row">
    <h2>发放优惠券</h2>
        <script>
     function checkAll() {  
            var all=document.getElementById('all');//获取到点击全选的那个复选框的id  
            var one=document.getElementsByName('memberId');//获取到复选框的名称  
            if(all.checked==true){//因为获得的是数组,所以要循环 为每一个checked赋值  
                for(var i=0;i<one.length;i++){  
                    one[i].checked=true;  
                }  
      
            }else{  
                for(var j=0;j<one.length;j++){  
                    one[j].checked=false;  
                }  
            }  
        }  
     
    $(function(){
        $("#tishi").click(function(){
            alert("分发成功");
        });
    });
    
    </script>


        <div style="margin: 20px 0;"></div>
        <div class="easyui-layout" style="width: 700px; height: 350px;">
            <div
                data-options="region:'center',title:'Main Title',iconCls:'icon-ok'">
                <form action="${pageContext.request.contextPath}/json" method="post"
                    id="checkform">
                    <table class="easyui-datagrid"
                        data-options="url:'datagrid_data1.json',method:'get',border:false,singleSelect:true,fit:true,fitColumns:true">
                        <thead>
                            <tr>
                                <th data-options="field:'itemid'" width="80">昵称</th>
                                <th data-options="field:'productid'" width="100">手机号</th>
                                <th data-options="field:'listprice',align:'right'" width="80">操作</th>
                            </tr>
                        </thead>
                        <c:if test="${list!=null}">
                            <c:forEach items="${list}" var="app">
                                <tr>
                                    <td>${app.nickName}</td>
                                    <td>${app.account}</td>
                                    <td><input type="checkbox" name="memberId"
                                        value="${app.memberId}" /></td>
                                </tr>
                            </c:forEach>
                        </c:if>


                    </table>
                    
                    <input type="hidden" name="hotelNo" id="hotelNo" value="${hotelNo}"/>
                    
                    <input type="hidden" name="couponId" id="couponId_to" 
                        readonly="readonly" value="${couponId }" /> <input id="all"
                        onclick="checkAll()" type="checkbox" />全选 <br /> <input
                        type="submit"  id="tishi" onclick="checkAll()" value="提交" />
                </form>
            </div>
        </div>
        </div>
        </div>
        
            <!-- js -->
            <script src="${APP_PATH}/layui/layui.js" charset="utf-8"></script>
<script src="${APP_PATH}/js/layer/layer-v3.1.1/layer/mobile/layer.js"
    type="text/javascript"></script>

</body>
</html>

 

Controller代码:

    
    /**
     * 优惠券批量分发给用户
     * @param qv
     * @return
     */
   @RequestMapping(value = "json", method = {RequestMethod.POST })
   public Object save(QueryVo qv,HttpServletRequest request,Model model){

         String hotelNo = request.getParameter("hotelNo");
         
         Hotel hotel = hotelService.queryHotelNoInfo(hotelNo);
         
        logger.info("优惠券Id:"+qv.getCouponId());
        logger.info("所有数组:"+qv.getMemberId());
       
        //判断是否为空
        if (qv.getMemberId()!=null)
        {      
           int size=java.lang.reflect.Array.getLength(qv.getMemberId());  //获取传过来的数组长度 
           System.out.println(size);
           
           String memberId[]=qv.getMemberId();//获取数组中的值
           
           String couponId=qv.getCouponId();//获取优惠券ID
           
           for (int i = 0; i < memberId.length; i++) {
               AccountCoupon ac = new AccountCoupon();
               ac.setMemberId(memberId[i]);
               ac.setCouponId(couponId);
         
               ac.setFrom(null);

               SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd HH:mm:ss");
               String date = sdf.format(new Date());
               ac.setReceiveDate(date);

               ac.setStatus(new Consts().COUPON_UNUSED);//默认状态 "待使用"
               ac.setUsedDate(null);
               List<AccountCoupon> list = new ArrayList<AccountCoupon>();
             
               list.add(ac);//添加到集合中
               logger.info("批量分发优惠券成功");
               accountCouponService.insertAccountCouponInfo(list);//批量插入数据
           
           }
           
          }     
        model.addAttribute("hotel", hotel);
        return "/Set/transit4";

   }

 

对应的DAO和Service及其实现类和xml如下:

DAO和Service代码相同不变

    //批量插入数据
    public void insertAccountCouponInfo(@Param("acs")List<AccountCoupon> acs);
    

 

Service实现类如下:

    @Override
    public void insertAccountCouponInfo(List<AccountCoupon> acs) {
        accountCouponMapper.insertAccountCouponInfo(acs);
        
    }

 

xml:

  <!-- 批量發放优惠券 -->
  <insert id="insertAccountCouponInfo">
      INSERT INTO `account_coupon` (`member_id`, `coupon_id`, `status`, `receive_date`, `from`, `used_date`)
    VALUES
    <foreach collection="acs" item="ac" index="index" separator=",">
    (#{ac.memberId,jdbcType=VARCHAR}, #{ac.couponId,jdbcType=VARCHAR}, #{ac.status,jdbcType=VARCHAR}, #{ac.receiveDate,jdbcType=VARCHAR}, #{ac.from,jdbcType=VARCHAR} , #{ac.usedDate})
    </foreach>
  </insert>

 

对应的实体如下:

public class AccountCoupon {
    /** 自增主键*/
    private String id;
    
    /** 用户id*/
    private String memberId;
    
    /** 优惠券id*/
    private String couponId;
    
    /** 状态  未领取0   待使用1   已使用2  已过期3  冻结4  已核销5*/
    private String status;
    
    /** 领取优惠券日期*/
    private String receiveDate;
    
    /** 优惠券来源发放或主动领取*/
    private String from;
    
    /** 使用日期*/
    private String usedDate;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getMemberId() {
        return memberId;
    }

    public void setMemberId(String memberId) {
        this.memberId = memberId;
    }

    public String getCouponId() {
        return couponId;
    }

    public void setCouponId(String couponId) {
        this.couponId = couponId;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getReceiveDate() {
        return receiveDate;
    }

    public void setReceiveDate(String receiveDate) {
        this.receiveDate = receiveDate;
    }

    public String getFrom() {
        return from;
    }

    public void setFrom(String from) {
        this.from = from;
    }

    public String getUsedDate() {
        return usedDate;
    }

    public void setUsedDate(String usedDate) {
        this.usedDate = usedDate;
    }
    
    

}

 

posted @ 2018-07-23 20:45  挑战者V  阅读(1873)  评论(0编辑  收藏  举报