亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

關于mapper.xml中的一點問題

為什么在 mapper java文件中的這些方法,例如updateByPrimaryKeySelective,

insertSelective

在? sql? 的 xml 中并沒有返回主鍵id,請問但是缺能接收到,請問是如何做到的?或者說哪里實現的?謝謝老師,這是我能夠提問的最后連個積分了,剩下還有問題我都放到評論區里面了,希望老師能夠回答下,不吝賜教。謝謝!

https://img1.sycdn.imooc.com//5c6903030001869e07140538.jpg

https://img1.sycdn.imooc.com//5c69030c00012e7509080458.jpg

正在回答

5 回答

為啥log.info("code={} msg={} data={} ",code,msg,data); 這句話輸出沒有一個 {} 花括號

別放在評論,不然其他想告訴你的不方便,在這個花括號是占位符,輸出是,后面的參數依次替換前面的花括號,我用的logback好像最多只能有兩個花括號(原諒我答非所問)

本問題的答案:

這個問題問的比較深,我回答不了

但是還是想跟你說下,方法的返回值跟主鍵沒有關系,增刪改返回值是影響的數據庫操作的條數數據,具體實現我解釋不了;

插入返回主鍵的id在插入數據的實體類中,不是方法的返回值,實現SQL是

SELECT @@IDENTITY ,框架具體實現我也解釋不了

希望能給你增加一點理解


0 回復 有任何疑惑可以回復我~
#1

wonderq_ubuntu 提問者

感謝,首先提問需要積分啊,我沒積分了,每天第一個提問是免費的,第二個就要收費。。 然后,如果按照你說的, 花括號是占位符的話,那么為什么 log.info("響應結果:{} ",res); 這句就能打出{} 來。 其次,因為調用的是mapper,面向接口啊,調用的方法返回了int類型,按照以往,sql.xml 是需要resultMap或者resultType來接受sql的select結果的。
2019-02-17 回復 有任何疑惑可以回復我~
#2

野生的程序猿一只 回復 wonderq_ubuntu 提問者

關于提問我誤會你了,我錯了 調用方法返回int是增刪改的默認返回值,返回值表示此次操作影響了幾條數據,比如插入一般返回1(因為增加了一條),也可以一次增加多條,刪除語句輸出了幾條就返回幾,影響的數據,更新操作也一樣,記住,增刪改默認返回int,你接口也可以寫返回void,SQL.xml默認可以不寫resultMap或者resultType,好像也可以寫resultType=int,你試試,自定義返回值類型是查詢,只有查詢
2019-02-17 回復 有任何疑惑可以回復我~
#3

wonderq_ubuntu 提問者 回復 野生的程序猿一只

嗯嗯,明白了。多謝!
2019-02-17 回復 有任何疑惑可以回復我~

1、insertxxxx調用 會返回主鍵是因為 .xml 里面配置了這個:useGeneratedKeys="true"?keyColumn="id"

2、但是要獲取主鍵,需要調用時這樣做:對象.insertxxx()之后,

對象.getId() 就是返回的主鍵;而 對象.insertxxx() 的返回值是操作數據庫后受影響的行數!

3 回復 有任何疑惑可以回復我~

回復 wonderq_ubuntu:log.info("響應結果:{} ",res);

原因可能是日志jar包要導入有問題:

<!--屬性-->

? ? ? ? <dependency>

? ? ? ? ? ? <groupId>org.projectlombok</groupId>

? ? ? ? ? ? <artifactId>lombok</artifactId>

? ? ? ? ? ? <version>1.18.4</version>

? ? ? ? </dependency>


? ? ? ? <!--日志-->

? ? ? ? <dependency>

? ? ? ? ? ? <groupId>org.slf4j</groupId>

? ? ? ? ? ? <artifactId>slf4j-api</artifactId>

? ? ? ? ? ? <version>1.7.25</version>

? ? ? ? </dependency>

? ? ? ? <dependency>

? ? ? ? ? ? <groupId>ch.qos.logback</groupId>

? ? ? ? ? ? <artifactId>logback-core</artifactId>

? ? ? ? ? ? <version>1.2.3</version>

? ? ? ? </dependency>

? ? ? ? <dependency>

? ? ? ? ? ? <groupId>ch.qos.logback</groupId>

? ? ? ? ? ? <artifactId>logback-classic</artifactId>

? ? ? ? ? ? <version>1.2.3</version>

? ? ? ? ? ? <exclusions>

? ? ? ? ? ? ? ? <exclusion>

? ? ? ? ? ? ? ? ? ? <artifactId>slf4j-api</artifactId>

? ? ? ? ? ? ? ? ? ? <groupId>org.slf4j</groupId>

? ? ? ? ? ? ? ? </exclusion>

? ? ? ? ? ? </exclusions>

? ? ? ? </dependency>

在類上使用注解:@Slf4j

就可以使用log對象了,你試試

lombok了解一下


0 回復 有任何疑惑可以回復我~
#1

wonderq_ubuntu 提問者

謝謝,lombok 了解一點,一般都是用@data和@tostring的。@slf4j 的情況下次我試試。
2019-02-17 回復 有任何疑惑可以回復我~
#2

野生的程序猿一只 回復 wonderq_ubuntu 提問者

添加注解就可以直接使用log對象,大括號占位符好像最多有兩個參數,這些問題都不大
2019-02-17 回復 有任何疑惑可以回復我~
<insert?id="add"
????????useGeneratedKeys="true"?keyColumn="id"?keyProperty="id"
????????parameterType="user">
????INSERT?INTO?`user`?(`name`,sex,register_ts)?VALUES?(#{name},#{sex},#{registerTs})???
?????<selectKey?resultType="int"?keyProperty="id"?order="AFTER">
????????SELECT?LAST_INSERT_ID()????</selectKey>
</insert>


0 回復 有任何疑惑可以回復我~
#1

wonderq_ubuntu 提問者

感覺老師的這個,沒有用這個 LAST_INSERT_ID() 為什么能拿到 id ?
2019-02-17 回復 有任何疑惑可以回復我~
#2

野生的程序猿一只 回復 wonderq_ubuntu 提問者

這顆我沒看幾節,看了再跟你說,沒有用到還有一種情況用到了插件,mybatis-plus自動封裝返回了,不知道老師用到什么插件,mybatis-plus插件非常好用
2019-02-17 回復 有任何疑惑可以回復我~
#3

野生的程序猿一只 回復 wonderq_ubuntu 提問者

推薦你用mybatis-plus
2019-02-17 回復 有任何疑惑可以回復我~
#4

wonderq_ubuntu 提問者 回復 野生的程序猿一只

好的,不過,本地用插件,上生產呢?
2019-02-17 回復 有任何疑惑可以回復我~
#5

wonderq_ubuntu 提問者 回復 野生的程序猿一只

那等你看完了再告訴我真相哈,
2019-02-17 回復 有任何疑惑可以回復我~
#6

wonderq_ubuntu 提問者 回復 野生的程序猿一只

原來你說的mybatis-plus 也是個依賴哈,懂了。。。。和lombok一樣的。
2019-02-17 回復 有任何疑惑可以回復我~
查看3條回復
插入返回主鍵是這樣寫的
<insert?id="add"
????????useGeneratedKeys="true"?keyColumn="id"?keyProperty="id"
????????parameterType="user">
????INSERT?INTO?`user`?(`name`,sex,register_ts)?VALUES?(#{name},#{sex},#{registerTs})????<selectKey?resultType="int"?keyProperty="id"?order="AFTER">
????????SELECT?LAST_INSERT_ID()????</selectKey>
</insert>


0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

關于mapper.xml中的一點問題

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號