zoukankan      html  css  js  c++  java
  • 动态SQL之foreach

     

    1.1. foreach标签

    sql传递数组或Listmybatis使用foreach解析,如下:

    根据多个id查询用户信息

    查询sql

    SELECT * FROM user WHERE id IN (1,10,24)

    1.1.1. 改造QueryVo

    如下图在pojo中定义list属性ids存储多个用户id,并添加getter/setter方法

    图片


    1.1.1. Mapper.xml文件

    UserMapper.xml添加sql,如下:

    <!-- 根据ids查询用户 -->

    <select id="queryUserByIds" parameterType="queryVo" resultType="user">

    SELECT * FROM `user`

    <where>

    <!-- foreach标签,进行遍历 -->

    <!-- collection:遍历的集合,这里是QueryVo的ids属性 -->

    <!-- item:遍历的项目,可以随便写,,但是和后面的#{}里面要一致 -->

    <!-- open:在前面添加的sql片段 -->

    <!-- close:在结尾处添加的sql片段 -->

    <!-- separator:指定遍历的元素之间使用的分隔符 -->

    <foreach collection="ids" item="item" open="id IN (" close=")"

    separator=",">

    #{item}

    </foreach>

    </where>

    </select>
    ----------------------------------------------------

    测试方法如下图:

    @Test

    public void testQueryUserByIds() {

    // mybatis和spring整合,整合之后,交给spring管理

    SqlSession sqlSession = this.sqlSessionFactory.openSession();

    // 创建Mapper接口的动态代理对象,整合之后,交给spring管理

    UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

    // 使用userMapper执行根据条件查询用户

    QueryVo queryVo = new QueryVo();

    List<Integer> ids = new ArrayList<>();

    ids.add(1);

    ids.add(10);

    ids.add(24);

    queryVo.setIds(ids);

    List<User> list = userMapper.queryUserByIds(queryVo);

    for (User u : list) {

    System.out.println(u);

    }

    // mybatis和spring整合,整合之后,交给spring管理

    sqlSession.close();

    }

  • 相关阅读:
    给入坑前端的新人的建议
    浅析js闭包
    mongoose之操作mongoDB数据库
    input模拟输入下拉框
    浅析AngularJS自定义指令之嵌入(transclude)
    vue-cli之打包多入口配置
    Node.js之图片上传
    移动端之模态框滚动穿透问题
    浅谈vue之动态路由匹配
    vuex数据持久化存储
  • 原文地址:https://www.cnblogs.com/MAPO/p/8453254.html
Copyright © 2011-2022 走看看