mybatis使用foreach插入map或者list对象

1. 插入map

为了方便就不要service层了

controller 层

Map<Integer,String> map=new HashMap();
            map.put(5,"sb");
            map.put(6,"dsb");
            map.put(7,"wbd");
            if (testDao.insert(map)>0){
                return true;
            }else {
                return false;
            }

dao层

int insert(@Param("map") Map map);

mapper层

<insert id="insert" parameterType="map" useGeneratedKeys="true">
        insert into sys_post (post_id,post_code) values

        <foreach collection="map" item="value" index="key" separator=",">

            (#{key},#{value})
        </foreach>

    </insert>

注意:
dao层参数必须用@param,值可以随便填,但是mapper中的collection要与之相同,其他为固定写法

结果

在这里插入图片描述

2. 插入list对象

对象实体类

public class User {

   private  Integer id;

   private String value;

}

controller层

 public boolean showKeyName1(@RequestBody List<User> user) {


        if (testDao.insert1(user) > 0) {
            return true;
        } else {
            return false;
        }

    }

请求参数

[{
    "id":100,
    "value":"sb"

},
{
    "id":101,
    "value":"s11b"

}]

dao层

int insert1(List<User> user);

mapper层

  <insert id="insert1" parameterType="java.util.List" useGeneratedKeys="true">

        insert into sys_post (post_id, post_code) values

        <foreach collection="list" item="item" index="index" separator=",">

            (
            #{item.id,jdbcType=INTEGER},
            #{item.value,jdbcType=VARCHAR}
            )
        </foreach>

    </insert>

注意:当传入list时,collection要写list,item的值随意,但是取对象时要使用,其他为固定写法

结果

在这里插入图片描述

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Mybatis中的foreach循环可以用于遍历一个List或者数组,也可以用于遍历一个Map。如果要遍历一个Map,需要在foreach标签中指定collection属性为Map的keySet()方法,同时指定item属性为Map中的key值,index属性为Map中的value值。例如: ``` <select id="selectByMap" parameterType="map" resultType="User"> SELECT * FROM user WHERE id IN <foreach collection="ids" item="id" index="index" open="(" separator="," close=")"> #{id} </foreach> </select> ``` 其中,ids是一个Map类型的参数,key为String类型,value为Integer类型。在foreach标签中,指定了collection属性为ids.keySet(),item属性为key,index属性为value,这样就可以遍历Map中的key值了。 ### 回答2: mybatis是一个Java持久化框架,它提供了一个非常方便的功能,即foreach循环mapMybatis中的foreach循环map功能非常重要,因为它能够简化我们的SQL语句,提高我们的开发效率。 在mybatis中,我们可以使用foreach来循环一个mapmap是一种非常常见的数据结构,它是由一组键值对组成的。我们可以用foreach来循环map中的键或值,也可以同时循环map中的键和值。 使用mybatisforeach循环map,需要我们定义一个map的标签,然后使用foreach标签来循环map中的键和值,我们还可以使用index变量来获取当前循环的索引。 除了循环map中的键和值,我们还可以在foreach使用if语句来过滤map中的数据,这样我们可以更精确地获取我们所需的数据。 使用mybatis中的foreach循环map要注意一些细节,比如说循环map的键和值时要使用entry标签,而不能使用key或value标签。此外,我们还需要通过指定collection属性来指定我们要循环的map。 总之,mybatis中的foreach循环map功能非常强大,它可以让开发者更高效地编写SQL语句,提高开发效率。使用foreach循环map需要注意一些细节,但只要掌握了相关的知识,就可以轻松地完成各种复杂的开发任务。 ### 回答3: MyBatis是一款面向Java语言的持久层框架,它提供了许多方便的实现数据库操作的方式。在MyBatis中,foreach语句是一种非常强大的循环语句,可以用来遍历集合或数组,并将其转换成SQL语句的一部分。在MyBatis中,可以使用foreach循环遍历一个Map对象。 在使用foreach循环遍历Map时,需要在SQL语句中使用#{}占位符,并在foreach标签中指定Map的key和value变量名。具体实现方式如下: 使用Map进行数据查询: ``` <select id="getUserListByMap" parameterType="java.util.Map" resultType="com.example.User"> SELECT * FROM user WHERE <foreach collection="param.keySet()" index="key" item="item" open="" close="" separator="AND"> ${key} = #{item} </foreach> </select> ``` 通过上面这段代码可以看到,在SQL语句中使用了#{}占位符,并使用foreach标签来遍历Map对象。其中,collection属性用于指定要遍历的Map对象,item属性表示Map中的value值,index属性表示Map中的key值。 在以上SQL语句中,遍历Map对象得到的结果类似于: SELECT * FROM user WHERE age = 18 AND name = 'Bob' AND sex = 'male'; 这条语句是根据输入的Map对象中的键值对动态生成的,可以根据不同的需求进行调整。 总之,使用foreach循环遍历Map对象MyBatis中一种十分常见的操作方式,能够大大提升查询的效率,并且极大地降低了程序开发的难度。需要注意的是,在使用foreach循环时,需要格外注意SQL语句的正确性,并避免出现语法错误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值