Mybatis在编写Sql时候传递参数的方式:
1.使用对象属性,其中id、membershipName ..都为User对象的属性名;
mapper接口中的代码:
int insertUser(User user);
mapper.xml中的代码:
<insert id="insertUser">
insert into user(user_id, membership_name, tel, password, registration_time)
values(#{id}, #{membershipName}, #{tel}, #{password}, #{registrationTime, jdbcType=TIMESTAMP})
</insert>
2.使用参数
mapper接口中的代码:
User getUser(String membershipName, String password);
mapper.xml中的代码:
<select id="getUser" resultType="User">
select user_id id,membership_name membershipName
from user
where membership_name = #{arg0} and password = #{arg1}
</select>
可以使用#{arg0}, #{arg1},或者#{param1}, #{param2} ...#{paramN}来进行占位。
当使用#{0},#{1}的方式不在可以用,将会出现以下错误,大概的意思是参数 0 不可用,可用的为 [arg1, arg0, param1, param2]
org.mybatis.spring.MyBatisSystemException: nested exception is
org.apache.ibatis.binding.BindingException: Parameter '0' not found. Available parameters
are [arg1, arg0, param1, param2]