zoukankan      html  css  js  c++  java
  • mysql区间范围查询问题

    一,日期区间查询,表里有一个时间字段

    最常见的就是某时间段查询,比如xxxx时间---xxxx时间有多少条数据。例如数据库里的字段是 income_period,

    该字段类型可以是字符串(varchar),可以是时间类型(datetime,date),mysql都支持区间查询

    下面就以字符串类型为例 

    1 数据库表里字段
    2 income_period  varchar (10)  NULL 
    3 
    4 对应的mapper
    5 <result column="income_period" property="incomePeriod" jdbcType="VARCHAR" />

    对应的参数时间字段是 dateFrom,dateTo ,

    具体的sql语句是

     1 <select id="queryIncomeList" resultMap="Income" parameterType="java.util.Map">
     2     select * FROM income m    WHERE m.del_flg="N"
     3     
     4     <if test="dateFrom != null and dateFrom != ''">
     5         AND m.`income_period` >= #{dateFrom,jdbcType=VARCHAR}
     6     </if>
     7     <if test="dateTo != null and dateTo != ''">
     8         AND #{dateTo,jdbcType=VARCHAR}>=m.`income_period`
     9     </if>
    10     
    11     order by m.income_period
    12 
    13 </select>

    二,数字区间,表里有两个金额字段,形成区间

    具体金额落在哪个区间,

    1 数据库表里的字段
    2 min_tax decimal(16,2) NULL最小值
    3 max_tax decimal(16,2) NULL最大值
    4 
    5 对应的mapper
    6 <result column="min_tax" jdbcType="DECIMAL" property="minTax" />
    7 <result column="max_tax" jdbcType="DECIMAL" property="maxTax" />

    对应的参数金额字段saveMoney

    具体的sql语句

    1 <select id="queryPoster" parameterType="java.math.BigDecimal" resultMap="BaseResultMap">
    2     select * from iit_share_poster
    3     WHERE  #{saveMoney,jdbcType=DECIMAL}>= min_tax
    4     
    5     AND max_tax >=#{saveMoney,jdbcType=DECIMAL}
    6 
    7 </select>

    mysql会根据dao层传入的参数类型要与mapper中的参数对应。

  • 相关阅读:
    POJ 3468 A Simple Problem with Integers
    BZOJ 4430 Guessing Camels
    POJ 2309 BST
    POJ 1990 MooFest
    cf 822B Crossword solving
    cf B. Black Square
    cf 828 A. Restaurant Tables
    Codefroces 822C Hacker, pack your bags!
    [HDU 2255] 奔小康赚大钱
    [BZOJ 1735] Muddy Fields
  • 原文地址:https://www.cnblogs.com/sqy123/p/10383637.html
Copyright © 2011-2022 走看看