En el marco SSM, a menudo se usa para llamar a procedimientos almacenados y control de transacciones en la base de datos. Aquí hay un ejemplo de almacenar un determinado documento:
1. El código de procedimiento almacenado en Oracle es el siguiente (la lógica principal agrega automáticamente 1 al documento que codifica y devuelve la codificación del documento):
Cree o reemplace el procedimiento "update_djbhzt" (p_gsid en varchar2, p_tblname en varchar2, newRECNO OUT Number) como comience la actualización BHDJ SET BHDJ02 = BHDJ02+1 DONDE GSXX01 = P_GSID y BHDJ01 = P_TBLNAME; Si SQL%RowCount = 0 luego inserte en valores BHDJ (GSXX01, BHDJ01, BHDJ02) (P_GSID, P_TBLNAME, 1); fin si; Seleccione BHDJ02 en NewRecno de Bhdj donde gsxx01 = p_gsid y bhdj01 = p_tblname; fin;
2. El código en MyBatis es el siguiente:
<select id = "update_djbhzt" parametertype = "java.util.map" DeclaryPe = "Callable"> <! [Cdata [{call Update_djbhzt (#{p_gsid, mode = in, jdbctype = varchar},#{p_tblname, mode = in, jdbctype = varchar},#{newRECNO, mode = out, jdbctype = bigint})}]>]> </select> 3. El código de la capa DAO es el siguiente:
paquete com.pcmall.dao.sale.stock; import java.util.list; import java.util.map; import com.github.miemedev.mybatis.paginator.domain.pageBounds; import com.pcmall.dao.common.basemapper; import com.pcmall.domain.sale.stock.zcd; Interfaz pública ZCDMapper extiende BaseMapper <Zcd> {void update_djbhzt (map <string, objeto> map); } 4. El código de la capa de servicio es el siguiente:
interfaz:
paquete com.pcmall.service.sale.stock; import java.util.list; import com.github.miemedev.mybatis.paginator.domain.pageBounds; 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; import com.pcmall.service.common.ibasservice; interfaz pública IzcdService extiende iBasesService <zcd> {long getzcdno (string gsxx01, string tableName); ResponseVo SaveZCD (ZCD ZCD, usuario del usuario) lanza una excepción; } Clase de implementación:
paquete 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; importar org.apache.axis.holders.schemaholder; importar org.apache.commons.collections.CollectionUtils; importar org.springframework.stereotype.service; importar org.springframework.transaction.annotation.transactional; import com.github.miemedev.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.iorservice; import com.pcmall.service.sale.stock.istockservice; import com.pcmall.service.sale.stock.izcdservice; @Service Public Class ZCDServiceImpl extiende AbstractServiceImpl <Zcd> Implementa IZCDService {@Resource private ZCDMapper ZCDMapper; @Resource Private ZCDITemMapper ZcDitemMapper; @Resource private istockservice stockserviceImpl; @TransActional (Rollbackfor = Exception.Class) @Override Public ResponseVo SaveZCD (ZCD ZCD, usuario de usuario) lanza Exception {ResponseVo ResponseVo = new ResponseVo (); Long zcd01 = getzcdno (zcd.getgsxx01 (), "zcd"); ZCD.SetZCD01 (ZCD01); zcd.setzcd05 (user.getRyxx (). getRyxx02 ()); zcd.setzcd06 (nueva fecha ()); Fecha ahora tiempo = nueva fecha (); SimpleDateFormat sdf = new SimpleDateFormat ("HHMMSSMS"); zcd.settime01 (sdf.format (ahora tiempo)); para (zcDitem ZcDitem: zcd.getzcditem ()) {zcditem.setzcd01 (zcd01); ZCDITEMMAPPER.InsertSelective (ZCD); } zcdmapper.insertselective (ZCD); ResponseVo.SetData (ZCD); devolver la respuestavo; } @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"); devolver newrecno; }} 5. El código de la capa de control es el siguiente:
paquete com.pcmall.controller.stock.zcd; import java.util.list; import javax.annotation.resource; import javax.servlet.http.httpservletRequest; importar org.apache.commons.collections.CollectionUtils; importar org.slf4j.logger; importar org.slf4j.loggerFactory; importar org.springframework.stereotype.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; import com.github.miemedev.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 extiende BaseController {private static logger = loggerFactory.getLogger (zcdcontroller.class); @Resource private izcdservice zcdServiceImpl; @Resource private istockservice stockserviceImpl; @Resource IgzzQXService GZZQXServiceImpl; @RequestMapping ("/SaveZCD") @ResponseBody Public ResponseVo SaveZCD (HTTPServletRequest solicitud, @RequestBody ZCD ZCD) {ResponseVo ResponseVo = new ResponseVo (); Pruebe {ResponseVO = ZCDServiceImpl.SavezCD (ZCD, getLoginUser ()); Responsevo.setsuccess (verdadero); } catch (excepción e) {logger.error ("", e); ResponseVo.SetSuccess (falso); Responsevo.setErrormsg (! "". Equals (E.getMessage ())? E .getMessage (): "Excepción de fondo"); } return responseVo; }} 6. El código de capa JS front-end es el siguiente:
function save () {$ ("#save"). addClass ("discapacitado"); if ($ ("#selshck"). val () == "") {layer.msg ('Por favor, complete el almacén receptor', {icon: 5}); $ ("#Save"). RemoveClass ("Discapaced"); devolver; } if ($ ("#selshck"). val () == $ ("#selfhck"). val ()) {layer.msg ('El almacén de envío no puede ser el mismo que el almacén receptor', {icon: 5}); $ ("#Save"). RemoveClass ("Discapaced"); devolver; } 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 = []; varilla var = 0; $ ("#tbody1"). find ("tr"). Cada (function () {var zcditem = {}; var arrrtd = $ (this) .children (); zcditem.spxx01 = $ .trim (arrtd.eq (0) .text ()); zcditem.wldw01 = $ .trim (arrtd.eq (6) .Text ()); icono: 5}); $ .trim (arrtd.eq (2) .children (". zcdi03"). val ()); zcditem.gsxx01 = $ ("#gsxx01"). Val (); if (flag == 1) {layer.msg ('Por favor ingrese el número de reembolsos', {icon: 5}); $ ("#Save"). RemoveClass ("Discapaced"); devolver; } if (zcDitemary.length == 0) {layer.msg ('Ingrese la información del producto para reembolsas', {icon: 5}); $ ("#Save"). RemoveClass ("Discapaced"); devolver; } /* else {for (var i = 0; i <zcditemary; i ++) {if (zcDitemary [i] .zcdi03 == "") {layer.msg ('Ingrese el número de repos', {icon: 5}); $ ("#Save"). RemoveClass ("Discapaced"); devolver; }}} */$ .AJAX ({url: "$ {ctx}/stock/zcd/savzcd", data: $ .json.decode (param), contentType: "application/json", type: "post", dataType: "json", éxito: function (data) {if (data.sucess) { $ ("#ZCD01"). Val (data.data.zcd01); Layer.msg ('Falling to Formule Warehouse Transfer recibo' + data.errormsg, {icon: 5}); }Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.