SSM 프레임 워크에서는 종종 데이터베이스에서 저장 프로 시저 및 트랜잭션 제어를 호출하는 데 사용됩니다. 다음은 특정 문서를 저장하는 예입니다.
1. Oracle의 저장된 프로 시저 코드는 다음과 같습니다 (기본 논리는 자동으로 문서 인코딩에 1을 추가하고 문서 인코딩을 반환합니다).
프로 시저 "update_djbhzt"(varchar2의 p_gsid, varchar2의 p_tblname, newrecno out 숫자) bhdj set bhdj02 = bhdj02+1 여기서 gsxx01 = p_gsid 및 bhdj01 = p_tblname; SQL%rowCount = 0이면 bhdj (gsxx01, bhdj01, bhdj02) 값 (p_gsid, p_tblname, 1)에 삽입; 끝 IF; bhdj02에서 bhdj02에서 bhdj01을 선택하십시오. 여기서 gsxx01 = p_gsid 및 bhdj01 = p_tblname; 끝;
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 계층의 코드는 다음과 같습니다.
패키지 com.pcmall.dao.sale.stock; Java.util.list 가져 오기; java.util.map import; com.github.miemedev.mybatis.paginator.domain.pagebounds import; com.pcmall.dao.common.basemapper 가져 오기; import com.pcmall.domain.sale.stock.zcd; public interface zcdmapper 확장 Basemapper <zcd> {void update_djbhzt (map <string, object> map); } 4. 서비스 계층 코드는 다음과 같습니다.
인터페이스 :
패키지 com.pcmall.service.sale.stock; Java.util.list 가져 오기; com.github.miemedev.mybatis.paginator.domain.pagebounds import; import com.pcmall.domain.sale.order.hssncmmx; import com.pcmall.domain.sale.stock.zcditem; import com.pcmall.domain.sale.stock.zcditem; import com.pcmall.domain.sale.user.user; import com.pcmall.domain.vo.responsevo; com.pcmall.service.common.ibaseservice 가져 오기; public interface izcdservice 확장 ibaseservice <zcd> {long getzcdno (String gsxx01, String tablename); responsevo savezcd (zcd zcd, 사용자 사용자)는 예외를 던집니다. } 구현 클래스 :
패키지 com.pcmall.service.sale.stock.impl; import java.text.simpledateformat; java.util.arraylist 가져 오기; import java.util.date; java.util.hashmap import; Java.util.list 가져 오기; java.util.map import; import javax.annotation.resource; import org.apache.axis.holders.schemaholder; import org.apache.commons.collections.collectionUtils; org.springframework.stereotyp.service; org.springframework.transaction.annotation.transactional import; com.github.miemedev.mybatis.paginator.domain.pagebounds import; import com.google.common.collect.collections2; com.pcmall.common.utils.dateutils 가져 오기; com.pcmall.dao.sale.stock.zcdmapper 가져 오기; import com.pcmall.dao.sale.stock.zcditemmapper; import com.pcmall.domain.sale.order.hssncmmx; com.pcmall.domain.sale.promotion.hscxlx import; 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; com.pcmall.service.common.abstractserviceimpl 가져 오기; com.pcmall.service.sale.order.iorderService 가져 오기; com.pcmall.service.sale.stock.istockservice 가져 오기; com.pcmall.service.sale.stock.izcdservice 가져 오기; @service public class zcdserviceimpl 확장 초록을 afractserviceimpl <zcd> 구현 izcdservice {@resource private zcdmapper zcdmapper; @Resource 개인 zcditemmapper zcditemmapper; @Resource private istockservice stockserviceimpl; @transactional (rollbackfor = exception.class) @override public responshipvo savezcd (zcd zcd, user user) exception {responsevo responsevo = new responsevo (); long zcd01 = getzcdno (zcd.getgsxx01 (), "zcd"); ZCD.SETZCD01 (ZCD01); zcd.setzcd05 (user.getryxx (). getryxx02 ()); zcd.setzcd06 (new date ()); 날짜 nowtime = 새 날짜 (); simpledateformat sdf = new simpledateformat ( "hhmmssms"); zcd.settime01 (sdf.format (nowtime)); for (zcditem zcditem : zcd.getzcditem ()) {zcditem.setzcd01 (zcd01); zcditemmapper.insertselective (zcd); } zcdmapper.insertselective (zcd); ResponseVo.SetData (ZCD); Return Responsevo; } @override public long getzcdno (문자열 gsxx01, 문자열 tablename) {map <string, object> map = new Hashmap <string, object> (); map.put ( "p_gsid", gsxx01); map.put ( "p_tblname", tablename); zcdmapper.update_djbhzt (지도); Long NewRecno = (Long) map.get ( "NewRecno"); NewRecno를 반환합니다. }} 5. 제어 계층 코드는 다음과 같습니다.
패키지 com.pcmall.controller.stock.zcd; Java.util.list 가져 오기; import javax.annotation.resource; import javax.servlet.http.httpservletrequest; import org.apache.commons.collections.collectionUtils; import org.slf4j.logger; org.slf4j.loggerfactory; org.springframework.stereotyp.controller import; org.springframework.web.bind.annotation.requestbody; org.springframework.web.bind.annotation.requestmapping; org.springframework.web.bind.annotation.requestparam; org.springframework.web.bind.annotation.responsebody; com.github.miemedev.mybatis.paginator.domain.pagebounds import; com.pcmall.common.base.basecontroller import; 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; com.pcmall.domain.sale.system.gzzqx import; import com.pcmall.domain.sale.system.gzzqxkey; com.pcmall.domain.sale.system.ryxx import; import com.pcmall.domain.sale.user.czy; import com.pcmall.domain.sale.user.user; import com.pcmall.domain.vo.responsevo; com.pcmall.service.sale.stock.istockservice 가져 오기; com.pcmall.service.sale.stock.izcdservice 가져 오기; com.pcmall.service.sale.system.igzzqxservice import; @controller @requestmapping ( "/stock/zcd") public class zcdcontroller 확장 BaseController {private static logger = loggerfactory.getLogger (zcdController.class); @Resource private izcdservice zcdserviceimpl; @Resource private istockservice stockserviceimpl; @Resource private igzzqxservice gzzqxserviceimpl; @requestmapping ( "/savezcd") @ResponseBody public responskvo savezcd (httpservletrequest request, @requestbody zcd zcd) {responsevo responsevo = new responskVo (); try {responsevo = zcdserviceimpl.savezcd (zcd, getLoginUser ()); responsevo.setSuccess (true); } catch (예외 e) {logger.error ( "", e); responsevo.setSuccess (false); responsevo.seterRormsg (! "". Equals (e.getMessage ())? e .getMessage () : "배경 예외"); } return responsevo; }} 6. 프론트 엔드 JS 계층 코드는 다음과 같습니다.
함수 save () {$ ( "#save"). addClass ( "disabled"); if ($ ( "#selshck"). val () == "") {layer.msg ( '수신 창고를 채우십시오', {icon : 5}); $ ( "#save"). removeClass ( "disabled"); 반품; } if ($ ( "#selshck"). val () == $ ( "#selfhck"). val ()) {layer.msg ( '배송 창고는 수신 창고와 동일 할 수 없다', {icon : 5}); $ ( "#save"). removeClass ( "disabled"); 반품; } var param = {}; param.bm01 = $ ( "#selbm"). att ( "valuea"); param.zcd02 = $ ( "#selfhck"). att ( "valuea"); param.zcd03 = $ ( "#selshck"). attr ( "valuea"); param.zcd04 = $ ( "#zcd04"). val (); param.gsxx01 = $ ( "#gsxx01"). val (); var zcditemary = []; var flag = 0; $ ( "#tbody1"). find ( "tr"). 각 (function () {var zcditem = {}; var arrrtd = $ (this) .children (); zcditem.spxx01 = $ .trim (arrtd.eq (0) .text ()); zcditem.wldw01 =. $ .trim (arrtd.eq (6) .text ()); 아이콘 : 5}; "#save" $ .trim (arrtd.eq (2) .Children ( ". zcdi03"). val ()); zcditem.gsxx01 = $ ( "#gsxx01". val (); if (flag == 1) {layer.msg ( 'reposses 수를 입력하십시오', {icon : 5}); $ ( "#save"). removeClass ( "disabled"); 반품; } if (zcditemary.length == 0) {layer.msg ( 'reposses의 제품 정보를 입력하십시오', {icon : 5}); $ ( "#save"). removeClass ( "disabled"); 반품; } /* else {for (var i = 0; i <zcditemary; i ++) {if (zcditemary [i] .zcdi03 == "") {layer.msg ( 'repos 번호를 입력하십시오', {icon : 5}); $ ( "#save"). removeClass ( "disabled"); 반품; }}} */$ .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 ( "#zcd05"). Layer.msg ( '창고 전송 영수증' + data.errormsg, {아이콘 : "#save"); }위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.