zoukankan      html  css  js  c++  java
  • MyBatis(五)动态SQL 之 批量操作(查询)

    一、批量操作——查询

      在实际工作,我们需要根据情况进行批量查询,批量查询,可以全部查询出来,也可以根据其他查询查询出来。

      1、查询全部的数据

        (1)在接口中声明方法

    //查询所有对象,返回 list 集合
    public List<Employee> getAllEmps();

        (2)在对应的 xml 中配置

        <!--
           public List<Employee> getAllEmps();
           resultType:如果返回的是一个集合,要写集合中元素的类型
           指定集合中存放的类型,有多个数据,会自动转换为要返回的类型
        -->
        <select id="getAllEmps" resultType="com.njf.mybatis.bean.Employee">
            select id, last_name lastName, email, gender from tbl_employee
        </select>

      2、根据指定条件批量查询

        (1)在接口中声明方法

    //根据指定的id来查询
    public List<Employee> getEmpsByIds(@Param("ids")List<Integer> ids);

        (2)在对应的 xml 中配置

        <!--
            //根据指定的id来查询
            public List<Employee> getEmpsByIds(@Param("ids")List<Integer> ids);
        -->
        <!--
            方式一:select * from tbl_employee where id in (1,2,3);
        -->
        <select id="getEmpsByIds" resultType="Employee" databaseId="oracle">
            select * from tbl_employee
            <foreach collection="ids" item="item" open="where id in(" close=")" separator=",">
                #{item}
            </foreach>
        </select>
    
        <!--
            方式二:select * from tbl_employee where id = 1 or id = 2 or id = 3
        -->
        <select id="getEmpsByIds" resultType="Employee">
            select * from tbl_employee
            <foreach collection="ids" item="item" open="where" separator="or">
                id = #{item}
            </foreach>
        </select>

      3、根据多条件查询

        (1)在接口中声明方法

    //根据多条件查询
    public List<Employee> getEmpsByCondition(Employee employee);

        (2)在对应的 xml 中配置

       <!--
            public List<Employee> getEmpsByCondition(Employee employee);
        -->
        <select id="getEmpsByCondition" resultType="Employee">
            select * from tbl_employee
            <where>
                <if test="id!=null">
                    id=#{id}
                </if>
                <if test="lastName!=null and lastName!=''">
                    and last_name like #{lastName}
                </if>
                <if test="email!=null and email.trim()!=&quot;&quot;">
                    and email = #{email}
                </if>
                <if test="gender!=null and gender==0 or gender==1">
                    and gender = #{gender}
                </if>
            </where>
        </select>

      测试:

         @Test
         public void testBatchSelect() throws IOException {
              //1、获取 sqlSessionFactory
              SqlSessionFactory sqlSessionFactory = getsqlSessionFactory();
              //2、获取 sqlSession 实例,能直接执行已经映射的 SQL 语句
              SqlSession sqlSession = sqlSessionFactory.openSession();
              try {
                   EmployeeMapperBatch mapper = sqlSession.getMapper(EmployeeMapperBatch.class);
    
                   List<Employee> emps = new ArrayList<>();
    
                   //查询所有的员工信息
                   emps = mapper.getAllEmps();
    
                   //根据指定的id来查询
                   emps = mapper.getEmpsByIds(Arrays.asList(1, 3));
    
                   //多条件查询
                   emps = mapper.getEmpsByCondition(new Employee(null, "%o%", null, null));
    
                   emps.forEach(System.out::println);
              } finally {
                   sqlSession.close();
              }
         }
  • 相关阅读:
    使用Go语言两三事
    Ubuntu安装和配置redis
    samba 问题Windows能看到文件夹但是不能打开
    centos---无线上网的电脑所安装的虚拟机网络设置
    centos克隆,网卡启动失败
    redis安装及基础操作(1)
    hadoop2.6---windows下开发环境搭建
    hadoop2.6---常用命令
    虚拟机centos6.5 --hadoop2.6集群环境搭建
    虚拟机centos6.5 --开放端口
  • 原文地址:https://www.cnblogs.com/niujifei/p/15242434.html
Copyright © 2011-2022 走看看