1. 程式人生 > >互聯網輕量級框架SSM-查缺補漏第五天

互聯網輕量級框架SSM-查缺補漏第五天

類型轉換器 數據庫驅動 span keys 使用 result 插入語 形參 默認值

  簡言:這個地方我就草草過了,NBA聖誕大戰,偷偷看比賽,真香~

第五章映射器

5.2select元素

  自動映射駝峰映射:MyBatis提供了自動映射功能,在默認的情況下自動映射功能是開啟的。

  在setting元素中,

  autoMappingBehavior控制自動映射,取值範圍:

  • NONE:不進行自動映射。
  • PARTIAL:默認值,只對沒有嵌套結果集進行自動映射。
  • FULL:對所有的結果集進行自動映射,包括嵌套結果集。

mapUnderscoreToCamelCase控制駝峰映射,駝峰映射是按照駝峰命名的方式自動映射,例如數據庫字段為role_name,則POJO屬性名為roleName。

  傳遞多個參數的方式:

  • 使用map接口傳遞參數。
  • 使用註解傳遞參數:在接口類方法形參前加入註解@Param("roleName")
  • 通過JavaBean傳遞參數
  • 混合使用

  resultMap映射結果集:

為了支持復雜映射,select元素提供了resultMap屬性。先定義resultMap屬性。

<resultMap type="role" id="roleMap">
    <id property="id" column="id"/>
    <result property="roleName" column="role_name"
/> </resultMap> <select id="getRole" parameterType="Long" resultMap="roleMap"> select id,role_name from t_role where id = #{id} </select>

resultMap的子元素id代表組件,而result代表其屬性,id和result元素的屬性property代表POJO的屬性名稱,而column代表SQL的列名。

  5.3insert元素

  主鍵回填,JDBC中的Statement對象在執行插入的SQL後,可以通過getGennerateKeys方法獲得數據庫生成的主鍵(需要數據庫驅動支持),還要配置其屬性keyProperty或keyColumn,告訴系統把生成的組件放入哪個屬性中。

<insert id="insertRole" parameterType="role" useGeneratedKeys="true" keyProperty="id">
    insert into t_role(role_name,note) values(#{roleName},#{note})
</insert>

  自定義主鍵:

  

<insert id="insertRole" parameterType="role" >
    <selectKey keyProperty="id" resultType="long" order="BEFORE">
           select if(max(id)=null,1,max(id)+3) from t_role
    </selectKey>
    insert into t_role(role_name,note) values(#{roleName},#{note})
</insert>

order設置為BEFORE,說明它將於當前定義的SQL前執行,這樣就可以自定義主鍵的規則了,也可以設置為AFTER這樣它就會在插入語句之後執行了。

  5.7 resultMap元素

  resultMap的作用是定義映射規則、級聯的更新、定制類型轉換器等。(有一些子元素,用到說的時候再說把)

互聯網輕量級框架SSM-查缺補漏第五天