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();

    }

  • 相关阅读:
    Android 按键消息处理Android 按键消息处理
    objcopy
    SQLite多线程读写实践及常见问题总结
    android动画坐标定义
    Android动画效果translate、scale、alpha、rotate
    Android公共库(缓存 下拉ListView 下载管理Pro 静默安装 root运行 Java公共类)
    Flatten Binary Tree to Linked List
    Distinct Subsequences
    Populating Next Right Pointers in Each Node II
    Populating Next Right Pointers in Each Node
  • 原文地址:https://www.cnblogs.com/MAPO/p/8453254.html
Copyright © 2011-2022 走看看