MyBatis 接口多参数的处理方法
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 接口多参数的处理方法的更多相关文章
- MyBatis之传入参数
在MyBatis的select.insert.update.delete这些元素中都提到了parameterType这个属性.MyBatis现在可以使用的parameterType有基本数据类型和Ja ...
- MyBatis之传入参数parameterType
在MyBatis的select.insert.update.delete这些元素中都提到了parameterType这个属性.MyBatis现在可以使用的parameterType有基本数据类型和Ja ...
- MyBatis之传入参数——parameterType(转)
鸣谢:http://blog.csdn.net/liaoxiaohua1981/article/details/6862764 ------------------------------------ ...
- 基于SSM之Mybatis接口实现增删改查(CRUD)功能
国庆已过,要安心的学习了. SSM框架以前做过基本的了解,相比于ssh它更为优秀. 现基于JAVA应用程序用Mybatis接口简单的实现CRUD功能: 基本结构: (PS:其实这个就是用的Mapper ...
- Mybatis接口编程原理分析(二)
在上一篇博客中 Mybatis接口编程原理分析(一)中我们介绍了MapperProxyFactory和MapperProxy,接下来我们要介绍的是MapperMethod MapperMethod:它 ...
- Mybatis 接口代理的实现(BeanDefinitionRegistryPostProcessor+FactoryBean)
相信在开发中,尤其是mybatis 配置操作中,我们只需要提供一个mapper 接口,然后注入到service 中,就可以进行调用. 按我们的一般逻辑来说,我们并没有进行接口的实现,应该会报空指针异常 ...
- mybatis中String参数的传递
mybatis中String参数的传递 Keywords selectKeywords(@Param("key") String key); 可以在mapper方法的参数钱添加 @ ...
- Mybatis调用数据库的存储过程和方法
转载. https://blog.csdn.net/ml0228123/article/details/81002258 上次的项目,要求我用java代码调用存储过程,折腾了好久.最后总算成功了 ...
- mybatis 接口绑定 和 动态SQL
一.MyBatis 接口绑定方案及多参数传递 1.作用:实现创建一个接口后把mapper.xml由mybatis生成接口的实现类,通过调用接口对象就可以获取mapper.xml中编写的sql 2.后面 ...
随机推荐
- 指定Qt程序运行的style,比如fusion(以前没见过QStyleFactory)
转载请注明文章:指定Qt程序运行的style,比如fusion 出处:多客博图 代码很简单,如下: #include <QtWidgets/QApplication> #include ...
- Win10《芒果TV》商店版更新v3.1.4.0:适配Xbox手柄B键后退、手机支持暗色主题不伤眼
在双十一全球剁手节.光棍节欢庆之际,<芒果TV>UWP版迅速更新v3.1.4版,适配Xbox手柄B键全局后退,支持手机切换暗色主题,优化并解决启动卡顿等问题. 芒果TV UWP V3.1. ...
- 什么是DirectShow?
DirectShow是微软出的用于流媒体开发的开发包.开发语言是C++,没提供C#接口的调用方式.
- 因内存释放而引发的中断问题,dll中new的内存释放问题
调试程序,每次关闭一个界面就会弹出中断错误. 为了确认这个问题,我将出现问题那一段代码中的函数一个个屏蔽,以此来确认到底哪个函数出现问题,缩小范围: 最后我发现,只要屏蔽掉checkIfFingerI ...
- UWP-消息提示(仿Android)
原文:UWP-消息提示(仿Android) 在UWP中的消息提示框(一)中介绍了一些常见的需要用户主动去干涉的一些消息提示框,接下来打算聊聊不需要用户主动去干涉的一些消息提示框.效果就是像双击退出的那 ...
- 项目中NHibernate问题及解决方法
1.用户代码未处理 NHibernate.QueryException Message=Type mismatch in NHibernate.Criterion.SimpleExpressio ...
- Delphi 编写ActiveX控件(OCX控件)的知识和样例(有详细步骤)
一.ActiveX应用情况简介: ActiveX控件也就是一般所说的OCX控件,它是 ActiveX技术的一部分.ActiveX是微软公司推出的基于组件对象模型COM的技术,包括对Windows 32 ...
- C#6.0一些特性
1.自动属性初始化的改进 声明属性时可以直接进行初始化 public int id {get;set;}=10; 自动属性是省去了get和set内部的过程,而直接用set;get;这样的语句代替, 把 ...
- Standard C 语言标准函数库速查(彩色的函数列表,十分清楚)
Standard C 语言标准函数库速查 (Cheat Sheet) wcstombs 函数说明 #include <stdlib.h> size_t mbstowcs(wchar_t * ...
- 纯CSS3创意loading文字特效
快速使用Romanysoft LAB的技术实现 HTML 开发Mac OS App,并销售到苹果应用商店中. <HTML开发Mac OS App 视频教程> 土豆网同步更新:http: ...