最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解MyBatis 常用寫法

 更新時間:2018年11月22日 11:27:59   作者:ZT1994  
MyBatis 是一款優(yōu)秀的持久層框架,它支持定制化 SQL、存儲過程以及高級映射。這篇文章給大家介紹了MyBatis 常用寫法,感興趣的朋友跟隨小編一起看看吧

什么是 MyBatis ?

MyBatis 是一款優(yōu)秀的持久層框架,它支持定制化 SQL、存儲過程以及高級映射。MyBatis 避免了幾乎所有的 JDBC 代碼和手動設置參數以及獲取結果集。MyBatis 可以使用簡單的 XML 或注解來配置和映射原生信息,將接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java對象)映射成數據庫中的記錄。

1、forEach 循環(huán)

  forEach 元素的屬性主要有 item, idnex, collection, open, separator, close。

1.collection:傳入的 List 或 Array 或自己封裝的 Map。
2.item:集合中元素迭代時的別名。
3.idnex:集合中元素迭代是的索引。
4.open:where 后面表示以什么開始,如以‘('開始。
5.separator:表示在每次進行迭代是的分隔符。
6.close:where后面表示以什么結束,如以‘)'結束。

//mapper中需要傳遞一個容器
public List<User> queryByIdList(List<Integer> userIdList);

<select id="queryByIdList" resultMap="BaseResultMap" parameterType="map">
  SELECT * FROM user
  WHERE userId IN
  <foreach collection="userIdList" item="id" index="index" open="(" close=")" separator=",">
    #{id}
  </foreach>
</select>

 

2、concat 模糊查詢

