mybait数据库操作,mybaits对于数组和列表的遍历

本文介绍了MyBatis中如何进行动态SQL操作,包括resultMap配置以处理列名与属性名不一致的情况,多字段的删除、插入和更新方法。示例代码详细展示了如何实现批量操作,如多字段删除通过foreach标签遍历数组,多字段插入使用insertBatch方法,以及更新单个字段而不影响其他字段的updateById方法。
摘要由CSDN通过智能技术生成

一、数据库列名和属性名不一致resultMap配置

     <select id="getStandardById" resultMap="m1">
        select id, name, description, sort
        from pms_album
        where id = #{id}
    </select>
    <resultMap id="m1" type="cn.tude.csmall.product.pojo.vo.AlbumStandardVO">
        <result column="product_count" property="productCount"/>
        <result column="comment_count" property="commentCount"/>
        <result column="positive_comment_count" property="positiveCommentCount"/>
    </resultMap>

二、多字段删除

        mapper接口定义

  /**
     * 多删除
     */
    int deleteIds(Long...id);

        xml中 collection="array"类型 array或者list    separator="," 分割符 item="id"与#{id}与循环的名字一样

 <!-- int deleteIds(Long...id);-->
    <delete id="deleteIds">
        delete from pms_album where id in (
        <foreach collection="array" separator="," item="id">
            #{id}
        </foreach>
        )
    </delete>

        测试类中调用传入多参 

 /**
     * 多字段删除
     */
    @Test
    void delete(){
        mapper.deleteIds(2l,3l,4l);
    }

三、多字段插入


    /**
     * 批量插入
     * @param albumList
     * @return
     */
    int insertBatch(List<Album> albumList);
<!-- int insertBatch(List<Album> albumList);-->
    <insert id="insertBatch" useGeneratedKeys="true" keyProperty="id">
        insert into pms_album(name,description,sort)
        values
        <foreach collection="list" item="albumList" separator=",">
            (#{albumList.name},#{albumList.description},#{albumList.sort})
        </foreach>
    </insert>
 /**
     * 批量插入
     */
    @Test
    void testinsertBatch() {
        List<Album> albumList = new ArrayList<>();
        for (int i = 0; i <= 10; i++) {
            Album album=new Album();
            album.setName("批量测试" + i);
            album.setDescription("批量测试简介" + i);
            album.setSort(i);
            albumList. add(album);
        }
        int insert = mapper.insertBatch(albumList);
        System.out.println(this.getClass().getName() + "插入成功,受影响行:" + insert);
    }

四、更新单个字段其他字段不受影响 

 /**
     * 选择性更新字段
     * @return
     */
    int updateById(Album album);
    <!--int updateById(Album album);-->
    <update id="updateById">
        update pms_album
        <set>
            <if test="name!=null">
                name=#{name},
            </if>
            <if test="description!=null">
                description=#{description},
            </if>
            <if test="sort!=null">
                sort=#{sort}
            </if>
        </set>
        where id=#{id}
    </update>
 /**
     * 更新字段
     */
    @Test
    void testupdate(){
        Album album=new Album();
       /* album.setName("批量测试3");*/
        album.setDescription("批量测试简介5");
        /*album.setSort(6);*/
        album.setId(5l);
        int result =mapper.updateById(album);
        System.out.println("影响行数:" + result);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值