在 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 中常见的参数传递方式。你可以根据具体的需求和场景选择最适合的方式。