第一种:通过传入参数的顺序来匹配参数。
Parameter ‘UserID’ not found. Available parameters are [arg1, arg0, param1, param2],这句话的意思就是id找不到,可用的参数是[arg1, arg0, param1, param2]。所以可使用参数出现的顺序号码引用参数,第一个参数用arg0或param1表示,第二个参数用arg1或param2表示,以此类推(arg从0开始计数,param从1开始计数)。
xml如下:
<select id="findUser" resultType="com.gx.pojo.User">
SELECT * FROM user where username = #{arg0} and sex =#{arg1}
</select>
或者
<select id="findUser" resultType="com.gx.pojo.User">
SELECT * FROM user where username = #{param1} and sex =#{param2}
</select>
第二种:通过注解的方式来配置
接口的方法:
注意:@param里面的值要跟xml中的接收的名称一致
int updateUser(@Param("UserName") String UserName,@Param("UserID") Integer UserID);
Xml:
<update id="updateUser">
UPDATE s_user set UserName= #{UserName} where UserID = #{UserID}
</update>
第三种:使用JavaBean来传参
javaBean:
public class User {
private Integer UserID;
private String UserName;
private String Password;
private String sex;
}
接口的方法:
int insertUser(User user);
Xml:
<insert id="insertUser" parameterType="User" useGeneratedKeys="true" keyProperty="UserID">
INSERT INTO s_user values(#{UserID},#{UserName},#{Password},#{sex})
</insert>
第四种:使用map来传参
接口的方法:
int insertUser2(Map map);
把需要的参数封装进Map中
Map map = new HashMap();
map.put("UserID",10);
map.put("UserName","张三");
map.put("Password","123456");
map.put("sex","男");
Int = mapper.insertUser2(map);
Xml:
<insert id="insertUser2" parameterType="map" useGeneratedKeys="true" keyProperty="UserID">
INSERT INTO s_user values(#{UserID},#{UserName},#{Password},#{sex})
</insert>