在 MyBatis 中,<select>
標簽的 parameterType
屬性用于指定參數類型,而參數的傳遞方式則取決于你如何在 Java 代碼中設置參數以及 MyBatis 如何處理這些參數。以下是一些常見的參數傳遞方式:
直接傳遞參數:
parameterType
指定類型相匹配的對象,并將其作為參數傳遞給 <select>
標簽。parameterType
是 int
,你可以創建一個 Integer
對象并傳遞給 <select>
。使用 #{}
語法:
#{}
語法來引用參數。這種方式會將參數值進行預處理(如 SQL 注入防護),然后傳遞給數據庫查詢。<select>
標簽中,你可以使用 ${parameterName}
來引用參數。<select id="getUserById" parameterType="int" resultType="User">SELECT * FROM users WHERE id = #{userId}</select>
使用 JavaBean:
<select>
標簽。User
類,你可以這樣傳遞參數:<select id="getUserById" parameterType="User" resultType="User">SELECT * FROM users WHERE id = #{id} AND name = #{name}</select>
使用 Map:
Map
來傳遞參數。你可以創建一個 Map
對象,其中鍵是參數名,值是參數值,然后將這個 Map
對象作為參數傳遞給 <select>
標簽。#{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
注解來為方法參數指定名稱,然后在 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 中常見的參數傳遞方式。你可以根據具體的需求和場景選擇最適合的方式。