springboot+mybatis调用oracle存储过程
1 存儲(chǔ)過(guò)程參數(shù)為VARCHAR
代碼邏輯:controller層定義實(shí)體類對(duì)象entity,并entity.set給存儲(chǔ)過(guò)程的輸入?yún)?shù)賦值,把賦值后的實(shí)體類通過(guò)service層傳到dao層,然后通過(guò)dao層調(diào)用存儲(chǔ)過(guò)程
1-1 存儲(chǔ)過(guò)程參數(shù)
IN_STR IN VARCHAR, OUT_STR OUT VARCHAR View Code1-2 controller層
@RequestMapping("/TESTPRO") @ResponseBody public String TESTPRO() {// 執(zhí)行oracle存儲(chǔ)過(guò)程// 實(shí)體類中把輸入?yún)?shù)輸出參數(shù)都寫(xiě)上//少寫(xiě)參數(shù)會(huì)報(bào)錯(cuò):(wrong number or types of arguments in call to '存儲(chǔ)過(guò)程')HelloProEntity entity = new HelloProEntity();entity.setIN_STR("1");// 配置輸入?yún)?shù)controllerService.GetTestPro(entity);// 把帶輸入?yún)?shù)的實(shí)體傳到Service層,Service層調(diào)用Dao層,Dao層尋找實(shí)體對(duì)應(yīng)的sqltry {String str = entity.getOUT_STR();return str;} catch (Exception e) {return "null";} } View Code?1-3 service層
public HelloProEntity GetTestPro(HelloProEntity testproentity) {return dao.GetTestPro(testproentity); } View Code1-4 dao層
public HelloProEntity GetTestPro(HelloProEntity testproentity); View Code1-5 實(shí)體類
public class HelloProEntity implements Serializable {private static final long serialVersionUID = -6556793741331167103L;private String IN_STR;private String OUT_STR;public String getIN_STR() {return IN_STR;}public void setIN_STR(String iN_STR) {IN_STR = iN_STR;}public String getOUT_STR() {return OUT_STR;}public void setOUT_STR(String oUT_STR) {OUT_STR = oUT_STR;}} View Code1-6 mapper
<select id="GetTestPro" parameterType="com.kh.zzkanban1.Entyties.HelloProEntity" useCache="false"statementType="CALLABLE"><![CDATA[ {call JCG_TEST(#{IN_STR,mode=IN,jdbcType=VARCHAR},#{OUT_STR,mode=OUT,jdbcType=VARCHAR})} ]]> </select> View Code?
2?存儲(chǔ)過(guò)程參數(shù)為DATE
基于第1點(diǎn)的配置,service層與dao層不需要改動(dòng),改動(dòng)controller、實(shí)體類、mapper
主要注意的是:存儲(chǔ)過(guò)程輸入?yún)?shù)輸出參數(shù)為DATE格式時(shí),mapper定義jdbcType為DATE,實(shí)體類要用Timestamp格式定義屬性,否則時(shí)分秒會(huì)變成00:00:00。
輸出得到時(shí)間戳后,再用new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(entity.getM_GROUP_END())轉(zhuǎn)成字符串格式的時(shí)間。
2-1 存儲(chǔ)過(guò)程參數(shù)
M_DATETIME IN DATE, M_SEGMENT_BEGIN OUT DATE, M_SEGMENT_END OUT DATE, M_GROUP_BEGIN OUT DATE, M_GROUP_END OUT DATE, M_SEGMENT_NO OUT INTEGER, M_GROUP_CODE OUT VARCHAR2, RES OUT VARCHAR2 View Code2-1 controller層
@RequestMapping("/GETPRO") @ResponseBody public PGetTimeSlotInfoEntity TESTPRO() throws SQLException {PGetTimeSlotInfoEntity entity = new PGetTimeSlotInfoEntity();SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String time = df.format(new Date());Timestamp ts = Timestamp.valueOf(time);//獲取當(dāng)前時(shí)間的時(shí)間戳entity.setM_DATETIME(ts);//以時(shí)間戳給輸入的DATE參數(shù)賦值 service.GetPro(entity);return entity; } View Code2-2 實(shí)體類
public class PGetTimeSlotInfoEntity implements Serializable {private static final long serialVersionUID = -6556793741331167103L;private Timestamp M_DATETIME;private Timestamp M_SEGMENT_BEGIN;// 這里不用Date,應(yīng)為傳不了時(shí)分秒private Timestamp M_SEGMENT_END;private Timestamp M_GROUP_BEGIN;private Timestamp M_GROUP_END;private String M_SEGMENT_NO;private String M_GROUP_CODE;private String RES;public Timestamp getM_DATETIME() {return M_DATETIME;}public void setM_DATETIME(Timestamp m_DATETIME) {M_DATETIME = m_DATETIME;}public Date getM_SEGMENT_BEGIN() {return M_SEGMENT_BEGIN;}public void setM_SEGMENT_BEGIN(Timestamp m_SEGMENT_BEGIN) {M_SEGMENT_BEGIN = m_SEGMENT_BEGIN;}public Date getM_SEGMENT_END() {return M_SEGMENT_END;}public void setM_SEGMENT_END(Timestamp m_SEGMENT_END) {M_SEGMENT_END = m_SEGMENT_END;}public Timestamp getM_GROUP_BEGIN() {return M_GROUP_BEGIN;}public void setM_GROUP_BEGIN(Timestamp m_GROUP_BEGIN) {M_GROUP_BEGIN = m_GROUP_BEGIN;}public Timestamp getM_GROUP_END() {return M_GROUP_END;}public void setM_GROUP_END(Timestamp m_GROUP_END) {M_GROUP_END = m_GROUP_END;}public String getM_SEGMENT_NO() {return M_SEGMENT_NO;}public void setM_SEGMENT_NO(String m_SEGMENT_NO) {M_SEGMENT_NO = m_SEGMENT_NO;}public String getM_GROUP_CODE() {return M_GROUP_CODE;}public void setM_GROUP_CODE(String m_GROUP_CODE) {M_GROUP_CODE = m_GROUP_CODE;}public String getRES() {return RES;}public void setRES(String rES) {RES = rES;}} View Code2-3 mapper
<select id="GetPro" parameterType="com.kh.zzkanban1.Entyties.PGetTimeSlotInfoEntity" useCache="false"statementType="CALLABLE"><![CDATA[ {call P_GET_TIME_SLOT_INFO(#{M_DATETIME,mode=IN,jdbcType=DATE},#{M_SEGMENT_BEGIN,mode=OUT,jdbcType=DATE},#{M_SEGMENT_END,mode=OUT,jdbcType=DATE},#{M_GROUP_BEGIN,mode=OUT,jdbcType=DATE},#{M_GROUP_END,mode=OUT,jdbcType=DATE},#{M_SEGMENT_NO,mode=OUT,jdbcType=INTEGER},#{M_GROUP_CODE,mode=OUT,jdbcType=VARCHAR},#{RES,mode=OUT,jdbcType=VARCHAR})}]]> </select> View Code?
轉(zhuǎn)載于:https://www.cnblogs.com/JICG/p/10985268.html
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的springboot+mybatis调用oracle存储过程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Git 远程仓库
- 下一篇: 深入理解Redis的持久化机制和原理