6、mybatis中的sql映射文件详解(1)
對于初學者,如果進行mybatis的學習呢?我總結(jié)了幾點,會慢慢的更新出來。首先大家需要了解mybatis是什么、用mybatis來做什么、為什么要用mybatis、有什么優(yōu)缺點;當知道了為什么的時候就開始了解如何用的問題,如何使用mybatis、有幾種使用方式、各種方式的優(yōu)缺點,在這個階段也會學習mybatis涉及到的一些標簽的用法;當知道了基礎(chǔ)用法之后,就開始接觸一些高級的用法,例如動態(tài)sql的使用、mybatis的緩存使用等;至此,在實戰(zhàn)項目中使用mybatis進行開發(fā)已經(jīng)沒有問題了。
接下來就開始深入的研究一下mybatis這個持久層的框架,在純技術(shù)的方面進行研究,提高自己的能力。首先,大家需要了解一下mybatis的整體技術(shù)架構(gòu)和工作原理;接下來,就開始了解一下mybatis各大核心組件的具體功能及其工作原理。至此,算是對mybatis的原理簡單的了解一下了,由于博主的能力有限,因此對于mybatis的框架技術(shù)研究也就到這里算結(jié)束了。
最后會了解一些其他的東西,例如:mybatis的逆向工程使用、如何開發(fā)一個mybatis插件,在這里會介紹一下mybatis的分頁實現(xiàn)等。
至此,mybatis也算是入門了,出去就可以和別人說,你稍微了解mybatis框架,對其也多少有一點自己的理解和看法了。
目錄
1、sql映射文件中的標簽
2、insert 標簽
3、delete 標簽
4、update 標簽
5、select 標簽
6、sql 標簽
在實際開發(fā)過程中,最多的還是使用sql映射文件和接口綁定的方式進行應(yīng)用開發(fā),對于接口而言沒有什么要介紹的,只需要記住sql映射文件中的命名空間要和綁定的接口的全路徑限定名一致即可。接下來詳細的介紹一下sql映射文件的開發(fā)。
1、sql映射文件中的標簽
sql映射文件中除去自定義的sql,主要還是一些標簽,正是通過這些標簽和對應(yīng)的標簽屬性才實現(xiàn)了自動映射,接下來詳細的說一下sql映射文件中的標簽用法
| 序號 | 標簽名 | 作用 | 
| 1 | select | 映射sql查詢語句 | 
| 2 | insert | 映射sql添加語句 | 
| 3 | update | 映射sql修改語句 | 
| 4 | delete | 映射sql刪除語句 | 
| 5 | sql | 聲明可復用的sql語句 | 
| 6 | resultMap | 自定義從數(shù)據(jù)庫結(jié)果集中加載對象的規(guī)則 | 
| 7 | cache | 設(shè)置當前sql映射文件的緩存信息 | 
| 8 | cache-ref | 應(yīng)用其他sql映射文件的緩存信息 | 
這一篇文章只介紹標簽 insert、delete、update、select、sql 的基本用法
2、insert 標簽
insert 標簽用于映射sql的新增語句,具體使用如下:
<!-- 添加一條記錄 --><insert id="insertUser">insert into oa_user (id, loginName, name) value (#{id}, #{loginName}, #{name}) </insert>上邊是一個簡單的新增記錄的例子,有時需要獲取添加后數(shù)據(jù)的id,或者是通過數(shù)據(jù)庫自增的方式添加數(shù)據(jù)時,需要返回新增數(shù)據(jù)的id,這是可以使用屬性userGeneratedKeys和keyProperty進行字段的獲取,具體使用如下:
<!-- 新增一條記錄,此時,數(shù)據(jù)的主鍵ID通過自增的方式生成,并返回ID封裝到字段 id 中--><insert id="insertUserAuto" userGeneratedKeys="true" keyProperty="id">insert into oa_user (loginName, name) value (#{loginName}, #{name}) </insert>如上這種主鍵自增的方式需要依賴于數(shù)據(jù)庫支持主鍵自增,但是有的數(shù)據(jù)庫是不支持這個特性的,例如oracle,那如何獲取增加的數(shù)據(jù)的字段呢?此時就需要借助selectKey標簽,具體使用如下:
<insert id="addUser"><!-- keyProperty: 插入的主鍵值封裝給javabean的id屬性 --><!-- resultType: 查出值的返回值類型 --><!-- order:before 是先獲取主鍵在插入,after是先插入在獲取,一般不使用after--><selectKey keyProperty="id" order="BEFORE" resultType="Integer">select user.nextval from dual </selectKey>insert into user (id,name) values (#{id},#{name}) </insert>有時候為了提高效率,需要進行批量添加,mybatis中通過拼接的方式進行實現(xiàn),具體實現(xiàn)如下:
<!-- 批量添加記錄的寫法 使用 foreach 進行批量添加語句的拼接,其中collection 是接受的數(shù)據(jù)類型, item 是迭代的每一個元素separator 是連接符 --> <insert id="insertUserList" useGeneratedKeys="true" keyProperty="id">insert into oa_user (id, loginName, name) values<foreach collection="list" item="user" separator=",">(#{user.id}, #{user.loginName}, #{user.name})</foreach> </insert>3、delete 標簽
delete 標簽用于映射sql的刪除語句,具體使用如下:
<!-- 刪除標簽的使用,通過映射刪除語句進行數(shù)據(jù)刪除 --> <delete id="delUser">delete from oa_user where id = #{id} </delete>可以看到,非常簡單,只要會寫sql語句,這個開發(fā)就沒有任何問題。
4、update 標簽
delete 標簽用于映射sql的修改語句,具體使用如下:
<update id="updateUser">update oa_user set loginName = #{loginName} where id = #{id} </update>5、select 標簽
select 標簽用于映射sql的查詢語句,具體使用如下:
<!-- 使用select標簽映射一個簡單的查詢語句 --> <select id="selectUser" resultType="com.app.mapper.User">select * from oa_user where id = #{id} </select>6、sql 標簽
sql 標簽用來定義可重用的sql映射語句,其使用方法比較簡單,只需要使用sql標簽來定義重用的sql,然后在需要用的地方通過 include 標簽引用即可,具體使用如下:
<!-- 自定義要查詢顯示的字段列表 --> <sql id="showUserCols">id , loginName, name </sql><!-- 重用 自定義的sql代碼段 showUserCols --> <select id="selectUser" resultType="com.app.mapper.User">select <include refid="showUserCols"></include>from oa_user where id = #{id} </select>上邊這是一個簡單的例子,可以為sql 段傳入?yún)?shù),具體如下:
<!-- 通過${} 來獲取傳入的數(shù)據(jù) --> <sql id="showUserCols">${show_user_cols} </sql><!-- 為sql復用段傳入 參數(shù)值 --> <select id="selectUser" resultType="com.app.mapper.User">select <include refid="showUserCols"><property name="show_user_cols" value="id, name"/></include>from oa_user where id = #{id} </select>以上便是基本開發(fā)中常用到的標簽和具體的用法介紹。
其實看到這里,對于剛開始接觸mybatis的人來說,有很多疑惑,我在最初學的時候有兩個疑惑:
1、sql 中如何接受java代碼中傳過來的參數(shù)? 也沒看到在sql映射文件中聲明和體現(xiàn)呀。
2、mybatis 是否能實現(xiàn)關(guān)聯(lián)查詢,并封裝結(jié)果集呢?
其實針對于這兩個問題就是下一篇要描述的 輸入映射和輸出映射,也就是參數(shù)的接收和結(jié)果集的映射相關(guān)問題。
總結(jié)
以上是生活随笔為你收集整理的6、mybatis中的sql映射文件详解(1)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 5、mybatis中的映射器
 - 下一篇: 手机写作与电脑写作的区别手机写作与电脑写