SSMフレームワークでは、データベース内のストアドプロシージャとトランザクションコントロールを呼び出すためによく使用されます。特定のドキュメントを保存する例は次のとおりです。
1. Oracleのストアドプロシージャコードは次のとおりです(メインロジックは自動的に1をドキュメントエンコーディングに追加し、ドキュメントエンコードを返します):
手順「update_djbhzt」(varchar2のp_gsid、varchar2のp_tblname、newrecno out number)を作成または交換します。 sql%rowcount = 0の場合、bhdj(gsxx01、bhdj01、bhdj02)値(p_gsid、p_tblname、1)に挿入します。 end if; bhdj02にbhdj02をbhdjからnewrecnoに選択します。ここで、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 = out、jdbctype = bigint})}]> </select> 3. DAOレイヤーのコードは次のとおりです。
パッケージcom.pcmall.dao.sale.stock; java.util.listをインポートします。 java.util.mapをインポートします。 com.github.miemedev.mybatis.paginator.domain.pageboundsをインポートします。 com.pcmall.dao.common.basemapperをインポートします。 com.pcmall.domain.sale.stock.zcdをインポートします。パブリックインターフェイス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をインポートします。 com.pcmall.domain.sale.order.hssncmmxをインポートします。 com.pcmall.domain.sale.stock.zcditemをインポートします。 com.pcmall.domain.sale.stock.zcditemをインポートします。 com.pcmall.domain.sale.user.userをインポートします。 com.pcmall.domain.vo.responsevoをインポートします。 com.pcmall.service.common.ibasserviceをインポートします。パブリックインターフェイスizcdservice extends ibaseservice <zcd> {long getzcdno(string gsxx01、string tablename); Responsevo SaveZCD(ZCD ZCD、ユーザーユーザー)は例外をスローします。 }実装クラス:
パッケージcom.pcmall.service.sale.stock.impl; java.text.simpledateformatをインポートします。 java.util.arraylistをインポートします。 Import Java.util.date; java.util.hashmapをインポートします。 java.util.listをインポートします。 java.util.mapをインポートします。 javax.annotation.resourceをインポートします。 Import org.apache.axis.holders.schemaholder; Import org.apache.commons.collections.collectionutils; org.springframework.stereotype.serviceをインポートします。 Import org.springframework.transaction.annotation.transactional; com.github.miemedev.mybatis.paginator.domain.pageboundsをインポートします。 com.google.common.collect.collections2をインポートします。 com.pcmall.common.utils.dateutilsをインポートします。 com.pcmall.dao.sale.stock.zcdmapperをインポートします。 com.pcmall.dao.sale.stock.zcditemmapperをインポートします。 com.pcmall.domain.sale.order.hssncmmxをインポートします。 com.pcmall.domain.sale.promotion.hscxlxをインポートします。 com.pcmall.domain.sale.stock.zcdをインポートします。 com.pcmall.domain.sale.stock.zcditemをインポートします。 com.pcmall.domain.sale.stock.bo.ckspboをインポートします。 com.pcmall.domain.sale.user.userをインポートします。 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拡張AbstractServiceImpl <ZCD> 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)slows exception {responsevo responsevo = new Responsevo(); long zcd01 = getzcdno(zcd.getgsxx01()、 "zcd"); ZCD.SETZCD01(ZCD01); zcd.setzcd05(user.getryxx()。getryxx02()); zcd.setzcd06(new Date());日付nowtime = new date(); SimpleDateFormat sdf = new simpledateFormat( "hhmmssms"); zcd.settime01(sdf.format(nowtime)); for(zcditem zcditem:zcd.getzcditem()){zcditem.setzcd01(zcd01); zcditemmapper.insertseective(zcd); } 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"); NewRecnoを返します。 }} 5.制御層コードは次のとおりです。
パッケージcom.pcmall.controller.stock.zcd; java.util.listをインポートします。 javax.annotation.resourceをインポートします。 javax.servlet.http.httpservletrequestをインポートします。 Import org.apache.commons.collections.collectionutils; org.slf4j.loggerをインポートします。 org.slf4j.loggeractoryをインポートします。 org.springframework.stereotype.controllerをインポートします。 org.springframework.web.bind.annotation.requestbodyをインポートします。 org.springframework.web.bind.annotation.requestmappingをインポートします。 Import org.springframework.web.bind.annotation.RequestParam; Import org.springframework.web.bind.annotation.responsebody; com.github.miemedev.mybatis.paginator.domain.pageboundsをインポートします。 com.pcmall.common.base.basecontrollerをインポートします。 com.pcmall.domain.sale.stock.zcdをインポートします。 com.pcmall.domain.sale.stock.zcditemをインポートします。 com.pcmall.domain.sale.stock.bo.ckspdetailboをインポートします。 com.pcmall.domain.sale.stock.bo.zcdboをインポートします。 com.pcmall.domain.sale.system.gzzqxをインポートします。 com.pcmall.domain.sale.system.gzzqxkeyをインポートします。 com.pcmall.domain.sale.system.ryxxをインポートします。 com.pcmall.domain.sale.user.czyをインポートします。 com.pcmall.domain.sale.user.userをインポートします。 com.pcmall.domain.vo.responsevoをインポートします。 com.pcmall.service.sale.stock.istockserviceをインポートします。 com.pcmall.service.sale.stock.izcdserviceをインポートします。 com.pcmall.service.sale.system.igzzqxserviceをインポートします。 @Controller @RequestMapping( "/stock/zcd")パブリッククラスzcdcontroller拡張basecontroller {private static logger logger = loggerfactory.getlogger(zcdcontroller.class); @Resourceプライベートizcdservice zcdserviceimpl; @resource private istockservice stockserviceimpl; @Resourceプライベート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(): "バックグラウンド例外"); } RESPONSEVOを返します。 }} 6.フロントエンドJSレイヤーコードは次のとおりです。
function 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")。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")。各(function(){var zcditem = {}; var arrrtd = $(this).children(); zcditem.spxx01 = $ .trim(arrtd.eq(0).text()); zcditem.wldw01 = $ .trim(arrtd.eq(6).text());アイコン:5}) $ .trim(arrtd.eq(2)。 zcditem.gsxx01 = $( "#gsxx01")。 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"、タイプ: "post"、datatype: "json"、success(data){if(data.success){if(success){ $(Zcd01 ")。 layer.msg( '倉庫転送領収書' + data.errormsg、{#5}); }上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。