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中的參數對應。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM