您好,登錄后才能下訂單哦!
前言
單個參數(shù)
單個參數(shù)的傳參比較簡單,可以是任意形式的,比如#{a}
、#
或者#{param1},
但是為了開發(fā)規(guī)范,盡量使用和入?yún)r一樣。
Mapper如下:
UserInfo selectByUserId(String userId);
XML如下:
<select id="selectByUserId" resultType="cn.cb.demo.domain.UserInfo"> select * from user_info where user_id=#{userId} and status=1 </select>
多個參數(shù)
多個參數(shù)的情況下有很多種傳參的方式,下面一一介紹。
使用索引【不推薦】
#{param1}
對應(yīng)第一個參數(shù),#{param2}對應(yīng)第二個參數(shù).......UserInfo selectByUserIdAndStatus(String userId,Integer status);
XML如下:
<select id="selectByUserIdAndStatus" resultType="cn.cb.demo.domain.UserInfo"> select * from user_info where user_id=#{param1} and status=#{param2} </select>
注意:由于開發(fā)規(guī)范,此種方式不推薦開發(fā)中使用。
使用@Param
@Param這個注解用于指定key,一旦指定了key,在SQL中即可對應(yīng)的key入?yún)ⅰ?/p>
Mapper方法如下:
UserInfo selectByUserIdAndStatus(@Param("userId") String userId,@Param("status") Integer status);
XML如下:
<select id="selectByUserIdAndStatus" resultType="cn.cb.demo.domain.UserInfo"> select * from user_info where user_id=#{userId} and status=#{status} </select>
使用Map
Mybatis底層就是將入?yún)⑥D(zhuǎn)換成Map,入?yún)鱉ap當(dāng)然也行,此時#{key}
中的key就對應(yīng)Map中的key。
Mapper中的方法如下:
UserInfo selectByUserIdAndStatusMap(Map<String,Object> map);
XML如下:
<select id="selectByUserIdAndStatusMap" resultType="cn.cb.demo.domain.UserInfo"> select * from user_info where user_id=#{userId} and status=#{status} </select>
測試如下:
@Test void contextLoads() { Map<String,Object> map=new HashMap<>(); map.put("userId","1222"); map.put("status",1); UserInfo userInfo = userMapper.selectByUserIdAndStatusMap(map); System.out.println(userInfo); }
POJO【推薦】
多個參數(shù)可以使用實體類封裝,此時對應(yīng)的key就是屬性名稱,注意一定要有g(shù)et方法。
Mapper方法如下:
UserInfo selectByEntity(UserInfoReq userInfoReq);
XML如下:
<select id="selectByEntity" resultType="cn.cb.demo.domain.UserInfo"> select * from user_info where user_id=#{userId} and status=#{status} </select>
實體類如下:
@Data public class UserInfoReq { private String userId; private Integer status; }
List傳參
List傳參也是比較常見的,通常是SQL中的in。
Mapper方法如下:
List<UserInfo> selectList( List<String> userIds);
XML如下:
<select id="selectList" resultMap="userResultMap"> select * from user_info where status=1 and user_id in <foreach collection="list" item="item" open="(" separator="," close=")" > #{item} </foreach> </select>
數(shù)組傳參
這種方式類似List傳參,依舊使用foreach
語法。
Mapper方法如下:
List<UserInfo> selectList( String[] userIds);
XML如下:
<select id="selectList" resultMap="userResultMap"> select * from user_info where status=1 and user_id in <foreach collection="array" item="item" open="(" separator="," close=")" > #{item} </foreach> </select>
總結(jié)
到此這篇關(guān)于Mybatis的幾種傳參方式詳解的文章就介紹到這了,更多相關(guān)Mybatis傳參方式內(nèi)容請搜索億速云以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持億速云!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。