//模糊查詢使用concat拼接sql
<select id="queryByName" resultMap="BaseResultMap" paramterType"string">
  SELECT * FROM user
  <where>
    <if test="name != null">
      name like concat('%', concat(#{name}, '%'))
    </if>
  </where>
</select>

3、if + where 標簽

用 if 標簽判斷參數是否有效來進行條件查詢。

<select id="getUserList" resultMap="BaseResultMap" paramterType="com.demo.User">
  SELECT * FROM user
  <where>
    <if test="userId !=null and userId!= ''">
      userId= #{userId}
    </if>
    <if test="name !=null and name!= ''">
      AND name= #{name}
    </if>
    <if phone="userId !=null and phone!= ''">
      AND phone= #{phone}
    </if>
  </where>
</select>

where 動態(tài)語句中,where 標簽會自動去掉 AND 或 OR。防止 WHERE AND 錯誤。

4、if + set

使用 set 標簽可以動態(tài)的配置 SET 關鍵字,使用 if + set 標簽,如果某項為 null 則不進行更新。

<update id="updateUser" paramterType="com.demo.User">
    UPDATE user
    <set>
        <if test=" name != null and name != ''">
            name = #{name},
        </if>
        <if test=" phone != null and phone != ''">
            phone = #{phone},
        </if>
    </set>
    WHERE userId = #{userId}
</update>

5、if + trim 代替 where/set 標簽

  trim 可以更靈活的去處多余關鍵字的標簽,可以實現(xiàn) where 和 set 的效果。

<select id="getUserList" resultMap="BaseResultMap" paramterType="com.demo.User">
  SELECT * FROM user
  <trim prefix="WHERE" prefixOverrides="AND|OR">
    <if test="userId !=null and userId!= ''">
      userId= #{userId}
    </if>
    <if test="name !=null and name!= ''">
      AND name= #{name}
    </if>
    <if phone="userId !=null and phone!= ''">
      AND phone= #{phone}
    </if>
  </trim>
</select>

<update id="updateUser" paramterType="com.demo.User">
  UPDATE user
  <trim prefix="SET" suffixOverrides=",">
    <if test=" name != null and name != ''">
      name = #{name},
    </if>
    <if test=" phone != null and phone != ''">
      phone = #{phone},
    </if>
  </trim>
  WHERE userId = #{userId}
</update>

5、choose(when, otherwise)標簽

  choose 標簽是按順序判斷其內部 when 標簽中的 test 條件是否成立,如果有一個成立,則 choose 結束。當 choose 中所有 when 的條件都不滿足,則執(zhí)行 otherwise 中的 sql。類似 java 中的 switch 語句,choose 為 switch,when 為 case,otherwise 則為 default。

<select id="selectCustomerByCustNameAndType" parameterType="map" resultMap="BaseResultMap">
  SELECT * FROM user
  <choose>
    <when test="Utype == 'name'">
      WHERE name = #{name} 
    </when>
    <when test="Utype == 'phone'">
      WHERE phone= #{phone}
    </when>
    <when test="Utype == 'email'">
      WHERE email= #{email}
    </when>
    <otherwise>
      WHERE name = #{name}
    </otherwise>
  </choose>
</select>

總結

以上所述是小編給大家介紹的MyBatis 常用寫法 ,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

相關文章

  • shiro多驗證登錄代碼實例及問題解決

    shiro多驗證登錄代碼實例及問題解決

    這篇文章主要介紹了shiro多驗證登錄代碼實例及問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • Java數據導出功能之導出Excel文件實例

    Java數據導出功能之導出Excel文件實例

    這篇文章主要介紹了Java數據導出功能之導出Excel文件實例,本文給出了jar包的下載地址,并給出了導出Excel文件代碼實例,需要的朋友可以參考下
    2015-06-06
  • SpringBoot?自定義注解之脫敏注解詳解

    SpringBoot?自定義注解之脫敏注解詳解

    這篇文章主要介紹了SpringBoot?自定義注解之脫敏注解詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • java:?無效的目標發(fā)行版:?20問題解決辦法

    java:?無效的目標發(fā)行版:?20問題解決辦法

    這篇文章主要給大家介紹了關于java:?無效的目標發(fā)行版:?20問題的解決辦法,出現(xiàn)這個問題大多數是因為自己安裝的jdk版本和你在運行項目時的所選的jdk版本不一致所導致的,需要的朋友可以參考下
    2024-03-03
  • springboot實現(xiàn)防重復提交和防重復點擊的示例

    springboot實現(xiàn)防重復提交和防重復點擊的示例

    這篇文章主要介紹了springboot實現(xiàn)防重復提交和防重復點擊的示例,幫助大家更好的理解和學習springboot框架,感興趣的朋友可以了解下
    2020-09-09
  • Java異常日志堆棧丟失的原因與排查

    Java異常日志堆棧丟失的原因與排查

    這篇文章主要給大家介紹了關于Java異常日志堆棧丟失的原因與排查的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • java8到java15的新功能簡介

    java8到java15的新功能簡介

    這篇文章主要介紹了java8到java15的新功能的相關資料,幫助大家更好的理解和學習Java,感興趣的朋友可以了解下
    2020-12-12
  • Java面向接口編程之簡單工廠模式示例

    Java面向接口編程之簡單工廠模式示例

    這篇文章主要介紹了Java面向接口編程之簡單工廠模式,結合實例形式詳細分析了java面向接口編程簡單工廠模式的具體定義與使用方法,需要的朋友可以參考下
    2019-09-09
  • java自定義枚舉轉換器示例

    java自定義枚舉轉換器示例

    這篇文章主要介紹了java自定義枚舉轉換器示例,需要的朋友可以參考下
    2014-05-05
  • Java 讀取excel 文件流代碼實例

    Java 讀取excel 文件流代碼實例

    這篇文章主要介紹了Java 讀取excel 文件流代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09

最新評論

新民市| 南华县| 寿阳县| 星子县| 威信县| 高台县| 太白县| 漳浦县| 静宁县| 江川县| 遵化市| 休宁县| 澎湖县| 昆山市| 易门县| 邯郸市| 瓦房店市| 上林县| 鄂伦春自治旗| 海阳市| 望江县| 南丰县| 攀枝花市| 汾西县| 阿拉善右旗| 肇东市| 邹平县| 五华县| 分宜县| 揭东县| 宜宾市| 岑溪市| 旺苍县| 华阴市| 邹城市| 木里| 新野县| 凤庆县| 山丹县| 双江| 福安市|