Mybatis 實用篇(三)參數處理
阿新 • • 發佈:2018-10-06
習慣 ray sele {} name 實用 face 多個 tro
Mybatis 實用篇(三)參數處理
sql 語句中的參數 parameterType 可以省略不寫。
一、參數封裝
1.1 單個參數處理
public interface UserMapper {
User getUser(int id);
}
sql 中 #{} 的值可以隨意,mybatis 不做任何處理,eg:
<select id="getUser" parameterType="int" resultType="User">
select * from user where id=#{xxx};
</select>
1.2 多個參數處理
多個參數 mybatis 封裝成 Map,默認參數的 key 為 param1, param2...,也可以使用 @Param("id") 指定 key 的值
User getUser(@Param("id") int id, String name);
sql 可以有如下寫法:
<select id="getUser" resultType="User"> <!--select * from user where id=#{0} and name=#{1};--> <!--select * from user where id=#{param1} and name=#{param2};--> <!--select * from user where id=#{0} and name=#{param2};--> select * from user where id=#{id} and name=#{param2}; </select>
1.3 Java Bean
User getUser(User user);
sql 可以有如下寫法:
<select id="getUser" resultType="User">
select * from user where id=#{id} and name=#{name};
</select>
1.4 Map
User getUser(User user);
sql 可以有如下寫法:
<select id="getUser" resultType="User"> select * from user where id=#{id} and name=#{name}; </select>
思考:
User getUser(@Param("id") int id, String name);
id ==> #{id/param1/0} name ==> #{param2/1}
User getUser(int id, @Param("user") User user);
id ==> #{id/param1/0} name ==> #{param2.name/user.name}
# Collection ==> list, Array ==> array. eg: 取出 list 中的第一個值
User getUser(List<User> users);
id ==> #{list[0]}
二、#{} 和 ${} 區別
#{}
預編譯,而 ${}
僅進行字符串拼接。
實際工作中,盡量使用 #{} ,特殊場合需要使用 ${},如:
select * from ${tablename}
三、#{} 參數
mybatis 值為 null 時默認對應數據庫中的 TYPES.OHTER,可以修改全局的配置:
{email, javaType=NULL}
每天用心記錄一點點。內容也許不重要,但習慣很重要!
Mybatis 實用篇(三)參數處理