一,日期區間查詢,表里有一個時間字段
最常見的就是某時間段查詢,比如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中的參數對應。