zoukankan      html  css  js  c++  java
  • springboot结合MyBatis中使用foreach

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

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


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

    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

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public class User {
        private int id;
        private String name;
    }
    

    UserMapper.xml中

    使用foreach接收list参数

     <!-- 使用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批量插入用户

    <!-- 使用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数组

    <!--使用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

    <!--使用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

    
    @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 中的代码如下

    
    @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代码

    个人网站

  • 相关阅读:
    多表关联查询_resultMap_集合对象
    mybatis多表关联查询之resultMap单个对象
    十二.filter
    十二.函数式编程
    十一.列表生成式
    十,迭代
    九.高级特性
    八.函数
    七.条件判断和循环
    六.使用list和tuple
  • 原文地址:https://www.cnblogs.com/panbingwen/p/10906104.html
Copyright © 2011-2022 走看看