MyBatis 传递多个参数的方法

版权声明:@渔闻520 https://blog.csdn.net/weixin_41060905/article/details/86606189

这里有三种方法可以用来传递参数:

1.利用Map(不推荐);

2.利用注解(推荐,在参数小于5个时使用比较方便)

3.利用Java Bean,推荐,在参数大于5个即参数比较多时候使用。

#使用注解:

//使用注解来传递多个参数
    public List<Role> findRolesByAnnotation(@Param("roleName") String rolename,@Param("note") String note);
 <!--使用注解的方法来传递多个参数-->
    <select id="findRolesByAnnotation" resultType="role">
        select id,role_name as roleName,note from t_role where role_name like concat('%',#{roleName},'%')
        and note like concat('%',#{note},'%')
    </select>

这里的注解对应着映射器里的,所以两个要写一样!

#使用java bean的方法:

//使用java bean的方法来传递多个参数
    public List<Role> findRolesByBean(Role role);
 <!--使用Java bean的方法来传递多个参数-->
    <select id="findRolesByBean" resultType="role" parameterType="com.learn.ssm.chapter3.pojo.Role">
        select id,role_name as roleName ,note from t_role where role_name like concat('%',#{roleName},'%')
        and note like concat('%',#{note},'%')
    </select>

用的时候:

 Role role = new Role();
            role.setRoleName("江");
            role.setNote("学");
            List<Role> rolesByBean = roleMapper.findRolesByBean(role);
            for (Role role1 : rolesByBean) {
                log.info(role1.getRoleName());
                log.info(role1.getNote());

            }

执行的时候,映射器里的参数是通过反射来获得:把参数的第一个字母变成大写再和测试结合,例如:roleName变成:getRoleName();故这里参数名称要区对,要不然会抛出错误找不到对应的Getter!

猜你喜欢

转载自blog.csdn.net/weixin_41060905/article/details/86606189