Na estrutura do SSM, é frequentemente usado para chamar procedimentos armazenados e controle de transações no banco de dados. Aqui está um exemplo de armazenar um determinado documento:
1. O código do procedimento armazenado no Oracle é o seguinte (a lógica principal adiciona automaticamente 1 ao documento que codifica e retorna a codificação do documento):
Crie ou substitua o procedimento "update_djbhzt" (p_gsid em varchar2, p_tblname em varchar2, newrecno out número) como iniciar a atualização bhdj set bhdj02 = bhdj02+1 onde gsxx01 = p_gsid e bhdj01 = p_tblam; Se sql%rowcount = 0, insira os valores bhdj (gsxx01, bhdj01, bhdj02) (p_gsid, p_tblname, 1); fim if; Selecione BHDJ02 em Newrecno em Bhdj, onde GSXX01 = P_GSID e BHDJ01 = p_tblname; fim;
2. O código em mybatis é o seguinte:
<select id = "update_djbhzt" parametertype = "java.util.map" declarationType = "Callable"> <! [CDATA [{Call Update_djbhzt (#{p_gsid, mode = in, jdbctype = varchar},#{p_tblname, mode = in, jdbctype = varchar},#{newrecno, mode = out, jdbctype = bigint})}] 3. O código da camada DAO é o seguinte:
pacote com.pcmall.dao.sale.stock; importar java.util.list; importar java.util.map; importar com.github.miemedev.mybatis.paginator.domain.pageBounds; importar com.pcmall.dao.common.basemapper; importar com.pcmall.domain.sale.stock.zcd; interface pública zcdmapper estende basemapper <nccd> {void update_djbhzt (map <string, object> map); } 4. O código da camada de serviço é o seguinte:
interface:
pacote com.pcmall.service.sale.stock; importar java.util.list; importar com.github.miemedev.mybatis.paginator.domain.pageBounds; importar com.pcmall.domain.sale.order.hssncmmx; importar com.pcmall.domain.sale.stock.zcditem; importar com.pcmall.domain.sale.stock.zcditem; importar com.pcmall.Domain.Sale.User.User; importar com.pcmall.Domain.vo.Responsevo; importar com.pcmall.service.common.ibaseService; interface pública izcdService estende ibaseService <s zcd> {long getzcdno (string gsxx01, string tableName); ResponseVo SaveZCD (ZCD ZCD, usuário do usuário) lança exceção; } Classe de implementação:
pacote com.pcmall.service.sale.stock.impl; importar java.text.simpledateFormat; importar java.util.arraylist; importar java.util.date; importar java.util.hashmap; importar java.util.list; importar java.util.map; importar javax.annotation.resource; importar org.apache.axis.holders.schemaholder; importar org.apache.commons.collections.collectionUtils; importar org.springframework.tereotype.service; importar org.springframework.transaction.annotation.transaction; importar com.github.miemedev.mybatis.paginator.domain.pageBounds; importar com.google.common.collect.collections2; importar com.pcmall.common.utils.dateutils; importar com.pcmall.dao.sale.stock.zcdmapper; importar com.pcmall.dao.sale.stock.zcditemmapper; importar com.pcmall.domain.sale.order.hssncmmx; importar com.pcmall.domain.sale.promotion.hscxlx; importar com.pcmall.domain.sale.stock.zcd; importar com.pcmall.domain.sale.stock.zcditem; importar com.pcmall.domain.sale.stock.bo.ckspbo; importar com.pcmall.Domain.Sale.User.User; importar com.pcmall.Domain.vo.Responsevo; importar com.pcmall.service.common.abstractServiceImpl; importar com.pcmall.service.sale.order.iorService; importar com.pcmall.service.sale.stock.istockservice; importar com.pcmall.service.sale.stock.izcdService; @Service Public Class ZcdServiceImpl estende abstractServiceImpl <ZCD> implementa izcdService {@Resource Private ZCDmapper ZCDmapper; @Resource Private Zcditemmapper zcditemmapper; @Resource Private IstockService StockServiceImpl; @Transactional (rollbackfor = excepcion.class) @Override public ResponseVo SaveZCD (ZCD ZCD, usuário do usuário) lança exceção {ResponseVo ResponseVo = new ResponseVo (); LONG ZCD01 = getzcdno (zcd.getgsxx01 (), "zcd"); zcd.setzcd01 (ZCD01); zcd.setzcd05 (user.getRyxx (). getRyxx02 ()); zcd.setzcd06 (new Date ()); Data nowTime = new Date (); 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); REPORTIVO DE REPORTIÇÃO; } @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 (mapa); Longo Newrecno = (Long) map.get ("newrecno"); retornar newrecno; }} 5. O código da camada de controle é o seguinte:
pacote com.pcmall.controller.stock.zcd; importar java.util.list; importar javax.annotation.resource; importar javax.servlet.http.httpServletRequest; importar org.apache.commons.collections.collectionUtils; importar org.slf4j.logger; importar org.slf4j.loggerFactory; importar org.springframework.tereotype.controller; importar org.springframework.web.bind.annotation.requestbody; importar org.springframework.web.bind.annotation.requestmapping; importar org.springframework.web.bind.annotation.requestparam; importar org.springframework.web.bind.annotation.ResponseBody; importar com.github.miemedev.mybatis.paginator.domain.pageBounds; importar com.pcmall.common.base.baseController; importar com.pcmall.domain.sale.stock.zcd; importar com.pcmall.domain.sale.stock.zcditem; importar com.pcmall.domain.sale.stock.bo.ckspdetailbo; importar com.pcmall.domain.sale.stock.bo.zcdbo; importar com.pcmall.domain.sale.system.gzzqx; importar com.pcmall.domain.sale.system.gzzqxkey; importar com.pcmall.domain.sale.system.ryxx; importar com.pcmall.domain.sale.user.czy; importar com.pcmall.Domain.Sale.User.User; importar com.pcmall.Domain.vo.Responsevo; importar com.pcmall.service.sale.stock.istockservice; importar com.pcmall.service.sale.stock.izcdService; importar com.pcmall.service.sale.system.igzzqxservice; @Controller @RequestMapping ("/stock/zcd") classe pública zcdcontroller estende 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 (solicitação httpServletRequest, @RequestBody ZCD ZCD) {ResponseVo ResponseVo = new ResponseVo (); tente {ResponseVo = zCdServiceImpl.Savezcd (ZCD, getLoginUser ()); ResponseVo.SetSuccess (true); } catch (Exceção e) {Logger.error ("", e); ResponseVo.SetSuccess (false); ResponseVo.SterRormSg (! "". Equals (E.GetMessage ())? E .getMessage (): "Exceção de fundo"); } retornar a respostaVO; }} 6. O código da camada JS front-end é o seguinte:
function save () {$ ("#save"). addclass ("desativado"); if ($ ("#SELSHCK"). $ ("#salvar"). removeclass ("desativado"); retornar; } if ($ ("#selshck"). val () == $ ("#selfhck"). $ ("#salvar"). removeclass ("desativado"); retornar; } var param = {}; param.bm01 = $ ("#selbm"). att ("valuea"); param.zcd02 = $ ("#selfhck"). att ("valuea"); param.zcd03 = $ ("#selshck"). att ("valuea"); param.zcd04 = $ ("#zcd04"). val (); param.gsxx01 = $ ("#gsxx01"). val (); var zcditemary = []; VAR Flag = 0; $ ("#tbody1"). encontre ("tr"). cada (function () {var zcditem = {}; var Arrrtd = $ (this) .children (); zcditem.spxx01 = $ .Trim (Arrtd.eq (0) .Text. $ .TRIM (arrtd.eq (6) .text ()); Ícone: 5}); .TRTD.EQ (2) .Children (". Zcdi03"). Val ()); zcditem.gsxx01 = $ ("#gsxx01"). val (); if (sinalizador == 1) {Layer.msg ('Por favor, digite o número de reposições', {icon: 5}); $ ("#salvar"). removeclass ("desativado"); retornar; } if (zcditemary.length == 0) {Layer.msg ('Por favor, insira as informações do produto para recuperar', {icon: 5}); $ ("#salvar"). removeclass ("desativado"); retornar; } /* else {for (var i = 0; i <zcditemary; i ++) {if (zcditemary [i] .zcdi03 == "") {layer.msg ('por favor digite o número de repositórios', {icon: 5}); $ ("#salvar"). removeclass ("desativado"); retornar; }}} */$ .ajax ({url: "$ {ctx}/stock/zcd/savezcd", dados: $ .json.decode (param), contentType: "Application/json", type: "post", datatype: "json", sucesso: function (dados) {se (se $ ("#zcd01"). Layer.MSG ('Falha ao formular o recibo de transferência de armazém' + Data.erRormsg, {Icon: 5}); }O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.