1. 程式人生 > >mybatis的一些用法

mybatis的一些用法

1.XXXMapper.xml中:

namespace標識mapper介面的完整路徑。

resultMap標籤表示手動對映資料庫欄位和實體類屬性,resultMap中的id唯一標識該resultMap,type表示實體類的完整路徑。

insert標籤:id表示介面中的方法名,parameterType表示sql語句中的引數型別,對應實體類的完整路徑。

foreach標籤:collection表示介面方法傳入的引數,如果使用了@param去重新表示引數名,那就用註解後的名字。

if標籤:它中的test屬性的值是判斷,true就執行它的條件語句。

order by預設增序排列。

Group by的select的欄位要滿足出現在聚合函式中或者group by後。

在 SQL 中增加 HAVING 子句原因是,WHERE 關鍵字無法與聚合函式一起使用。

HAVING 子句可以讓我們篩選分組後的各組資料

 

引數parameterType:代表傳入sql語句中的引數的型別

返回型別用resultType或resultMap表示.

resultType:自動對映。前提:實體類中的屬性名要與資料庫表中的欄位名對應。

resultMap:手動對映-當實體類中的屬性名與資料庫表中的欄位名不一致時使用。

<!-- type:為實體類的類名

        id的值要與寫的sql語句中resultMap的值一致(標識這個唯一的resultMap).

        colume:資料庫中表的欄位名稱

        property:實體類中屬性的名稱

     --> <resultMap type="Orders" id="orders"> <result column="user_id" property="userId"/> </resultMap>

 

2.#{引數}:引數名稱可以任意取

注意以下區別:

 #{}: select * from user where id = ?; 佔位符時用#,此時?=='引數'

 ${}: select * form user where username like '%${引數}%'; 字串拼接時用$

使用 select * from user where username like "%"#{value}"%"防止sql注入

${}中的引數名稱必須是value.

#{}中的引數可以是型別可以是value,如#{item.name,jdbcType = String}

 

3.<!-- 新增使用者 -->

 <insert id="insertUser" parameterType="com.zrxjuly.mybatis.pojo.User">

 <!-- 要想返回給操作層主鍵值,則加selectKey.

         selectKey表示返回的主鍵,

         keyProperty:主鍵的屬性名稱,

         resultType:返回的型別,

         order:若主鍵型別為Integer型別,自增長,此時order用AFTER;

若主鍵為char/varchar型別,order用BEFORE -->

<selectKey keyProperty="id" resultType="Integer" order="AFTER">

select LAST_INSERT_ID() </selectKey>

insert into user (username,birthday,address,sex) values (#{username},#{birthday},#{address},#{sex})

</insert>

 

4.Mapper介面開發需要遵循以下規範:

    1)、Mapper.xml檔案中的namespace與mapper介面的類路徑相同。

    2)、Mapper介面方法名和Mapper.xml中定義的每個statement的id相同

    3)、Mapper介面方法的輸入引數型別和mapper.xml中定義的每個sql 的parameterType的型別相同

    4)、Mapper介面方法的輸出引數型別和mapper.xml中定義的每個sql的resultType的型別相同

 

5.標籤:

  1).<where>標籤可以去掉where語句後的第一個and。

2).提取公共sql部分,可重用
 <!-- 提取出來的sql片段,公共部分, -->

     <sql id="selectA">

             select * from user

     </sql>

     <select id="selectUser" parameterType="User" resultType="User">

             <include refid="selectA" /><!-- 此處引用了select * from user -->

      </select>

 

6.foreach標籤

如果介面傳過來的引數為Integer[]型別的,則collection="array",此時parameterType屬性去掉 如果介面傳過來的引數為List<Integer>型別的,則collection="list",此時parameterType屬性去掉

collection:maper介面傳遞過來的引數,如果介面引數列表有@param ,那麼collection就是@param註解的引數名。

item:迴圈遍歷的值

open:遍歷開始

close:遍歷結束

separator:分隔符

批量刪除使用者,當傳入的引數型別為List<類名>這樣的集合時,parameterType的值為類名。