欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2016年11月05日 14:34:46   作者:Jay_1989  
這篇文章主要介紹了SpringMVC與Mybatis集合實(shí)現(xiàn)調(diào)用存儲(chǔ)過(guò)程、事務(wù)控制實(shí)例,有需要的可以了解一下。

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

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

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中代碼如下:

<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層代碼如下:

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層代碼如下:
接口:

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; 
   
} 

實(shí)現(xiàn)類:

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層代碼如下:

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() : "后臺(tái)異常"); 
    } 
    return responseVO; 
  } 
   
} 

6、前端js層代碼如下:

function save() { 
    $("#save").addClass("disabled"); 
     
    if ($("#selSHCK").val() == "") { 
      layer.msg('請(qǐng)?zhí)顚懯肇泜}(cāng)庫(kù)', { 
        icon : 5 
      }); 
      $("#save").removeClass("disabled"); 
      return; 
    } 
     
    if($("#selSHCK").val() == $("#selFHCK").val()){ 
      layer.msg('發(fā)貨倉(cāng)庫(kù)與收貨倉(cāng)庫(kù)不能一樣', { 
        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('請(qǐng)輸入轉(zhuǎn)倉(cāng)數(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('請(qǐng)輸入轉(zhuǎn)倉(cāng)數(shù)量', { 
        icon : 5 
      }); 
      $("#save").removeClass("disabled"); 
      return; 
    } 
     
    if (zcditemAry.length == 0) { 
      layer.msg('請(qǐng)輸入轉(zhuǎn)倉(cāng)商品信息', { 
        icon : 5 
      }); 
      $("#save").removeClass("disabled"); 
      return; 
    } 
  /* else{ 
      for(var i=0;i<zcditemAry;i++){ 
        if(zcditemAry[i].zcdi03 == ""){ 
          layer.msg('請(qǐng)輸入轉(zhuǎn)倉(cāng)數(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)倉(cāng)單成功', { 
            icon : 6 
          }); 
        } else { 
          layer.msg('制定轉(zhuǎn)倉(cāng)單失敗' + data.errorMsg, { 
            icon : 5 
          }); 
          $("#save").removeClass("disabled"); 
        } 
      } 
    }); 
  } 

 以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • JavaMail實(shí)現(xiàn)發(fā)送郵件功能

    JavaMail實(shí)現(xiàn)發(fā)送郵件功能

    這篇文章主要為大家詳細(xì)介紹了JavaMail實(shí)現(xiàn)發(fā)送郵件功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • SpringSecurity注銷設(shè)置的方法

    SpringSecurity注銷設(shè)置的方法

    這篇文章主要為大家詳細(xì)介紹了SpringSecurity注銷設(shè)置的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • MyBatis-plus 模糊查詢的使用

    MyBatis-plus 模糊查詢的使用

    這篇文章主要介紹了MyBatis-plus 模糊查詢的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 聊聊SpringBoot中組件無(wú)法被注入的問(wèn)題

    聊聊SpringBoot中組件無(wú)法被注入的問(wèn)題

    這篇文章主要介紹了SpringBoot中組件無(wú)法被注入的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 改變JAVA窗體屬性的操作方法

    改變JAVA窗體屬性的操作方法

    在本篇內(nèi)容里小編給大家詳細(xì)分析了關(guān)于改變JAVA窗體屬性的操作方法和步驟,需要的朋友們學(xué)習(xí)下。
    2018-12-12
  • 淺談一下Java的雙親委派模式

    淺談一下Java的雙親委派模式

    這篇文章主要介紹了一下Java的雙親委派模式,雙親委派指得是,JVM在加載類時(shí),會(huì)委派給ExtClassLoader和BootstrapClassLoader進(jìn)?加載,如果沒(méi)加載到才由??進(jìn)?加載,需要的朋友可以參考下
    2023-04-04
  • Java開(kāi)發(fā)環(huán)境配置及Vscode搭建過(guò)程

    Java開(kāi)發(fā)環(huán)境配置及Vscode搭建過(guò)程

    今天通過(guò)圖文并茂的形式給大家介紹Java開(kāi)發(fā)環(huán)境配置及Vscode搭建過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-07-07
  • springboot新建項(xiàng)目pom.xml文件第一行報(bào)錯(cuò)的解決

    springboot新建項(xiàng)目pom.xml文件第一行報(bào)錯(cuò)的解決

    這篇文章主要介紹了springboot新建項(xiàng)目pom.xml文件第一行報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 基于Jasypt對(duì)SpringBoot配置文件加密

    基于Jasypt對(duì)SpringBoot配置文件加密

    這篇文章主要介紹了基于Jasypt對(duì)SpringBoot配置文件加密,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • 深入了解Java核心類庫(kù)--Objects類

    深入了解Java核心類庫(kù)--Objects類

    這篇文章主要介紹了Java中的Object類詳細(xì)介紹,本文講解了Object類的作用、Object類的主要方法、Object類中不能被重寫的方法、Object類的equals方法重寫實(shí)例等內(nèi)容,需要的朋友可以參考下
    2021-07-07

最新評(píng)論