在 MyBatis 中,<select>
標(biāo)簽的 parameterType
屬性用于指定參數(shù)類型,而參數(shù)的傳遞方式則取決于你如何在 Java 代碼中設(shè)置參數(shù)以及 MyBatis 如何處理這些參數(shù)。以下是一些常見的參數(shù)傳遞方式:
直接傳遞參數(shù):
parameterType
指定類型相匹配的對象,并將其作為參數(shù)傳遞給 <select>
標(biāo)簽。parameterType
是 int
,你可以創(chuàng)建一個 Integer
對象并傳遞給 <select>
。使用 #{}
語法:
#{}
語法來引用參數(shù)。這種方式會將參數(shù)值進(jìn)行預(yù)處理(如 SQL 注入防護(hù)),然后傳遞給數(shù)據(jù)庫查詢。<select>
標(biāo)簽中,你可以使用 ${parameterName}
來引用參數(shù)。<select id="getUserById" parameterType="int" resultType="User">SELECT * FROM users WHERE id = #{userId}</select>
使用 JavaBean:
<select>
標(biāo)簽。User
類,你可以這樣傳遞參數(shù):<select id="getUserById" parameterType="User" resultType="User">SELECT * FROM users WHERE id = #{id} AND name = #{name}</select>
使用 Map:
Map
來傳遞參數(shù)。你可以創(chuàng)建一個 Map
對象,其中鍵是參數(shù)名,值是參數(shù)值,然后將這個 Map
對象作為參數(shù)傳遞給 <select>
標(biāo)簽。#{key}
來引用 Map 中的值。<select id="getUserByMap" parameterType="map" resultType="User">SELECT * FROM users WHERE id = #{userId} AND name = #{userName}</select>
Map<String, Object> params = new HashMap<>(); params.put("userId", 1); params.put("userName", "John"); User user = sqlSession.selectOne("getUserByMap", params);
使用注解:
@Param
注解來為方法參數(shù)指定名稱,然后在 SQL 查詢中使用這些名稱。<select id="getUserById" parameterType="int" resultType="User">SELECT * FROM users WHERE id = #{userId}</select>
在 Java 代碼中:User user = sqlSession.selectOne("getUserById", 1, User.class);
注意:在這種情況下,你需要在 MyBatis 配置文件中啟用注解支持。這些是 MyBatis 中常見的參數(shù)傳遞方式。你可以根據(jù)具體的需求和場景選擇最適合的方式。