zoukankan      html  css  js  c++  java
  • mybatis sql in 查询

    1. 当查询的参数只有一个时 
      findByIds(List<Long> ids)
     1.1 如果参数的类型是List, 则在使用时,collection属性要必须指定为 list

    <select id="findByIdsMap" resultMap="BaseResultMap">  
      Select  
        <include refid="Base_Column_List" />  
      from jria where ID in  
        <foreach item="item" index="index" collection="list" open="(" separator="," close=")">  
      #{item}  
        </foreach>  
    </select>  

    findByIds(Long[] ids)
     1.2 如果参数的类型是Array,则在使用时,collection属性要必须指定为 array

    <select id="findByIdsMap" resultMap="BaseResultMap">  
      select  
        <include refid="Base_Column_List" />  
      from tabs where ID in  
        <foreach item="item" index="index" collection="array" open="(" separator="," close=")">  
      #{item}  
        </foreach>  
    </select> 

    2. 当查询的参数有多个时,例如 findByIds(String name, Long[] ids)
     这种情况需要特别注意,在传参数时,一定要改用Map方式, 这样在collection属性可以指定名称
    Class : Service

        /**
         * 根据fid、rid、name查询AirCon,fid存在则根据fid查询、rid存在则根据rid查询、name存在则根据name查询、
         * 都不存在则查询全表
         */
        @Override
        public List<AirCon> getAirCons(Integer fid, Integer rid, String name) {
            Map<String, Object> map = new HashMap<String, Object>();
            map.put("fid", fid);
            map.put("rid", rid);
            map.put("name", name);
            map.put("ids", null);
            return airConDao.getAirCons(map);

    Inteface : Dao

        /**
         * 根据fid、rid、name、ids(id的集合)查询AirCon,fid存在则根据fid查询、rid存在则根据rid查询、
         * name存在则根据name查询、ids不为空则根据id的集合查询,都不存在则查询全表
         * 
         * @author Liang
         *
         *         2017年4月19日
         */
        List<AirCon> getAirCons(Map<String, Object> map);

    XML : Dao

        <select id="getAirCons" resultType="com.xindatai.ibs.environ.device.bean.AirCon">
            SELECT id,rid,fid,logicid,`name`,icon,`type`,gwIP,gwPort,modbus_addr AS modbusAddr,`power`,wind,temp,conn_status AS connStatus,update_time AS updateTime,create_time AS createTime
            FROM aircon
            <where>
                <if test="fid != null">
                    fid = #{fid}
                </if>
                <if test="rid != null">
                    AND rid = #{rid}
                </if>
                <if test="name != null and name != ''">
                    AND name LIKE CONCAT('%',name,'%')
                </if>
                <if test="ids != null">
                    id IN
                    <foreach collection="ids" close=")" index="index" item="item" open="(" separator=",">
                    #{item}
                    </foreach>
                </if>
            </where>
        </select>

    啦啦啦

  • 相关阅读:
    centos7部署jmeter+grafana+telegraf+prometheus/influxdb,构建性能测试可视化实时监控(三)
    python+uvicorn+fastapi (二)
    python+uvicorn+fastapi (一)
    vue系列 <router-link>属性
    vue系列 vue-router安装配置呈现DEMO
    vue系列 url的hash和HTML5的history
    vue系列 前后端渲染+前后端路由
    python框架Django实战商城项目之工程搭建
    Socket--selecct的用法
    迭代器与生成器的区别
  • 原文地址:https://www.cnblogs.com/ClassNotFoundException/p/5955982.html
Copyright © 2011-2022 走看看