MyBatis SQL語句操作Mysql


本文記錄使用Mybatis操作數據庫時碰到的一些語句,供以后參考。

 

一,多條件查詢

示意SQL語句:SELECT t_field1, t_field2 FROM table_name WHERE t_field3 (BETWEEN startTime AND endTime) AND t_field4 IN (xxx,xxx,xxx)

Mapper接口配置:

    public List<Chat> query(@Param("startTime") long startTime, @Param("endTime") long endTime, @Param("sids") List<Long> sidList);

 

Mapper.xml配置:

    <select id="query" resultMap="chat">
        SELECT uid,content from tableName
        WHERE
        ( UNIX_TIMESTAMP(data_time) >= #{startTime} ) AND ( UNIX_TIMESTAMP(data_time) &lt;= #{endTime} )
        AND sid IN
        <foreach collection="sids" item="item" index="index" open="(" separator="," close=")">
            #{item}
        </foreach>
    </select>

 

resultMap 將數據庫中的列名 與 JavaBean 屬性名 對應,從而映射成Java對象。Chat則是一個擁有兩個字段(uid 和 content)的 JavaBean類。

    <resultMap id="chat" type="Chat"><!-- Chat 是在mybatisConfig.xml中定義的別名(全限定包名在 mybatisConfig.xml中配置了)-->
        <id property="id" column="id"/>
        <result property="uid" column="uid"/>
        <result property="content" column="content"/>
    </resultMap>

 

解釋:①Mapper接口中的方法名 與 Mapper.xml中的 <select id 一 一對應。

②Mapper接口 通過 @Param 實現多個參數傳遞。可參考:MyBatis簡單使用和入門理解 中的“使用參數注解的形式傳遞多個參數”。@Param中指定的參數名稱 與 select 查詢語句中的 名稱 一 一對應。比如:@param("startTime")  對應 #{startTime} 。  @param("endTime")  對應 #{endTime}  。

 @param("sids")  對應 foreach collection="sids"

③通過 foreach 語句,對 sid 字段 實現了 多條件匹配。相當於 sid IN {xxx1,xxx2,xxx3....}

④另外對於數據庫中的String類型 data_time字段,首先轉化成UNIX時間戳,然后與 startTime 及 endTime 比較。注意的是 <= 是用 &lt; 來表示的。否則會報下面錯誤

tag name are expected

 


免責聲明!

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



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