Mybatis框架中mapper配置和foreach標籤的使用
下面介紹一下一個mapper配置檔案中的foreach標籤(注意,要跟著前面的總結來看,這裡使用的例子是結合前面的工程寫的,大部分程式碼沒有再贅述)
foreach的作用是向sql傳遞陣列或List,mybatis使用foreach解析
1.1需求
在使用者查詢列表和查詢總數的statement中增加多個id輸入查詢。
sql語句如下:
兩種方法:
SELECT * FROM USER WHERE id=1 OR id=3 OR id=5
SELECT * FROM USER WHERE id IN(1,3,5)
1.2在輸入引數型別中新增List<Integer> ids傳入多個id
public class UserQueryVo {
//傳入多個id
private List<Integer> ids;
public List<Integer> getIds() {
return ids;
}
public void setIds(List<Integer> ids) {
this.ids = ids;
}
......
}
1.3修改mapper.xml
WHERE id=1 OR id=3 OR id=5
在查詢條件中,查詢條件定義成一個sql片段,需要修改sql片段。
- <prename="code"class="html">
- <!-- 定義sql片段
- id:sql片段的唯一標識
- 在sql片段中不要加入where
- 經驗:一般我們定義sql片段是為了可重用性,是基於單表來定義sql片段,
- 這樣的話這個sql片段可重用性才高-->
- <sqlid="query_user_where">
- <iftest="ids!=null">
- <!-- 使用foreach遍歷傳入ids
- collection指定輸入物件中集合屬性
- item每次遍歷生成的物件名
- open開始遍歷時要拼接的串
- close開始遍歷時要拼接的串
- separator遍歷的兩個物件中間需要拼接的串
- -->
- <!-- 使用實現下邊的sql拼接
- WHERE (id=1 OR id=3 OR id=5)-->
- <foreachcollection="ids"item="user_id"open="AND ("close=")"separator="OR">
- <!-- 每次遍歷要拼接的串 -->
- id=#{user_id}
- </foreach>
- </if>
- </sql>
- <!-- 使用者資訊綜合查詢 -->
- <selectid="findUserList"parameterType="cn.edu.hpu.mybatis.PO.UserQueryVo"
- resultType="cn.edu.hpu.mybatis.PO.UserCustom">
- select * from user
- <!-- where標籤可以自動去掉第一個and -->
- <where>
- <!-- 應用sql片段的id,如果refid指定的id不再本mapper檔案中,需要前邊加namespace -->
- <includerefid="query_user_where"></include>
- <!-- 在這裡還可能要引用其他的sql片段 -->
- </where>
- </select>
- //使用者管理的Dao介面
- publicinterface UserMapper {
- //使用者資訊綜合查詢
- public List<UserCustom> findUserList(UserQueryVo userQueryVo) throws Exception;
- ......
- }
1.4測試程式碼
- //使用者資訊綜合查詢
- @Test
- publicvoid testFindUserList() throws Exception{
- SqlSession sqlSession=sqlSessionFactory.openSession();
- //建立UserMapper代理物件
- UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
- //建立包裝物件,設定查詢條件
- UserQueryVo userQueryVo=new UserQueryVo();
- //傳入多個Id
- List<Integer> ids=new ArrayList<Integer>();
- ids.add(1);
- ids.add(3);
- ids.add(5);
- //將ids通過userQueryVo傳入statement中
- userQueryVo.setIds(ids);
- //呼叫userMapper的方法
- List<UserCustom> users=userMapper.findUserList(userQueryVo);
- for (int i = 0; i < users.size(); i++) {
- UserCustom user=(UserCustom)users.get(i);
- System.out.println(user.getId()+":"+user.getUsername());
- }
- }
測試結果:
1:張三
3:劉莉莉
5:劉三姐
日誌輸出:
- DEBUG [main] - Opening JDBC Connection
- DEBUG [main] - Created connection 6867819.
- DEBUG [main] - Setting autocommit to false on JDBC Connection [[email protected]]
- DEBUG [main] - ==> Preparing: select * from user WHERE ( id=? OR id=? OR id=? )
- DEBUG [main] - ==> Parameters: 1(Integer), 3(Integer), 5(Integer)
- DEBUG [main] - <== Total: 3
可以看到,sql語句select * from user WHERE ( id=? OR id=? OR id=? ) 通過foreach輸出成功
1.5另外一個sql的實現:
- <!-- 使用實現下邊的sql拼接
- AND ID IN(1,3,5)-->
- <foreachcollection="ids"item="user_id"open="AND ID IN("close=")"separator=",">
- <!-- 每次遍歷要拼接的串 -->
- #{user_id}
- </foreach>
相關推薦
Mybatis框架中mapper配置和foreach標籤的使用
foreach標籤下面介紹一下一個mapper配置檔案中的foreach標籤(注意,要跟著前面的總結來看,這裡使用的例子是結合前面的工程寫的,大部分程式碼沒有再贅述)foreach的作用是向sql傳遞陣列或List,mybatis使用foreach解析1.1需求在使用者查詢列
【MyBatis框架】mapper配置檔案-foreach標籤
foreach標籤下面介紹一下一個mapper配置檔案中的foreach標籤(注意,要跟著前面的總結來看,這裡使用的例子是結合前面的工程寫的,大部分程式碼沒有再贅述)foreach的作用是向sql傳遞陣列或List,mybatis使用foreach解析1.1需求在使用者查詢
MyBatis框架中Mapper映射配置的使用及原理解析(二) 配置篇 SqlSessionFactoryBuilder,XMLConfigBuilder
.cn 創建 ron 子節點 homepage 解析 調用 sco title 在 <MyBatis框架中Mapper映射配置的使用及原理解析(一) 配置與使用> 的demo中看到了SessionFactory的創建過程: SqlSessionFactory
MyBatis框架中Mapper對映配置的使用及原理
(Mapper用於對映SQL語句,可以說是MyBatis操作資料庫的核心特性之一,這裡我們討論java的MyBatis框架中Mapper對映配置的使用及原理解析,包括對mapper.xml配置檔案的讀取流程解讀) Mapper的內建方法 model層就是實體類,對應資料庫的表。controller層是Se
Mybatis框架中Mapper文件傳值參數獲取。【Mybatis】
ram keyword ddr gem cli view ati copyto one Mybatis框架中,Mapper文件參數獲取一般有以下幾種: 1、參數個數為1個(string或者int) dao層方法為以下兩種: [java] view plain
Mybatis框架中Mapper檔案傳值引數獲取。【Mybatis】
Mybatis框架中,Mapper檔案引數獲取一般有以下幾種: 1、引數個數為1個(string或者int) dao層方法為以下兩種: /** * 單個int型 */ public Lis
【MyBatis框架】mapper配置檔案-關於動態sql
動態sql 1.什麼是動態sql mybatis核心 對sql語句進行靈活操作,通過表示式進行判斷,對sql進行靈活拼接、組裝。 2.需求 使用者資訊綜合查詢列表和使用者資訊查詢列表總數這兩個statement的定義使用動態sql。 對查詢條件進行判斷,如果輸入引數不為空才
JSTL中的if和forEach標籤
if 在JSP中if 的格式: <c:if test = "" var="" scope=""> test是必要的屬性,var不是必要的屬性,scope不是必要的屬性。 但是要用var屬性的時候,scope也要連著用。 test的作用是裡面寫判斷的條件,結果反
SSM:spring+springmvc+mybatis框架中的XML配置文件功能詳細解釋
con initial -m and 整理 .get 尺寸 internal 頁面 SSM:spring+springmvc+mybatis框架中的XML配置文件功能詳細解釋 2016-04-14 23:40 13030人閱讀 評論(2) 收藏 舉報
第四課:通過配置文件獲取對象(Spring框架中的IOC和DI的底層就是基於這樣的機制)
ted const dex generate stat clas name 必須 nbsp 首先在D盤創建一個文件hero.txt,內容為:com.hero.Hero(此處必須是Hero的完整路徑) 接下來是Hero類 package com.hero; publi
mybatis框架中 #和$傳遞參數的區別 和註意
字符串 傳遞 註意 自動 nbsp val sql value bat #{}: 1、 是預編譯 2、 編譯成占位符 3、 可以防止sql註入 4、 自動判斷數據類型 5、 一個參數時,可以使用任意參數名稱進行接收 ${}: 1、 非預編譯 2、 sq
mybatis-plus中自動配置的 mapper.xml與java介面對映問題
本來沒有mybatis-plus的話,這個工作是通過mybatis-spring的MapperScan來完成的。 Mybatis-plus中的自動配置類MybatisPlusAutoConfiguration.class中有一個靜態內部類MapperScannerRegistrarN
SSM:spring+springmvc+mybatis框架中的XML配置檔案功能詳細解釋
SSM:spring+springmvc+mybatis框架中的XML配置檔案功能詳細解釋 這幾天一直在整合SSM框架,雖然網上有很多已經整合好的,但是對於裡面的配置檔案並沒有進行過多的說明,很多人知其然不知其所以然,經過幾天的搜尋和整理,今天總算對其中的XML配置檔案有了一定的瞭解,所以拿
Mybatis框架中的log4j.properties配置
使用時建立log4j.properties檔案,然後複製貼上以下內容 log4j.rootLogger=DEBUG, Console #Console log4j.appender.Console=org.apache.log4j.ConsoleAppender log4
mybatis框架之mapper的xml配置的編寫(單表)
在使用mybatis的時候,我們要用到mapper對映,也就是說,一個專案有持久層dao,業務層service,表現層contraller,現在加上一個mapper對映。在mapper中,介面要和xml配置檔名字一樣。 如: 在介面中,我們定義一些方法,這些方法在持久層dao中要用
Mybatis批量insert 返回主鍵值和foreach標籤詳解
Mybatis批量insert 返回主鍵 Mybatis從3.3.1版本開始,支援批量插入後返回主鍵ID。首先對於支援自增主鍵的資料庫使用useGenerateKeys和keyProperty,對於不支援生成自增主鍵的資料庫使用selectKey標籤。類似《MyBatis 返回insert操
spring配置mybatis自動掃描*mapper.java和*mapper.xml配置檔案
預設mybatis需要在配置檔案中載入每個mapper.xml,例如: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD
Spring Boot通過Mybatis,使用mapper介面和xml配置sql,連線資料庫
由於最早使用的是註解的方式來連線資料庫,所以比較簡單,後來發行做後臺的同事用的一般都是xml的形式,所以也跟著學習了下。發行mapper介面和xml配置sql,比較複雜,尤其是對我這種新手,研究了好久才配置成功。為了防止忘記,故寫下來,也給準備學習的人當參考
【SSM-MyBatis框架】Mapper.xml配置檔案(mybatis的核心)
Mapper.xml對映檔案中定義了操作資料庫的sql,每一個sql是一個statement,對映檔案是myBatis的核心。 1.輸入對映(ParameterType) 通過parameterType指定輸入引數的型別,型別可以是簡單型別,pojo,包裝型
mybatis框架的mapper.xml檔案中sql的使用方法:
1.<!-- 根據id查詢 --> <select id="getFileInfo" parameterType="java.lang.String" resultMap="testFileBean">select * from test_tb_info where 1=1 <i