前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >springboot结合MyBatis中使用foreach

springboot结合MyBatis中使用foreach

原创
作者头像
道可道非常道
修改2019-05-22 18:06:39
1.4K0
修改2019-05-22 18:06:39
举报
文章被收录于专栏:Java Web学习Java Web学习

废话少说,直接建项目上代码

先建一个springboot web项目或者模块,目录结构如下

在pom.xml中自行加入需要的依赖,application.properties的配置如下

代码语言:txt
复制
server.port=8888
mybatis.mapper-locations=classpath*:mapper/*Mapper.xml
spring.datasource.url=jdbc:mysql://localhost:3306/ssm?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=Panbing936@
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

实体类User.java

代码语言:txt
复制
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private int id;
    private String name;
}

UserMapper.xml中

使用foreach接收list参数

代码语言:txt
复制
 <!-- 使用foreach接收list参数 -->
    <select id="getUsersByListParam" resultType="cn.niit.mybatisforeach.pojo.User">
        select * from t_user
        <foreach collection="list" item="item" open="where id in(" close=")" separator=",">
            #{item}
        </foreach>
    </select>

使用foreach批量插入用户

代码语言:txt
复制
<!-- 使用foreach批量插入用户-->
    <insert id="insertMultiUsers">
        insert into t_user(id,name)
        values
        <foreach collection="users" item="user" separator=",">
            (#{user.id},#{user.name})
        </foreach>
    </insert>

使用foreach接收array数组

代码语言:txt
复制
<!--使用foreach接收array数组-->
    <select id="getUserByArrayList" parameterType="java.util.ArrayList" resultType="cn.niit.mybatisforeach.pojo.User">
        select * from t_user where id in
        <foreach collection="array" index="index" item="item" open="(" separator="," close=")">
            #{item}
        </foreach>
    </select>

使用foreach接收Map

代码语言:txt
复制
<!--使用foreach接收Map-->
    <select id="getUserByMap" parameterType="java.util.HashMap"
            resultType="cn.niit.mybatisforeach.pojo.User">
        select * from t_user where  id in
        <foreach collection="ids" index="index" item="item" open="(" separator="," close=")">
            #{item}
        </foreach>
    </select>

UserMapper.java

代码语言:txt
复制
@Mapper
@Component
public interface UserMapper {
    /**
     * 多个参数查询user集合
     */
    List<User> getUsersByListParam(@Param("list") List list);
    /**
     * 使用foreach批量插入
     */
    int insertMultiUsers(@Param("users") List<User> users);

    /**
     * 使用foreach接收数组参数
     */
    List getUserByArrayList(int[] ids);

    /**
     * 使用foreach接收map
     */
    List getUserByMap(Map params);
}

测试代码

MybatisForeachApplicationTests.java 中的代码如下

代码语言:txt
复制
@RunWith(SpringRunner.class)
@SpringBootTest
public class MybatisForeachApplicationTests {

    @Test
    public void contextLoads() {
    }
    /**
     * 动态sql学习---foreach标签使用(查询)
     */
    @Autowired
    private UserMapper userMapper;
    @Test
    public void dynamicSQLToForeach() throws IOException {
            List<User> users = userMapper.getUsersByListParam(Arrays.asList(1,2,3,4));
            for(User user:users) {
                System.out.println(user);
            }
    }

    /**
     * 动态sql学习---foreach标签使用(新增)
     */
    @Test
    public void insertMultiUsers() throws IOException {
            List<User> users = new ArrayList<User>();
            users.add(new User(6,"陈大小姐"));
            users.add(new User(7,"少主"));
            users.add(new User(8,"天龙人"));
            int count = userMapper.insertMultiUsers(users);
            System.out.println("成功插入"+count+"条记录");
    }

    @Test
    public void getUserByArrayList() {
       int[] ids = new int[] {1,3,6,9};
        List users = userMapper.getUserByArrayList(ids);
        for (Object user:users)
        {
            System.out.println(user);
        }
    }

    @Test
    public void getUserByMapTest() {
        final List ids = new ArrayList();
        ids.add(1);
        ids.add(2);
        ids.add(3);
        ids.add(6);
        ids.add(7);
        ids.add(9);
        Map params = new HashMap();
        params.put("ids", ids);
        List users = userMapper.getUserByMap(params);
        for (Object user : users)
            System.out.println(user);
    }
}

github代码

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • UserMapper.xml中
  • UserMapper.java
  • 测试代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档