一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術(shù)|

服務(wù)器之家 - 編程語言 - JAVA教程 - SpringMVC與Mybatis集合實現(xiàn)調(diào)用存儲過程、事務(wù)控制實例

SpringMVC與Mybatis集合實現(xiàn)調(diào)用存儲過程、事務(wù)控制實例

2020-07-01 11:19Jay_1989 JAVA教程

這篇文章主要介紹了SpringMVC與Mybatis集合實現(xiàn)調(diào)用存儲過程、事務(wù)控制實例,有需要的可以了解一下。

在SSM框架中經(jīng)常會用到調(diào)用數(shù)據(jù)庫中的存儲過程、以及事務(wù)控制,下面以保存某單據(jù)為例,介紹一下:

1、Oracle中存儲過程代碼如下(主要邏輯將單據(jù)編碼自動加1,并將該單據(jù)編碼返回):

?
1
2
3
4
5
6
7
8
9
CREATE OR REPLACE PROCEDURE "UPDATE_DJBHZT" (p_GSID in varchar2, p_TBLNAME in varchar2,
                  NewRecNo out Number) as
begin
  update BHDJ set BHDJ02 = BHDJ02+1 where GSXX01 = p_GSID and BHDJ01 = p_TBLNAME;
  if sql%rowcount = 0 then
    insert into BHDJ (GSXX01, BHDJ01,BHDJ02) values(p_GSID, p_TBLNAME,1);
  end if;
  select BHDJ02 into NewRecNo from BHDJ where GSXX01 = p_GSID and BHDJ01 = p_TBLNAME;
end;

2、Mybatis中代碼如下:

