Mybatis知识点(关于参数传递)
今天考试遇见的问题:
多参数传递
我们使用最多的一种@param注解一个一个写
//更新语句
public abstract int Update(@Param("password")String password,@Param("name")String name);
调用时候直接使用名字
<update id="Update">
update voteuser
<set>
userPwd=#{password}
</set>
<where>
username=#{name}
</where>
</update>
当要改变的字段太多需要重复写很多代码
于是我们引用map
使用Map传递多参数
//当字段很多时候可以传递一个map参数
public abstract int UpdateMuch(Map<String, Object> params);
xml文件这么写
<update id="UpdateMuch" parameterType="java.util.Map">
update voteuser
<set>
userpwd=#{userpwd},
userrank=#{userrank}
</set>
<where>
username=#{username}
</where>
</update>
测试类
VoteUserDao dao = sqlSession.getMapper(VoteUserDao.class);
Map<String, Object> map=new HashMap<String, Object>();
map.put("username", "asd");
map.put("userpwd", "111");
map.put("userrank", "1");
dao.UpdateMuch(map);
这样当传入的参数很多时候就可以传化成Map<String, Object> params
{}取得的值就是String 对应的value
传入一个实体类当多参数
我们将字段封装成实体类
目的:实现多字段修改,传递一个实体类
//当字段很多时候可以传递一个map参数
public abstract int UpdateMuch(VoteUser user);
<!--调用时候直接调用实体类属性-->
update id="UpdateMuch" parameterType="entity.VoteUser">
update voteuser
<set>
userpwd=#{userPwd},
userrank=#{userRank}
</set>
<where>
username=#{userName}
</where>
</update>
{}取得的值就是实体类属性的值
当我们要传入很多参数的时候可以封装成一个实体类