(八)Mybatis當中#{}常用屬性的用法
這篇文章主要講述Mybatis當中#{}常用屬性的用法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
#{}佔位符的屬性
這是他的一些屬性,當然本篇文章重點講解在開發當中我們會用到的一些屬性。
javaType、 jdbcType、 mode(儲存過程)、 numericScale、
resultMap、 typeHandler、 jdbcTypeName、 expression(未來準備支援的功能);
用法#{age ,jdbcType=TINYINT ,javaType=short}
javaType
通常可以從引數物件中來去確定,這個屬性一般很少使用。
如果用的eclipse可以全域性搜ctrl+shift+t 搜尋JdbcType
這個就是xml當中傳值型別對映關係,也就是java當中的型別和jdbc的屬性關係。
jdbcType
如果用的orcle資料庫假如資料傳值為Null的時候就會報錯,這個時候可以通過設定這個來進行避免報錯。
程式碼示例:
這是一個新增返回主鍵的Orcle示例
<insert id="addEmp" databaseId="oracle">
<selectKey keyProperty="id" order="BEFORE" resultType="Integer">
select EMPLOYEES_SEQ.nextval from dual
</selectKey>
insert into employees(ID,LAST_NAME,EMAIL)
values(#{id},#{lastName},#{email})
</insert>
假如last或者email傳值為null就會報錯,報無效的列型別
原因:
當傳值為Null的時候,mybatis會自動對應jdbcType類當中的other型別,而oracle並不認識這個型別,mysql他不會報錯的。
解決方案:
當指定型別之後,他就不會去預設other型別了,這樣就可以解決傳null值報錯問題
insert into employees(ID,LAST_NAME,EMAIL)
values(#{id},#{lastName,jdbcType=NULL},#{email,jdbcType=NULL})
針對於上面的我們還得遇見null就得加那個屬性,Mybatis也給我們提供了一種全域性設定,在mybatis-config.xml新增以下配置。
<settings>
<setting name="jdbcTypeForNull" value="NULL"/>
</settings>
mode呼叫儲存過程
mode 屬性允許指定 IN,OUT 或 INOUT 引數
順便記錄一下oracle儲存過程建立吧。
儲存過程書寫要規範(IN 、OUT 引數一定要寫上,例如:V_YEAR IN INTEGER),不然JAVA呼叫有問題,拿不到儲存過程返回值
CREATE OR REPLACE PROCEDURE STATIC_DIA_QUARTER(V_YEAR IN INTEGER,
V_QUARTER IN INTEGER) IS
<select id="getAndSaveHyperReport" statementType="CALLABLE" parameterType="java.util.Map" >
{call STATIC_HYPER_QUARTER(#{year,mode=IN,jdbcType=INTEGER},#{quarter,mode=IN,jdbcType=INTEGER})}
</select>
numericScale保留小數點幾位
#{height,jdbcType=NUMERIC,numericScale=2})
相關文章
- vue中vuex的五個基本屬性和用法Vue
- html中Position屬性值介紹和position屬性四種用法HTML
- 談談ThreadStatic屬性用法thread
- React屬性用法總結React
- 字串的常用屬性和方法字串
- WebElement的常用屬性和方法Web
- CSS 常用文字屬性CSS
- css常用文字屬性CSS
- MyBatis從入門到精通(八):MyBatis動態Sql之foreach標籤的用法MyBatisSQL
- HTML 常用的標籤和屬性HTML
- 數值常用的屬性和方法
- CSS的常用屬性速查表CSS
- CSS中常用的屬性設定CSS
- 一些常用的模型屬性模型
- Laravel 5.7 模型常用屬性Laravel模型
- echarts常用屬性記錄Echarts
- CSS3常用屬性CSSS3
- tk.mybatis.mapper.MapperException: 當前實體類不包含名為的屬性!,500錯誤MyBatisAPPException
- Swift 中的屬性Swift
- Python中的屬性Python
- 04-2個常用的文字屬性
- JS常用屬性方法大全(一)JS
- Mybatis中updateByPrimaryKeySelective和updateByPrimaryKey的用法區別MyBatis
- vue.js計算屬性用法(computed)Vue.js
- 八、android當中五大布局控制元件。其它常用佈局Android控制元件
- vue.js常用屬性 es6的常用語法Vue.js
- 以太坊中的全域性屬性
- Python技術分享:ndarray物件的常用屬性Python物件
- vue學習筆記(八)---- vue中的例項屬性(wacth和computed的使用)Vue筆記
- 【第八天】Python的類與物件.屬性Python物件
- vue中的computed屬性Vue
- Spring的BeanFactoryPostProcessor中屬性SpringBean
- 內嵌標籤frameset框架屬性及用法框架
- css屬性與js中style物件的屬性對應表CSSJS物件
- 理解 Kotlin 中的屬性(property)Kotlin
- C#中屬性的解析C#
- 協議中的私有屬性協議
- python中的屬性認識Python