国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - mybatis多個接口參數的注解使用方式(@Param)

mybatis多個接口參數的注解使用方式(@Param)

2021-06-03 11:11阿進的寫字臺 Java教程

這篇文章主要介紹了mybatis多個接口參數的注解使用方式(@Param),小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

1 簡介

1.1 單參數

mybatis 中, 很多時候, 我們傳入接口的參數只有一個。 對應接口參數的類型有兩種, 一種是基本的參數類型, 一種是 javabean 。

例如在根據主鍵獲取對象時, 我們只需要傳入一個主鍵的參數即可。 而在插入, 更新等操作時, 一般會涉及到很多參數, 我們就使用 javabean 。

1.2 多參數

但是, 在實際的情況中, 我們遇到類似這樣的情況可能:

  1. 接口需要使用的參數多于一個;
  2. 接口需要使用的參數又遠少于對應 javabean 的成員變量, 或者需要多個 javabean 對象;
  3. 或者需要使用的參數對應 javabean 沒有相應的成員變量。

比如 獲取一段時間產生的日志信息, 日志對應的 javabean 只有一個日期, 那我們使用該 javabean 就無法滿足我們的要求。

又比如我們進行模糊搜索, 搜索條件只有兩個, 但對應的 javabean 有 50+ 個成員變量, 那創建對應的 javabean 就過于浪費了。

對此, 我知道的有如下幾種方法

2 多個接口參數的兩種使用方式

2.1 map 方法(不推薦)

map 方法的使用很簡單, 就是將對應的參數以 key-value 的方式存儲, key 對應 sql 中的參數名字, value 對應需要傳入的參數值。

以獲取一段時間內存儲的用戶為例

2.1.1 創建接口方法

?
1
2
3
4
5
6
/**
   * 獲取一段時間內的用戶
   * @param params
   * @return
   */
  list<student> selectbetweencreatedtime(map<string, object> params);

該方法返回的是多個記錄, 因此使用 list 作為返回值。

2.1.2 配置對應的sql

?
1
2
3
4
5
6
<select id="selectbetweencreatedtime" parametertype="java.util.map" resultmap="baseresultmap">
  select
  <include refid="base_column_list" />
  from student
  where gmt_created > #{btime, jdbctype=timestamp} and gmt_created < #{etime, jdbctype=timestamp}
 </select>

id 與 之前創建的方法名一樣。

2.1.3 調用

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
@test
public void testselectbtweencreatedtimemap() {
 
  map<string, object> params = new hashmap<>();
  calendar btime = calendar.getinstance();
  // month 是從0~11, 所以9月是8
  btime.set(2018, calendar.august, 29);
  params.put("btime", btime.gettime());
 
  calendar etime = calendar.getinstance();
  etime.set(2018,calendar.september,2);
  params.put("etime", etime.gettime());
  sqlsession sqlsession = null;
  try {
    sqlsession = sqlsessionfactory.opensession();
 
    studentmapper studentmapper = (studentmapper) sqlsession.getmapper(studentmapper.class);
    list<student> students = studentmapper.selectbetweencreatedtime(params);
    for (int i = 0; i < students.size(); i++) {
      system.out.println(students.get(i));
    }
  } catch (exception e) {
    e.printstacktrace();
  } finally {
    if (sqlsession != null) {
      sqlsession.close();
    }
  }
}

調用方法很簡單, 傳入相應的 map 參數即可。 此時, map 中的 key 對應。 因此, 在此例子中傳入的參數

  1. 傳入一個 key 為 btime 的時間, 作為開始時間;
  2. 傳入一個 key 為 etime 的時間, 作為結束時間;

2.2 @param 方法(推薦)

@param方法就是使用注解的方式,

2.2.1 創建接口方法

?
1
2
3
4
5
6
7
/**
 * 獲取指定時間內的對象
 * @param pbtime 開始時間
 * @param petime 結束時間
 * @return
 */
list<student> selectbetweencreatedtimeanno(@param("btime")date pbtime, @param("etime")date petime);

@param(“btime”)就是告訴 mybatis , 參數 pbtime 在 sql 語句中用 btime 作為 key 。

也就是說, mybatis 幫我們完成了調用時, 類似 params.put(“btime”, pbtime) 這個過程。

2.2.2 配置 sql 語句

?
1
2
3
4
5
6
<select id="selectbetweencreatedtimeanno" resultmap="baseresultmap">
  select
  <include refid="base_column_list" />
  from student
  where gmt_created > #{btime, jdbctype=timestamp} and gmt_created < #{etime, jdbctype=timestamp}
 </select>

此處的 btime 對應** @param(“btime”)** 中的 btime , 需要完全一致。

etime也是一樣。

2.2.3 調用

在調用時, 不需要創建 map 了, 只需要按參數提示傳入對應的實際參數即可。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
@test
public void testselectbtweencreatedtimeanno() {
 
  map<string, object> params = new hashmap<>();
  calendar btime = calendar.getinstance();
  // month 是從0~11, 所以9月是8
  btime.set(2018, calendar.august, 29);
 
 
  calendar etime = calendar.getinstance();
  etime.set(2018,calendar.september,2);
 
  sqlsession sqlsession = null;
  try {
    sqlsession = sqlsessionfactory.opensession();
 
    studentmapper studentmapper = (studentmapper) sqlsession.getmapper(studentmapper.class);
    list<student> students = studentmapper.selectbetweencreatedtimeanno(btime.gettime(), etime.gettime());
    for (int i = 0; i < students.size(); i++) {
      system.out.println(students.get(i));
    }
  } catch (exception e) {
    e.printstacktrace();
  } finally {
    if (sqlsession != null) {
      sqlsession.close();
    }
  }
 
}

3 @param 的優勢

map 方式的缺點就是需要手動創建 map , 并對 sql 中的參數進行賦值。其缺點:

  1. 手動創建 map 這個過程很不簡潔, 看著很繁瑣。
  2. 手動對參數進行賦值, 很容易出錯。 比如本來是要 params.put(“btime”, btime) 可能會不小心寫成 params.put(“bime”, btime) , 但是這個時候編譯器并不會提示。

相比于 map 方式, 使用 @param 時, 我們在使用上就像調用方法一樣, 傳入對應的實際參數即可。 調用時基本不會出錯。

4 github

相應代碼, 可以訪問 我的github-hellomybatis

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/weixin_37139197/article/details/82975594

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 国产一区二区三区四 | 亚洲久久| 亚洲精品久久久久久久久久久 | 色综合社区 | 欧美精品在线一区二区 | 久久九九99 | 欧美14一18处毛片 | 午夜精品久久久久久久久 | 精品久久久久久久久久久久 | 九色在线观看 | 激情婷婷丁香 | 毛片免费电影 | 成人在线免费观看 | 久草成人网 | 久久国产精品一区二区三区 | 欧美精三区欧美精三区 | 日韩在线精品强乱中文字幕 | 欧美在线免费观看 | 夜夜av | 国产黄色片免费观看 | 亚洲激情在线 | 最近韩国日本免费高清观看 | 国产中文字幕在线 | 九九综合 | 亚洲久久 | 日韩中文一区二区三区 | 久久精品一区二区三区四区 | 来个一级毛片 | 国产成人精品一区二区三区视频 | 中文字幕视频在线观看 | 欧美一级欧美三级在线观看 | 极品美女销魂一区二区三区 | 91福利视频免费 | 在线播放中文字幕 | 综合色爱 | 国产一区二区资源 | 国产又色又爽又黄又免费 | 最好的2019中文大全在线观看 | av天天网 | 精品一二三区 | 国产精品美女久久久久久久久久久 |