天天看點

mybatis 使用tips - 使用多個參數

執行如下指令:

mvn -Dmybatis.generator.overwrite=true mybatis-generator:generate      

可以使用mybatis generator

mybatis 使用多個參數

自定義方法需要根據多個查詢條件去查詢:

SELECT * FROM `db_demo`.`hot_topic` WHERE lang='english' AND category='017' AND  topic_type='video' ORDER BY score DESC;      

推薦使用注解的方式:

需要自定義方法:

mapper檔案中

  //  使用注解
    JSONArray selectByLangAndCategoryAndTopicType(@Param("lang") String lang, @Param("category") String category, @Param("topicType") String topicType);      

mapper.xml檔案中:

<select id="selectByLangAndCategoryAndTopicType" resultMap="ResultMapWithBLOBs" >
    <!--
      WARNING - @mbggenerated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Thu Oct 12 14:51:34 CST 2017.
    -->
    select
    <include refid="Base_Column_List" />
    ,
    <include refid="Blob_Column_List" />
    from hot_topic
    where lang= #{lang,jdbcType=VARCHAR} AND category = #{category,jdbcType=VARCHAR} AND topic_type=#{topicType,jdbcType=VARCHAR}
  </select>      

其他方法

DAO層的函數方法 

Public User selectUser(String name,String area);      

對應的Mapper.xml  

<select id="selectUser" resultMap="BaseResultMap">
    select  *  from user_user_t   where user_name = #{0} and user_area=#{1}
</select>      

其中,#{0}代表接收的是dao層中的第一個參數,#{1}代表dao層中第二參數,更多參數一緻往後加即可。

此方法采用Map傳多參數.

Dao層的函數方法

Public User selectUser(Map paramMap);      

對應的Mapper.xml

<select id=" selectUser" resultMap="BaseResultMap">
   select  *  from user_user_t   where user_name = #{userName,jdbcType=VARCHAR} and user_area=#{userArea,jdbcType=VARCHAR}
</select>      

Service層調用

Private User xxxSelectUser(){
Map paramMap=new hashMap();
paramMap.put(“userName”,”對應具體的參數值”);
paramMap.put(“userArea”,”對應具體的參數值”);
User user=xxx. selectUser(paramMap);}      

此方法不夠直覺,見到接口方法不能直接的知道要傳的參數是什麼。

雖千萬人,吾往矣!

上一篇: csv檔案亂碼