執行如下指令:
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);}
此方法不夠直覺,見到接口方法不能直接的知道要傳的參數是什麼。
雖千萬人,吾往矣!