?
1
2
3
4
5
<select id="update_djbhzt" parameterType="java.util.Map" statementType="CALLABLE">
<![CDATA[ 
  {call UPDATE_DJBHZT(#{p_GSID,mode=IN,jdbcType=VARCHAR},#{p_TBLNAME,mode=IN,jdbcType=VARCHAR},#{NewRecNo,mode=OUT,jdbcType=BIGINT})} 
]]>
</select>

3、Dao層代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
package com.pcmall.dao.sale.stock;
 
import java.util.List;
import java.util.Map;
 
import com.github.miemiedev.mybatis.paginator.domain.PageBounds;
import com.pcmall.dao.common.BaseMapper;
import com.pcmall.domain.sale.stock.Zcd;
 
public interface ZcdMapper extends BaseMapper<Zcd> {
   
  void update_djbhzt(Map<String,Object> map); 
 
}

4、Service層代碼如下:
接口:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package com.pcmall.service.sale.stock;
 
import java.util.List;
 
import com.github.miemiedev.mybatis.paginator.domain.PageBounds;
import com.pcmall.domain.sale.order.HssnCmmx;
import com.pcmall.domain.sale.stock.Zcd;
import com.pcmall.domain.sale.stock.Zcditem;
import com.pcmall.domain.sale.user.User;
import com.pcmall.domain.vo.ResponseVO;
import com.pcmall.service.common.IBaseService;
 
public interface IZcdService extends IBaseService<Zcd> {
 
  Long getZcdNo(String gsxx01, String tablename);
 
  ResponseVO saveZcd(Zcd zcd, User user) throws Exception;
   
}

實現(xiàn)類:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package com.pcmall.service.sale.stock.impl;
 
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
import javax.annotation.Resource;
 
import org.apache.axis.holders.SchemaHolder;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
 
import com.github.miemiedev.mybatis.paginator.domain.PageBounds;
import com.google.common.collect.Collections2;
import com.pcmall.common.utils.DateUtils;
import com.pcmall.dao.sale.stock.ZcdMapper;
import com.pcmall.dao.sale.stock.ZcditemMapper;
import com.pcmall.domain.sale.order.HssnCmmx;
import com.pcmall.domain.sale.promotion.HsCxlx;
import com.pcmall.domain.sale.stock.Zcd;
import com.pcmall.domain.sale.stock.Zcditem;
import com.pcmall.domain.sale.stock.bo.CkspBO;
import com.pcmall.domain.sale.user.User;
import com.pcmall.domain.vo.ResponseVO;
import com.pcmall.service.common.AbstractServiceImpl;
import com.pcmall.service.sale.order.IOrderService;
import com.pcmall.service.sale.stock.IStockService;
import com.pcmall.service.sale.stock.IZcdService;
 
@Service
public class ZcdServiceImpl extends AbstractServiceImpl<Zcd> implements IZcdService {
   
  @Resource
  private ZcdMapper zcdMapper;
   
  @Resource
  private ZcditemMapper zcditemMapper;
   
  @Resource
  private IStockService stockServiceImpl;
   
   
  @Transactional(rollbackFor = Exception.class)
  @Override
  public ResponseVO saveZcd(Zcd zcd, User user) throws Exception {
    ResponseVO responseVO = new ResponseVO();
    Long zcd01 = getZcdNo(zcd.getGsxx01(), "ZCD");
    zcd.setZcd01(zcd01);
    zcd.setZcd05(user.getRyxx().getRyxx02());
    zcd.setZcd06(new Date());
     
    Date nowTime = new Date();
    SimpleDateFormat sdf = new SimpleDateFormat("hhmmssms");
    zcd.setTime01(sdf.format(nowTime));
     
     
    for(Zcditem zcditem : zcd.getZcditem()){
      zcditem.setZcd01(zcd01);
      zcditemMapper.insertSelective(zcditem);
    }
     
    zcdMapper.insertSelective(zcd);
     
    responseVO.setData(zcd);
    return responseVO;
  }
 
 
  @Override
  public Long getZcdNo(String gsxx01, String tablename) {
    Map<String, Object> map = new HashMap<String, Object>();
    map.put("p_GSID", gsxx01);
    map.put("p_TBLNAME", tablename);
 
    zcdMapper.update_djbhzt(map);
    Long NewRecNo = (Long) map.get("NewRecNo");
    return NewRecNo;
  }
}

 

5、Control層代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
package com.pcmall.controller.stock.zcd;
 
import java.util.List;
 
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
 
import org.apache.commons.collections.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
 
import com.github.miemiedev.mybatis.paginator.domain.PageBounds;
import com.pcmall.common.base.BaseController;
import com.pcmall.domain.sale.stock.Zcd;
import com.pcmall.domain.sale.stock.Zcditem;
import com.pcmall.domain.sale.stock.bo.CkspDetailBO;
import com.pcmall.domain.sale.stock.bo.ZcdBO;
import com.pcmall.domain.sale.system.Gzzqx;
import com.pcmall.domain.sale.system.GzzqxKey;
import com.pcmall.domain.sale.system.Ryxx;
import com.pcmall.domain.sale.user.Czy;
import com.pcmall.domain.sale.user.User;
import com.pcmall.domain.vo.ResponseVO;
import com.pcmall.service.sale.stock.IStockService;
import com.pcmall.service.sale.stock.IZcdService;
import com.pcmall.service.sale.system.IGzzqxService;
 
@Controller
@RequestMapping("/stock/zcd")
public class ZCDController extends BaseController {
   
  private static Logger logger=LoggerFactory.getLogger(ZCDController.class);
   
  @Resource
  private IZcdService zcdServiceImpl;
   
   
  @Resource
  private IStockService stockServiceImpl;
   
  @Resource
  private IGzzqxService gzzqxServiceImpl;
   
   
   
  @RequestMapping("/saveZcd")
  @ResponseBody
  public ResponseVO saveZcd(HttpServletRequest request, @RequestBody Zcd zcd){
    ResponseVO responseVO = new ResponseVO();
    try{
      responseVO = zcdServiceImpl.saveZcd(zcd, getLoginUser());
      responseVO.setSuccess(true);
    }
    catch (Exception e) {
      logger.error("",e);
      responseVO.setSuccess(false);
      responseVO.setErrorMsg(!"".equals(e.getMessage()) ? e
          .getMessage() : "后臺異常");
    }
    return responseVO;
  }
   
}

6、前端js層代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
function save() {
    $("#save").addClass("disabled");
     
    if ($("#selSHCK").val() == "") {
      layer.msg('請?zhí)顚懯肇泜}庫', {
        icon : 5
      });
      $("#save").removeClass("disabled");
      return;
    }
     
    if($("#selSHCK").val() == $("#selFHCK").val()){
      layer.msg('發(fā)貨倉庫與收貨倉庫不能一樣', {
        icon : 5
      });
      $("#save").removeClass("disabled");
      return;
    }
     
     
 
    var param = {};
    param.bm01 = $("#selBm").attr("valuea");
    param.zcd02 = $("#selFHCK").attr("valuea");
    param.zcd03 = $("#selSHCK").attr("valuea");
    param.zcd04 = $("#zcd04").val();
    param.gsxx01 = $("#gsxx01").val();
 
    var zcditemAry = [];
    var flag = 0;
    $("#tbody1").find("tr").each(function() {
      var zcditem = {};
      var arrtd = $(this).children();
 
      zcditem.spxx01 = $.trim(arrtd.eq(0).text());
      zcditem.wldw01 = $.trim(arrtd.eq(6).text());
      zcditem.zcdi01 = $.trim(arrtd.eq(7).text());
       
      if($.trim(arrtd.eq(2).children(".zcdi03").val()) == ""){
        /* layer.msg('請輸入轉(zhuǎn)倉數(shù)量', {
          icon : 5
        });
        $("#save").removeClass("disabled"); */
         
        flag = 1;
        return;
      }
       
      zcditem.zcdi02 = $.trim(arrtd.eq(2).children(".zcdi03").val());
      zcditem.zcdi03 = $.trim(arrtd.eq(2).children(".zcdi03").val());
      zcditem.zcdi05 = $.trim(arrtd.eq(8).text());
      zcditem.zcdi06 = $.trim(arrtd.eq(4).children(".zcdi06").val());
      zcditem.gsxx01 = $("#gsxx01").val();
      zcditem.zcdi07 = $.trim(arrtd.eq(9).text());
      zcditemAry.push(zcditem);
    })
    param.zcditem = zcditemAry;
 
    if(flag == 1){
      layer.msg('請輸入轉(zhuǎn)倉數(shù)量', {
        icon : 5
      });
      $("#save").removeClass("disabled");
      return;
    }
     
    if (zcditemAry.length == 0) {
      layer.msg('請輸入轉(zhuǎn)倉商品信息', {
        icon : 5
      });
      $("#save").removeClass("disabled");
      return;
    }
  /* else{
      for(var i=0;i<zcditemAry;i++){
        if(zcditemAry[i].zcdi03 == ""){
          layer.msg('請輸入轉(zhuǎn)倉數(shù)量', {
            icon : 5
          });
          $("#save").removeClass("disabled");
          return;
        }
      }
    } */
 
    $.ajax({
      url : "${ctx }/stock/zcd/saveZcd",
      data : $.json.decode(param),
      contentType : "application/json",
      type : "POST",
      dataType : "json",
      success : function(data) {
        if (data.success) {
          $("#zcd01").val(data.data.zcd01);
          $("#zcd05").val(data.data.zcd05);
          $("#zcd06").val(data.data.zcd06);
          layer.msg('制定轉(zhuǎn)倉單成功', {
            icon : 6
          });
        } else {
          layer.msg('制定轉(zhuǎn)倉單失敗' + data.errorMsg, {
            icon : 5
          });
          $("#save").removeClass("disabled");
        }
      }
    });
  }

 以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲欧美日韩在线观看看另类 | 亚洲高清网站 | heyzo1754北岛玲在线视频 | 国产乱码一卡二卡3卡四卡 国产乱插 | 91亚洲精品国产自在现线 | 天天白天天谢天天啦 | 小莹的性荡生活45章 | 香蕉精品国产高清自在自线 | 万域之王动漫在线观看全集免费播放 | 久久99精国产一区二区三区四区 | 国产精品成人 | a黄色 | 亚洲成人网在线 | 欧美男人的天堂 | 狠狠五月天中文字幕 | 俄罗斯一级毛片免费播放 | 福利国模私拍视频在线观看 | 好吊色青青青国产综合在线观看 | 狠狠干在线观看 | 97午夜视频 | 美女毛片老太婆bbb80岁 | 国产福利一区二区精品视频 | 校花被强迫np肉高h 校服下的白嫩小乳尖h1v1 | 情缘免费观看完整版 | 亚洲电影成人 成人影院 | 波多野结衣在线观看中文字幕 | 亚洲精品九色在线网站 | chinese男gay| 国产精品视频久久久 | 亚洲mm色国产网站 | 香蕉精品高清在线观看视频 | 亚洲精品AV无码喷奶水糖心 | 18亚洲chinese男男1069 | 91香蕉国产在线观看人员 | 91桃花视频 | 艾秋果冻麻豆老狼 | 欧美日韩中文字幕在线视频 | 欧美亚洲国产另类 | 青青国产成人久久激情911 | 成人午夜影院在线观看 | 日本一道高清不卡免费 |