標籤:plain nbsp 方案 and 多態 index 開發 ase class
Mybatis的Mapper介面的參數,一般是一個對象,但如果不是對象,並且有多個參數的時候呢?我們第一個的想法是把參數封裝成一個java.util.Map類型,然後在方法的注釋上面寫上map的key是什麼,但是,這樣的做法明顯不夠直觀,不能夠一眼看出這個方法的參數是什麼,並且,影響到了java方法的多態性(方法名相同,參數數量或類型不同)。下面的方法一和方法二能夠解決問題!一DAO層的函數方法
| 1 |
Public User selectUser(String name,String area); |
對應的Mapper.xml
| 123 |
<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層的函數方法
| 1 |
Public User selectUser(Map paramMap); |
對應的Mapper.xml
| 123 |
<select id=" selectUser" resultMap="BaseResultMap"> select * from user_user_t where user_name = #{userName,jdbcType=VARCHAR} and user_area=#{userArea,jdbcType=VARCHAR}</select> |
Service層調用
| 12345 |
Private User xxxSelectUser(){Map paramMap=new hashMap();paramMap.put(“userName”,”對應具體的參數值”);paramMap.put(“userArea”,”對應具體的參數值”);User user=xxx. selectUser(paramMap);} |
個人認為此方法不夠直觀,見到介面方法不能直接的知道要傳的參數是什麼。
三
Dao層的函數方法
| 1 |
Public User selectUser(@Param(“userName”)String name,@Param(“userArea”)String area); |
對應的Mapper.xml
| 123 |
<select id=" selectUser" resultMap="BaseResultMap"> select * from user_user_t where user_name = #{userName,jdbcType=VARCHAR} and user_area=#{userArea,jdbcType=VARCHAR}</select> |
個人覺得這種方法比較好,能讓開發人員看到dao層方法就知道該傳什麼樣的參數,比較直觀,個人推薦用此種方案
mapper 傳多個參數