Mybatis知识点(关于参数传递)

今天考试遇见的问题:

image

多参数传递

我们使用最多的一种@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>  

{}取得的值就是实体类属性的值

当我们要传入很多参数的时候可以封装成一个实体类

posted @ 2021-10-25 10:26  旅祸少年  阅读(72)  评论(0编辑  收藏  举报