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语句执行