parameterType:入参类型,指明传进来的参数是什么类型的,可写可不写,

resultType:返回值类型,指明SQL语句执行结束后返回怎样的数据类型

1,绑定单个参数时:

方法的参数只有一个时,形参名和#{}中的参数名,可以不一样,
但是为了程序的可读性,通常写成一样的。

例如:

dao方法如下:

public void delete(Integer id);

xml文件如下:

<delete id="delete" parameterType="java.lang.Integer">
delete from category where cid = #{id}
</delete>

2、绑定多个参数时:

使用Param注解给参数起个名字,可以在mapper文件中直接使用。

dao方法,方法名如下:

/**
* 根据用户名和密码查询用户
* @param username
* @param password
*/
public User selectByNameAndPwd(@Param("username")String username,@Param("password")String password);

xml文件如下:

<select id="selectByNameAndPwd" resultType="com.macw.entity.User">
select * from t_user where username = #{username} and password = #{password}
</select>

3. 参数是一个实体类型对象

当参数类型为实体类型时,在mapper文件中获取属性,直接#{属性名}即可

dao方法,方法名如下:

/**
* 更新
* @param u
*/
public void update(User u);

xml文件如下:

<update id="update" parameterType="com.macw.entity.User">
update t_user set password = #{password} where username = #{username}
</update>

4. 使用序列生成主键(只在使用oracle数据库中)

Insert into t_xxx values(seq_xxx.nextval,?,?,?);

可以在执行插入之后,立刻获取id主键的值。

xml文件如下:

<insert id="insert" parameterType="com.macw.entity.Category">
<selectKey keyProperty="cid" resultType="java.lang.Integer" order="BEFORE">
select seq_cate.nextval from dual
</selectKey>

insert into category values(#{cid},#{cname},#{cdesc},#{remark})
</insert>

keyProperty="cid“ :意思是使用cid属性接收selectKey标签SQL语句执行后的结果

order=“BEFORE” : 意思是指明selectKey子标签中的SQL语句先于select标签中的SQL语句执行