日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

详解mybatis映射配置文件

發布時間:2023/12/20 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 详解mybatis映射配置文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一? mybatis 映射文件結構


? ? ??mybatis映射配置文件存在如下頂級元素,且這些元素按照如下順序被定義。

  • cache?– 給定命名空間的緩存配置。
  • cache-ref?– 其他命名空間緩存配置的引用。??
  • resultMap?– 是最復雜也是最強大的元素,用來描述如何從數據庫結果集中來加載對象。
  • parameterMap?– 已廢棄!老式風格的參數映射。內聯參數是首選,這個元素可能在將來被移除,這里不會記錄。
  • sql?– 可被其他語句引用的可重用語句塊。
  • insert?– 映射插入語句
  • update?– 映射更新語句
  • delete?– 映射刪除語句
  • select?– 映射查詢語句

二? mybatis映射配置文件頂級元素分析


?(一)CRUD

?在映射配置文件中,基本的CRUD操作定義如下

<!--select by id--><select id="getUserInfoById" resultType="UserInfo">SELECT user_name ,user_addr FROM user_info WHERE user_id=#{user_id}</select><!--insert--><insert id="addUserInfo" useGeneratedKeys="true">INSERT INTO user_info(user_name,user_addr)VALUES(#{user_name},#{user_addr})</insert><!--update--><update id="updateUserInfo">UPDATE user_info set user_name=#{user_name} WHERE user_id=#{user_id}</update><!--delete--><delete id="delUserInfoById">DELETE FROM user_info WHERE user_id=#{user_id}</delete>

1.#{}表示占位符,相當于?,#{}需要經過預處理,能防止SQL漏洞注入,當然,也可以使用${},只是不能防止漏洞注入。

2.select語句有很多屬性

id -- 唯一標識select語句

parameterType --參數類型

paramerterMap -- 參數映射

resultType -- 返回類型

resultMap -- 返回類型映射

flushCache -- 當語句被調用時,是否清除本地緩存或二級緩存

useCache -- 是否使用二級緩存

timeout --?在拋出異常之前,驅動程序等待數據庫返回請求結果的秒數

fetchSize -- 每次批量返回的結果行數

statementType -- 使用STATEMENT,PREPARED 或 CALLABLE 的一個

resultSetType -- 使用FORWARD_ONLY,SCROLL_SENSITIVE 或 SCROLL_INSENSITIVE 中的一個

<selectid="selectPerson"parameterType="int"parameterMap="deprecated"resultType="hashmap"resultMap="personResultMap"flushCache="false"useCache="true"timeout="10000"fetchSize="256"statementType="PREPARED"resultSetType="FORWARD_ONLY">

(二)resultType

resultType可表示返回基本類型,也可表示返回復雜對象類型(包括自定義類型)

1.返回基本類型

<select id="listUserInfo" resultType="int">SELECT userId FROM user_info </select>

2.返回復雜類型

<select id="getUserInfoById" resultType="UserInfo">SELECT user_name ,user_addr FROM user_info WHERE user_id=#{user_id} </select>

(三)resultMap

resultMap主要解決TABLE字段與JavaBean映射不匹配問題。

舉個例子:

定義一個JavaBean

public class UserInfo {String userName;String addr;//setter和getter }

SQL語句:

DROP TABLE IF EXISTS `user_info`; CREATE TABLE `user_info` (`user_id` int(5) NOT NULL AUTO_INCREMENT,`user_name` varchar(50) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,`user_addr` varchar(100) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,PRIMARY KEY (`user_id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 16 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact;SET FOREIGN_KEY_CHECKS = 1;

通過如上發現,user_name與userName不匹配,user_addr與addr不匹配。

通過resultMap就能很好地解決該問題

<resultMap id="userInfoMap" type="UserInfo"><result property="userName" column="user_name"/><result property="addr" column="user_addr"/> </resultMap>

property表示JavaBean,column表示table字段

(四)SQL

sql語句,定義可重用語句。

<sql id="userColumns"> ${alias}.id,${alias}.username,${alias}.addr </sql>

引定義好的sql

<select id="listUserInfo" resultMap="userInfoMap">SELECT<include refid="userColumns"><property name="alias" value="t1"/></include>FROM user_info t1</select>

(五)cache &cache-ref

cache和cache-ref比較重要,放在下篇文章講解。

三? ?Mybatis系列文章


? ? ?淺談JavaWeb架構演變

? ? ?淺談mybatis如何半自動化解耦

? ? ?詳解mybatis配置文件

四? 參考文獻


? ?【01】http://www.mybatis.org/mybatis-3/zh/configuration.html#

五 版權區


  • ? ?轉載博客,必須注明博客出處
  • ? ?博主網址:http://www.cnblogs.com/wangjiming/
  • ? ?如您有新想法,歡迎提出,郵箱:2098469527@qq.com

?

轉載于:https://www.cnblogs.com/wangjiming/p/10399333.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的详解mybatis映射配置文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。