1. 程式人生 > >Mybatis 實用篇(三)參數處理

Mybatis 實用篇(三)參數處理

習慣 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 實用篇(三)參數處理