mybatis注入list,以及mapper和xml參數映射需要注意的

我習慣使用@Param註解在mapper方法中修改參數映射名稱;
而在查詢之後的結果,用sql 別名的形式來代替繁瑣的@ResultMap註解;

但是經常用@Param註解,會導致我習慣寫mapper.xml時,裏面的注入參數名稱和外部的mapper接口的參數名稱不一致。

如果參數都在mapper的方法中都還好。但是如果遇到插入字段較多,要使用po對象來承載需要insert的內容的時候,就出現麻煩事了,@Param註解是不能在類對象的屬性中使用的!所以儘量少使用@Param註解,在sql 中寫#{}注入參數名的時候,就把參數名正確對應,只在注入List的時候必須使用@Param註解的時候才使用。

注入list時

mapper中

List<SuperVo> getSuperList(@Param("superIdList") List<Integer> superIdList);

xml中

<select id="getSuperList" resultType="edu.files.archives_manage_platform.pojo.SuperVo">
        select id,
        super_name 'superName',
        super_password 'superPassword'
        from t_super
        where id in
        <foreach item="item" index="index" collection="superIdList"
                 open="(" separator="," close=")">
            #{item}
        </foreach>
    </select>

注入多個參數時(含list)

mapper 和 po

// 以下1和2均可
// 1
List<SuperVo> getSuperList(String superName, @Param("superIdList") List<Integer> superIdList);

// 2
List<SuperVo> getSuperList(TestPo testPo);
@Data
public class TestPo {
    private String superName;
    private List<Integer> superIdList;
}

xml

<select id="getSuperList" resultType="edu.files.archives_manage_platform.pojo.SuperVo">
    select id,
    super_name 'superName',
    super_password 'superPassword'
    from t_super
    <!-- 嗨呀,某些蠢逼很久沒寫了,居然寫成了字符串拼接: '%'+#{superName}+'%'真是腦殼大 -->
    <!-- 
 	'%' #{superName} '%' 和 '%'#{superName}'%'均可哈,我喜歡中間帶點空格分割開。
	-->
    <!-- 或者直接'%${superName}%'  不帶引號的引入-->
    where super_name like '%' #{superName} '%' and
    id in
    <foreach item="item" index="index" collection="superIdList"
             open="(" separator="," close=")">
        #{item}
    </foreach>
</select>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章