mybatis常見注意事項

1.用resultType的時候,要保證結果集的列名與java對象的屬性相同,而resultMap則不用,
常用 select 列名 as 對象屬性名 .....from 表名 來轉換

2.在mybatis調用存儲過程時,傳入參數的名字能夠不用跟存儲過程定義的參數名一致
java

3.parameterType或parameterMap能夠不寫。可是須要在mapper接口中採用註解的方式將參數註解進去
eg: getDefultBankCardByMobile( @Param("mobileNo") String mobileNo) ,註解中的參數名與xml中的名字一致

4.parameterMap(經常使用於存儲過程)和resultMap相似,表示將查詢結果集中列值的類型一一映射到java對象屬性的類型上,在開發過程當中不 推薦這種方式。數據庫

5.調用存儲過程比較簡單的方式:

parameterType="java.util.Map" statementType="CALLABLE"                          
resultType="java.util.HashMap 複製代碼
6.若是是查詢,則必須有resultType或resultMap其中一個,resultType不必定非要寫 包名+類名

7.數據庫爲Date,java類型也爲Date,mybatis中的jdbcType=TIMESTAMP 時間入庫後才精確到秒
bash

8.
select 傳入類型
1.若是參數不是對象而是多個參數,須要在dao層的方法中加註解參數
2.參數爲map,直接取map的key
insert 傳入類型
1.map: insert時直接根據傳入map的key取值便可
傳出類型 通常沒有
update 傳入類型
1.String: 若是是一個參數通常不須要註解參數
傳出類型 通常不寫,默認返回int
delete 傳入類型
1.單個屬性
傳出類型 通常不寫,默認返回int

9.新增記錄返回id
mybatis

<!--新增用戶關聯帳戶信息-->
<insert id="saveLinkUserAccInfo" parameterType="linkUserAccInfo">  
<selectKey keyProperty="linkNo" resultType="String" order="BEFORE">    
   select sys_guid() from dual  
</selectKey>  
INSERT INTO LINK_USER_ACC_INFO  (LINK_NO, USER_NO)  VALUES
(#{linkNo, jdbcType=VARCHAR},#{userNo, jdbcType=VARCHAR)
</insert>                複製代碼
10.這種寫法不須要去掉AND就能夠識別 

SELECT

<include refid="accChkResultColumns"/>

FROM acc_chk_result a

<include refid="accChkResultJoins"/>
<where>
   <if test="beginTradeDay != null and endTradeDay != null and beginTradeDay != '' and endTradeDay != ''">
      AND a.work_day BETWEEN to_char(#{beginTradeDay},'yyyymmdd') AND to_char(#{endTradeDay},'yyyymmdd')
   </if>
</where>
複製代碼
11.decimal(numeric ) 同義,都有兩個參數:p(精度)和s(小數位數)

12.對oracle,使用MyBatis框架作更新操做時,若是不指定jdbcType,在該字段須要更新的內容爲空時,就會出現1111錯誤,也就是無效的列類型,這個時候你就要使用jdbcType
oracle

13.選擇性update的時候,後面的逗號要加,最後一個逗號不用刪,會自動解析

14.參數爲集合的查詢app

select*from kj_region a where  pregionid in
    <foreach item="item" index="index" collection="list" open="("separator="," close=")">           
       #{item} 
    </foreach>複製代碼
15.1個mapper方法中能夠有幾個操做,好比更新,刪除等,使用";"隔開

16.插入集合框架

<insert id="addRItem" parameterType="java.util.List"> 
   insert into lzf_rental_item_detailsl ( id, rentalInfoId,itemName, number, remark ) values 
  <foreach collection="list" item="item" index= "index" separator =","> 
   ( #{item.id}, #{item.rentalInfoId}, #{item.itemName}, #{item.number}, #{item.remark} )
  </foreach> 
</insert>複製代碼
相關文章
相關標籤/搜索