mybatis文件映射之当输入的参数不只一个时
时间:2022-07-23
本文章向大家介绍mybatis文件映射之当输入的参数不只一个时,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1、单个参数:mybatis不会做处理,可以用#{参数名}来取出参数。
2、多个参数:mybatis遇见多个参数会进行特殊处理,多个参数会被封装成员一个map,#{}就是从Map中获取指定的key的值。
public void getEmpByNameAndId(Integer id,String name);
此时在mapper.xml文件中可以这么获取参数的值:
<select id="getEmpByNameAndId" resultType="com.gong.mybatis.bean.Employee">
select id,last_name lastName,email,gender from tbl_employee where id = #{param1} and last_name=#{param2}
</select>
param1...n按顺序来写。
当然我们也可以在接口中的方法提前先指定参数的名称:
public Employee getEmpByNameAndId(@Param("id") Integer id,@Param("lastName") String name);
此时就可以这么使用:
<select id="getEmpByNameAndId" resultType="com.gong.mybatis.bean.Employee">
select id,last_name lastName,email,gender from tbl_employee where id = #{id} and last_name=#{lastName}
</select>
3、当输入的参数正好是业务逻辑的数据模型,我们就可以直接传入pojo,通过#{属性名}取出pojo的属性值。
4、如果多个参数不是业务逻辑的数据,如果没有对应的pojo,为了方便,我们可以传入map:
public void getEmpByMap(Map<String,Object> map);
在mapper.xml文件中:
<select id="getEmpByMap" resultType="com.gong.mybatis.bean.Employee">
select id,last_name lastName,email,gender from tbl_employee where id = #{id} and last_name=#{lastName}
</select>
使用的时候可以这么用:
public SqlSessionFactory getSqlSessionFactory() throws IOException {
String resource = "mybatis-config.xml";
InputStream is = Resources.getResourceAsStream(resource);
return new SqlSessionFactoryBuilder().build(is);
}
SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
//不会自动提交数据
SqlSession openSession = sqlSessionFactory.openSession();
EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
Map<String,Object> map = new HashMap<>();
map.put("id",1);
map.put("lastName","xiximayou");
Employee employee = mapper.getEmpByMap(map);
5、如果多个参数不是数据模型但是需要经常使用到,那么可以自定义TO(Transfer Object)数据传输对象,比如在分页时一般会有:
Page{
int index;
int size;
}
6、如果是Collection(List、Set)类型或者是数组,也会特殊处理,把传入的list或者数组封装在map中:
public void getEmpByIds(List<Integer> ids);
如果传入的是List,可以这么获取值:
#{list[0]}
- 浅谈神经机器翻译
- 窃取Facebook用户信息:利用Android同源策略漏洞的恶意应用被发现
- 关于React Native 安卓首屏白屏优化
- 浅谈spring security 403机制一、无权限访问二、匿名访问三、有权限访问原因机制指定AccessDeniedHandler指定error-page情景原因结论
- Python之numpy数组学习(二)
- Intent 属性详解(上)
- 复仇行动:Notepad++官网被圣战组织黑了
- 四大组件的纽带——Intent
- 利用HTC One漏洞破解手机PIN密码
- Android NDk环境配置
- 谷歌再曝Windows8.1漏洞,微软怒了
- Python机器学习的生态系统
- TP-link TL-WR840N系列路由器存在CSRF漏洞,可修改任意配置(含POC测试过程)
- JavaScript严格模式
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- JavaScript 技术篇-JSON字符串在线快速格式化查看实例演示,json.cn网址格式化json字符串
- Python 技术篇-含中文编码的代码运行方法,(unicode error) ‘utf-8‘ codec can‘t decode问题原因及解决方法
- Spring Boot Actuators
- 用图机器学习探索 A 股个股相关性变化
- Python 技术篇-连接oracle数据库并执行sql语句实例演示,python连接oracle数据库oci详细配置方法
- MySQL 技术篇-mysql数据库的安装、配置与使用实例演示
- JavaScript 技术篇-js代码获取当前操作系统信息、浏览器版本信息实例演示,windows NT版本对照表
- Oracle 数据库impdp导入数据库版本和dmp数据库文件版本不匹配问题解决方法,ORA-39142版本号不兼容、ORA-39000转储文件说明错误解决方法
- 实践总结:基于Kbone使用React同构开发小程序
- BAT 批处理命令 - 实现输出当前文件夹下的所有文件夹名的功能实例演示
- Python+Selenium 自动化-指定chrome驱动运行selenium实例演示,运行指定位置下的浏览器驱动
- Linux 命令查找指定文件夹下符合查询条件的文件和文件夹实例演示
- 用Python实现一个最新QQ办公版(TIM)的登录界面
- Oracle 数据库直接执行本地sql文件、sql脚本实例演示
- Oracle 数据库利用回收站恢复删除的表实例演示