互聯網輕量級框架SSM-查缺補漏第五天
阿新 • • 發佈:2018-12-26
類型轉換器 數據庫驅動 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-查缺補漏第五天