业务中我们时常使用mybatis插入多条语句,我们便可以使用集合,这里我们使用List集合
首先看Mapper
@Insert("<script>"+
"insert into game_level_player(roundId,level,cid,answer,success) values"+
"<foreach collection ='list' item='item' separator=','>"+
"(#{item.roundId},#{item.level},#{item.cid},#{item.answer},#{item.success})"+
"</foreach></script>")
void insertMany(@Param("list") List<GameLevelPlayer> list);
collection: 指定要遍历的集合(三种情况 list,array,map) !!!!在这种使用注解sql的情况下,这里请填写mapper方法中集合的名称。
item:将当前遍历出的元素赋值给指定的变量 (相当于for循环中的i) separator:每个元素之间的分隔符 index:索引。遍历list的时候是index就是索引,item就是当前值 #{变量名}就能取出变量的值也就是当前遍历出的元素
测试语句:
@Test
public void addLevelPlayerInfo(){
List<GameLevelPlayer> list=new ArrayList<>();
GameLevelPlayer gameLevelPlayer1=new GameLevelPlayer();
gameLevelPlayer1.setRoundId(2);
gameLevelPlayer1.setLevel(2);
gameLevelPlayer1.setCid("code52682f6a9282f8c9a20e87ff4951715");
gameLevelPlayer1.setAnswer(true);
gameLevelPlayer1.setSuccess(false);
GameLevelPlayer gameLevelPlayer2=new GameLevelPlayer();
gameLevelPlayer2.setRoundId(2);
gameLevelPlayer2.setLevel(1);
gameLevelPlayer2.setCid("cod35d680ae1610c50fbb6da58c9ff77aec");
gameLevelPlayer2.setAnswer(false);
gameLevelPlayer2.setSuccess(false);
list.add(gameLevelPlayer1);
list.add(gameLevelPlayer2);
gameService.insertMany(list);
}
成功插入: