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