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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【MyBatis使用】 mapper文件未编译 + statementType使用 + 返回结果字段顺序不一致 + 获取自增ID + 一个update标签批量更新记录

發(fā)布時(shí)間:2024/10/6 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【MyBatis使用】 mapper文件未编译 + statementType使用 + 返回结果字段顺序不一致 + 获取自增ID + 一个update标签批量更新记录 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. mapper 文件未編譯

如果mapper文件未編譯,會(huì)報(bào)綁定異常。

<build><resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes><filtering>false</filtering></resource></resources> </build>

2. statementType

使用 statementType 標(biāo)記操作 SQL 的對(duì)象取值說(shuō)明。注意:如果只為STATEMENT,那么 SQL 就是直接進(jìn)行的字符串拼接,如果是字符串則需要【自行加上引號(hào)】如果為PREPARED,是使用的參數(shù)替換,也就是索引占位符, # 會(huì)轉(zhuǎn)換為 ? 再設(shè)置對(duì)應(yīng)的參數(shù)的值。

【STATEMENT】直接操作SQL,不進(jìn)行預(yù)編譯,使用($)獲取數(shù)據(jù)。

<update id="xxx" statementType="STATEMENT">update car set price=${price} where id=${id} </update>

【PREPARED】【不傳遞 statementType 值時(shí)的默認(rèn)值】預(yù)處理參數(shù),進(jìn)行預(yù)編譯,使用(#)獲取數(shù)據(jù)。

<update id="xxx" statementType="PREPARED">update car set car_number=#{carNumber} where id=#{id} </update>

【CALLABLE】執(zhí)行存儲(chǔ)過(guò)程。

<select id="xxx" statementType="CALLABLE">{call PROCEDURE_NAME()} </select>

$ 與 # 混用時(shí)會(huì)有報(bào)錯(cuò),具體原因暫未探究。

3. 返回map時(shí),key與select的字段順序不一致

將 Hashmap 換成 LinkedHashMap 即可【順序是否有意義要看業(yè)務(wù)是否需要了】

<select id="xxx" resultType="java.util.HashMap"> <select id="xxx" resultType="java.util.LinkedHashMap">

4. 獲取自增ID

我們可以自己獲取當(dāng)前的自增ID,這個(gè)顯然是有并發(fā)問(wèn)題的:

SELECTauto_increment FROMinformation_schema.`TABLES` WHEREtable_name = 'tableName' AND TABLE_SCHEMA = 'schemaName'

5. 一個(gè)update標(biāo)簽中執(zhí)行多條update語(yǔ)句

MySql默認(rèn)是不支持的,但是并不代表不能實(shí)現(xiàn),只需要在jdbc的配置文件中添加 allowMultiQueries=true 這個(gè)配置即可:

url: jdbc:mysql://localhost:3306/test?allowMultiQueries=true username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver

然后在映射文件中的標(biāo)簽下將多條sql用;隔開即可,示例代碼:

<update id="updateBatchSingle" parameterType="java.util.List"><foreach collection="list" item="item" index="index" open="" close=";" separator=";">update user<set>status = #{item.status}</set>where id = #{item.id}</foreach> </update>

總結(jié)

以上是生活随笔為你收集整理的【MyBatis使用】 mapper文件未编译 + statementType使用 + 返回结果字段顺序不一致 + 获取自增ID + 一个update标签批量更新记录的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。