From《MyBatis从入门到精通》

1.接口类中增加的方法:

    /*
        2.7 多个接口参数的用法

        多个参数时,可以选取的方案有:使用Map类型或者使用@Param注解

        使用Map类型作为参数的方法,就是在Map中通过key来映射XML中SQL使用的参数值名字,
        value用来存放参数值,需要多个参数时,通过Map的key-value方式传递参数值,由于

        给参数配置了@Param注解后,MyBatis就会自动将参数封装成Map类型,@Param注解值
        会作为Map中的key,因此SQL部分就可以通过配置的注解值来使用参数。

        当只有一个参数的时候,为什么可以不使用注解,这是因为在这种情况下(除集合和数组外)
        MyBatis不管性这个参数叫什么名字,就会直接把这个韦德的参数值拿来用。
            ——我感觉这部分解释我之前的问题,#{id}中的id可以不和方法中的id同名

        当参数类型是一些JavaBean时,这时候在XML文档中就需要通过点取值方式使用
        #{user.id},#{role.enabled}从两个JavaBean中取得指定属性的值。

     */

    List<SysRole> selectRoleByUserIdAndRoleEnabled(@Param("userId") Long userId,@Param("enabled") Integer enabled);
    //List<SysRole> selectRoleByUserIdAndRoleEnabled(Long userId,Integer enabled);

2.映射文件中增加的代码:

    <select id="selectRoleByUserIdAndRoleEnabled"
            resultType="tk.mybatis.simple.model.SysRole">
        select
          r.id,
          r.role_name roleName,
          r.enabled,
          r.create_by createBy,
          r.create_time createTime
        from sys_user u
          inner join sys_user_role ur on u.id=ur.user_id
          inner join sys_role r on ur.role_id=r.id
        where u.id = #{userId} and r.enabled=#{enabled}
    </select>

3.测试代码:

    @Test
    public void testSelectRolesByUserIdAndRoleEnabled(){
        SqlSession sqlSession = getSqlSession();
        try{
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

            List<SysRole> userList = userMapper.selectRoleByUserIdAndRoleEnabled(1L,1);

            Assert.assertNotNull(userList);
            Assert.assertTrue(userList.size()>0);
        }finally {
            sqlSession.close();
        }
    }

MyBatis 接口多参数的处理方法的更多相关文章

  1. MyBatis之传入参数

    在MyBatis的select.insert.update.delete这些元素中都提到了parameterType这个属性.MyBatis现在可以使用的parameterType有基本数据类型和Ja ...

  2. MyBatis之传入参数parameterType

    在MyBatis的select.insert.update.delete这些元素中都提到了parameterType这个属性.MyBatis现在可以使用的parameterType有基本数据类型和Ja ...

  3. MyBatis之传入参数——parameterType(转)

    鸣谢:http://blog.csdn.net/liaoxiaohua1981/article/details/6862764 ------------------------------------ ...

  4. 基于SSM之Mybatis接口实现增删改查(CRUD)功能

    国庆已过,要安心的学习了. SSM框架以前做过基本的了解,相比于ssh它更为优秀. 现基于JAVA应用程序用Mybatis接口简单的实现CRUD功能: 基本结构: (PS:其实这个就是用的Mapper ...

  5. Mybatis接口编程原理分析(二)

    在上一篇博客中 Mybatis接口编程原理分析(一)中我们介绍了MapperProxyFactory和MapperProxy,接下来我们要介绍的是MapperMethod MapperMethod:它 ...

  6. Mybatis 接口代理的实现(BeanDefinitionRegistryPostProcessor+FactoryBean)

    相信在开发中,尤其是mybatis 配置操作中,我们只需要提供一个mapper 接口,然后注入到service 中,就可以进行调用. 按我们的一般逻辑来说,我们并没有进行接口的实现,应该会报空指针异常 ...

  7. mybatis中String参数的传递

    mybatis中String参数的传递 Keywords selectKeywords(@Param("key") String key); 可以在mapper方法的参数钱添加 @ ...

  8. Mybatis调用数据库的存储过程和方法

     转载. https://blog.csdn.net/ml0228123/article/details/81002258   上次的项目,要求我用java代码调用存储过程,折腾了好久.最后总算成功了 ...

  9. mybatis 接口绑定 和 动态SQL

    一.MyBatis 接口绑定方案及多参数传递 1.作用:实现创建一个接口后把mapper.xml由mybatis生成接口的实现类,通过调用接口对象就可以获取mapper.xml中编写的sql 2.后面 ...

随机推荐

  1. Win8Metro(C#)数字图像处理--2.24二值图像闭运算

    原文:Win8Metro(C#)数字图像处理--2.24二值图像闭运算  [函数名称] 二值图像闭运算函数CloseOperateProcess(WriteableBitmap src) [算法说 ...

  2. 1. linux系统简介

    一.Linux是什么 linux位于系统调用和内核的那两层,直观上来看,我们使用的操作系统还包含一些在其上运行的应用程序,包含文本编译器,浏览器,电子邮件. 二.Linux与windows的区别 1. ...

  3. ArcGIS for Desktop入门教程_第六章_用ArcMap制作地图 - ArcGIS知乎-新一代ArcGIS问答社区

    原文:ArcGIS for Desktop入门教程_第六章_用ArcMap制作地图 - ArcGIS知乎-新一代ArcGIS问答社区 1 用ArcMap制作地图 作为ArcGIS for Deskto ...

  4. Microsoft .NET Framework 3.5 SP1安装错误 1603

    ghost版安装时由于系统简化引起上述错误,你按下面方法试一下1.点击电脑桌面右下角的“开始”按钮,点击“运行”按钮,在弹出的节目输入框中输入“regedit”.2.在弹出来的“注册表编辑器”界面上, ...

  5. DUI-分层窗口两种模式(SetLayeredWindowAttributes和UpdateLayeredWindow两种方法各有利弊)

    LayeredWindow提供两种模式: 1.使用SetLayeredWindowAttributes去设置透明度, 完成窗口的统一透明,此时窗口仍然收到PAINT消息, 其他应用跟普通窗口一样. 2 ...

  6. php 的mvc开发

    至于什么MVC结构,其实就是三个Model,Contraller,View单词的简称,,Model,主要任务就是把数据库或者其他文件系统的数据按 照我们需要的方式读取出来.View,主要负责页面的,把 ...

  7. Java集合 ArrayList原理及使用

    ArrayList是集合的一种实现,实现了接口List,List接口继承了Collection接口.Collection是所有集合类的父类.ArrayList使用非常广泛,不论是数据库表查询,exce ...

  8. ZooKeeper学习第六期---ZooKeeper机制架构(转)

    转载来源:https://www.cnblogs.com/sunddenly/p/4133784.html 一.ZooKeeper权限管理机制 1.1 权限管理ACL(Access Control L ...

  9. [代码修订版] Python 踩坑之旅进程篇其五打不开的文件

    目录 1.1 踩坑案例 1.2 填坑和分析 1.2.1 从程序优化入手 1.2.2 从资源软硬限入手 1.4.1 技术关键字 下期坑位预告 代码示例支持 平台: Centos 6.3 Python: ...

  10. Kafka 学习之路(四)—— Kafka消费者详解

    一.消费者和消费者群组 在Kafka中,消费者通常是消费者群组的一部分,多个消费者群组共同读取同一个主题时,彼此之间互不影响.Kafka之所以要引入消费者群组这个概念是因为Kafka消费者经常会做一些 ...