В структуре SSM он часто используется для вызова хранимых процедур и управления транзакциями в базе данных. Вот пример хранения определенного документа:
1. Код хранимой процедуры в Oracle заключается в следующем (основная логика автоматически добавляет 1 в кодирование документа и возвращает кодирование документа):
Создать или заменить процедуру "update_djbhzt" (p_gsid в varchar2, p_tblname in varchar2, newrecno out uper) как Begin Update bhdj set bhdj02 = bhdj02+1, где gsxx01 = p_gsid и bhdj01 = p_tblname; Если sql%rowcount = 0, то вставьте значения Bhdj (GSXX01, BHDJ01, BHDJ02) (P_GSID, P_TBLNAME, 1); конец, если; Выберите BHDJ02 в newRecno из BHDJ, где gsxx01 = p_gsid и bhdj01 = p_tblname; конец;
2. Код в Mybatis выглядит следующим образом:
<select id = "update_djbhzt" parametertype = "java.util.map" 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; Импорт com.pcmall.dao.common.basemapper; Импорт com.pcmall.domain.sale.stock.zcd; Публичный интерфейс Zcdmapper Extends baseMapper <zcd> {void update_djbhzt (map <string, object> map); } 4. Код уровня обслуживания следующим образом:
интерфейс:
пакет com.pcmall.service.sale.stock; импортировать java.util.list; Import com.github.miemedev.mybatis.paginator.domain.pagebounds; Импорт com.pcmall.domain.sale.order.hssncmmx; Import com.pcmall.domain.sale.stock.zcditem; Import com.pcmall.domain.sale.stock.zcditem; Импорт com.pcmall.domain.sale.user.user; Импорт com.pcmall.domain.vo.responsevo; Импорт com.pcmall.service.common.ibaseservice; Публичный интерфейс 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; импортировать java.util.date; импортировать java.util.hashmap; импортировать java.util.list; импортировать java.util.map; Импорт javax.annotation.resource; Импорт org.apache.axis.holders.schemaholder; Импорт org.apache.commons.collections.collectionutils; Импорт org.springframework.stereotype.service; Импорт org.springframework.transaction.annotation.transactional; Import com.github.miemedev.mybatis.paginator.domain.pagebounds; Импорт com.google.common.collect.collections2; Импорт com.pcmall.common.utils.dateutils; Import com.pcmall.dao.sale.stock.zcdmapper; import com.pcmall.dao.sale.stock.zcditemmapper; Импорт com.pcmall.domain.sale.order.hssncmmx; Import com.pcmall.domain.sale.promotion.hscxlx; Импорт com.pcmall.domain.sale.stock.zcd; Import com.pcmall.domain.sale.stock.zcditem; Импорт com.pcmall.domain.sale.stock.bo.ckspbo; Импорт com.pcmall.domain.sale.user.user; Импорт com.pcmall.domain.vo.responsevo; import com.pcmall.service.common.abstractserviceimpl; Import com.pcmall.service.sale.order.iorderservice; Импорт com.pcmall.service.sale.stock.istockservice; Import 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 (rowlbackfor = exception.class) @override public responsevo savezcd (zcd zcd, пользователь пользователь) throws exection {responsevo responsevo = new Recasonvo (); Long zcd01 = getzcdno (zcd.getgsxx01 (), "zcd"); zcd.setzcd01 (zcd01); zcd.setzcd05 (user.getryxx (). getryxx02 ()); zcd.setzcd06 (new Date ()); Дата сейчас время = новая дата (); SimpleDateFormat SDF = new SimpleDateFormat ("HHMMSSMS"); zcd.settime01 (sdf.format (сейчас время)); for (zcditem zcditem: zcd.getzcditem ()) {zcditem.setzcd01 (zcd01); zcditemmapper.insertselective (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", табличка); 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; Импорт org.apache.commons.collections.collectionutils; Импорт org.slf4j.logger; Импорт org.slf4j.loggerfactory; Import org.springframework.sterotype.controller; Импорт org.springframework.web.bind.annotation.requestbody; Импорт org.springframework.web.bind.annotation.requestmapping; Импорт org.springframework.web.bind.annotation.requestparam; Импорт org.springframework.web.bind.annotation.responsebody; Import com.github.miemedev.mybatis.paginator.domain.pagebounds; Import com.pcmall.common.base.basecontroller; Импорт com.pcmall.domain.sale.stock.zcd; Import com.pcmall.domain.sale.stock.zcditem; Import 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; Import com.pcmall.service.sale.stock.izcdservice; Import com.pcmall.service.sale.system.igzzqxservice; @Controller @RequestMapping ("/stock/zcd") открытый класс 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, @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 (): "фоновое исключение"); } return responsevo; }} 6. Код слоя JS Front-End заключается в следующем:
function save () {$ ("#save"). addclass ("disablet"); if ($ ("#selshck"). val () == "") {layer.msg ('Пожалуйста, заполните приемного склада', {icon: 5}); $ ("#save"). removeClass ("отключить"); возвращаться; } if ($ ("#selshk"). val () == $ ("#selfhck"). val ()) {layer.msg ('доставка склада не может быть таким же, как приемный склад', {icon: 5}); $ ("#save"). removeClass ("отключить"); возвращаться; } 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"). Найти ("tr"). Каждый (function () {var zcditem = {}; var arrrtd = $ (this) .children (); zcditem.spxx01 = $ .trim (arrtd.eq (0) .text (); zcditem.wldw01 = $ .trm (0). zcditem.zcdi01 = $ .trim (arrtd.eq (7) .text ()); $ ("Сохранить"). removeClass ("Отключение"); $ .trim (arrtd.eq (2). Children (". zcdi03"). val ()); zcditem.gsxx01 = $ ("#gsxx01"). val (); if (flag == 1) {layer.msg ('Пожалуйста, введите количество повторений', {icon: 5}); $ ("#save"). removeClass ("отключить"); возвращаться; } if (zcditemary.length == 0) {layer.msg ('Пожалуйста, введите информацию о продукте для повторений', {icon: 5}); $ ("#save"). removeClass ("отключить"); возвращаться; } /* else {for (var i = 0; i <zcditemary; i ++) {if (zcditemary [i] .zcdi03 == "") {layer.msg ('Пожалуйста, введите количество репо, {icon: 5}); $ ("#save"). removeClass ("отключить"); возвращаться; }}} */$. $ ("#zcd01"). Val (data.data.zcd01); Layer.msg («Не удалось сформулировать квитанцию о передаче склада ' + data.errormsg, {icon: 5}); }Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.