mybatis传参——parameterType
2019独角兽企业重金招聘Python工程师标准>>>
Mybatis传参
可以使用各种java基本数据类型,包括int,String,Date等
用基本数据类型传参,只能传入一个参数。通过#{参数名}即可获取传入的参数值。
可以使用Java实体类、Map
通过#{java实体类的属性名},#{map的KeyName}即可获取传入的值。
传入一个Collection
可以传递一个List实例或者一个数组作为参数对象传给MyBatis,当你这么做的时候,MyBatis会自动将它包装在一个Map中,如果传入的是List,将使用"list"作为键,如果传入的是数组,将以"array"作为键。
要迭代一个集合,使用foreach,它可以指定一个集合,声明集合项和索引变量,也可以指定开放和关闭的字符串、分隔符。
注意:当想要传入collection时,并不能直接传入。因为Mybatis生成SQL语句遍历list时,是需要用到get()方法的,而Collection中没有get方法,参见MyBatis官方文档中“动态SQL”。
对象类型中的集合属性
List<User> selectByExample(UserExample example);
<where>
<foreach collection="oredCriteria" item="criteria" separator="or" >
<if test="criteria.valid" >
此时collection="oredCriteria"会找到入参example这个非集合对象的oredCriteria属性,此属性是一个集合
#示例
参数为list
public List<StudentEntity> getStudentListByClassIds_foreach_list(List<String> classIds);
<select id="getStudentByClassIds_foreach_list" resultMap="resultMap_studentEntity">SELECT ST.STUDENT_ID,ST.STUDENT_NAME,ST.STUDENT_SEX,ST.STUDENT_BIRTHDAY,ST.STUDENT_PHOTO,ST.CLASS_ID,ST.PLACE_IDFROM STUDENT_TBL STWHERE ST.CLASS_ID IN<foreach collection = "list" item="classIdList" open="(" separator="," close=")">#{classIdList}</foreach></select>
collection="list"这是默认写法,入参为数组Integer[] idarr,则用collection="array"。MyBatis会默认找到那个list属性。
@Test
public void test7_2_foreach() { ArrayList<String> classIdList = new ArrayList<String>(); classIdList.add("20000001"); classIdList.add("20000002"); List<StudentEntity> list = this.dynamicSqlMapper.getStudentListByClassIds_foreach_list(classIdList); for (StudentEntity e : list) { System.out.println(e.toString()); }
}
JAVA实体类型参数示例:
<select id="selectTeacher" parameterType="com.myapp.domain.Teacher" resultType="com.myapp.domain.Teacher"> select * from Teacher where c_id=#{id}
</select>
Map参数示例:
<select id="findTeacherByPage"resultMap="supervisorResultMap" parameterType="java.util.Map">
select * from teacher where title like #{title} order by ${sort} ${dir} limit #{start},#{limit}
</select>
public List<Teacher> findTeacherByPage(Map<String, Object> map);
Map<String, Object> params = new HashMap<String, Object>();
//以name字段升序排序,
params.put("sort", "name");
params.put("dir", "asc");
//查询结果从第0条开始,查询2条记录
params.put("start", 0);
params.put("limit", 2);
//查询职称为教授或副教授的教师
params.put("title", "%教授");
此时入参map的key相当于一个object的属性名,value相当于属性值
传入多个参数
使用@Param注解。
示例
public List<Teacher> selectTeacher(@Param(value="id") String id,@Param(value="sex") String sex);
<select id="selectTeacher" resultType="com.myapp.domain.Teacher"> select * from Teacher where c_id=#{id} and sex=#{sex}
</select>
List<Teacher> tList = teacherMapper.selectTeacher("2","男");
转载于:https://my.oschina.net/u/3672057/blog/1547221
mybatis传参——parameterType相关推荐
- mybatis传入数组怎么写_推荐的MyBatis传参方式List、数组等
MyBatis 推荐的传参方式 如果要详细的学习 MyBatis,推荐看这个教程:https://www.w3cschool.cn/mybatis/ 1. 单个参数//接口方法int getAgeBy ...
- mybatis传参问题总结
一. 传入单个参数 当传入的是单个参数时,方法中的参数名和sql语句中参数名一致即可 List<User> getUser(int id);<select id="getU ...
- mybatis 传参是 liststring 的注意事项
<!--付款 批量 修改账单状态--><update id="editbillpayALL" parameterType="java.util.List ...
- mybatis传参为map的写法
接口方法是这样的 XxlJobInfo getInfoByParameters(@Param("param") Map<String, String> param); ...
- MyBatis框架 传参、事务、缓存(二级)
传参 在mapper.xml文件中的标签中的parameterType可以可控制参数 传入参数的方法: sSession.select("虚拟包.id", 参数列表); SQL语句 ...
- MyBatis复习(四):#{}占位符与SQL传参
参数类型 1. MyBatis的parameterType参数类型可以是基本数据类型.String.包装类型.java.util.Map.java.util.LinkHashMapd等 ${}和#{} ...
- mybatis多对一,一对一,多对多resultMap映射,pojo映射,传参集合,封装的对象传参
普通映射: <!-- 使用resultMap解决列名和属性名不一致的情况 --><!-- 配置一个resultMap映射列和属性 --><resultMap type=& ...
- mybatis入门学习(九) -DB环境切换、使用注解、事务提交、获取自增ID、多参数传参、鉴别器、内置参数、批量写入、Oracle字段无法插入 null 值
一.多数据库环境切换 1.config配置: <!-- default="mydemo" 指定连接的数据库 --><environments default=&q ...
- 在Mybatis中使用万能的Map传参,实现增删改查
在编程中,有可能遇到我们的实体类或者数据库中表的字段或参数过多的情况,那这时候用Map传参是比较理想的选择. Map的特性是键值对应的,只要确定了一个键key,那么值value可以是任何的数据,这样就 ...
- mybatis java传参_[Java教程]Mybatis批量和传参
[Java教程]Mybatis批量和传参 0 2014-07-31 04:00:12 MyBatis中批量插入 方法一: resultType="java.lang.String" ...
最新文章
- Numpy学习笔记(下篇)
- nagios自定义监控API插件
- FPGA之道(65)代码中的约束信息(二)乘法器的相关约束
- 细谈 对象的初始化过程------内存中的实现过程?
- premiere cs 下载
- DCMTK:存储服务类用户(C-STORE操作)
- Liferay –简单主题开发
- Linux查看设置系统时区
- Ts_半分查找猜数字游戏(初始版),
- sentos7查看网络配置_论各厂商设备之基础常用配置命令集
- Android使用ksoap2调用C#中的webservice实现图像上传
- 试着用java实现DNS(一)——DatagramSocket, DatagramPacket, Message
- Django中应用celery
- HDMI/DVI分配器芯片
- 从命令行安装Deb文件的5种方法
- TDP158RSBR 6-Gbps 转接驱动器,兼容HDMI2.0
- Worktile 中百万级实时消息推送服务的实现
- MPLAB 创建新项目
- 网络1711班 C语言第一次作业批改总结
- 计算机专业要不要读研?
热门文章
- Quartz.net官方开发指南系列篇
- 谈谈学完Asp.net 中的自定义控件后的感受
- 基于Dialog的MFC程序在启动时隐藏为托盘程序(三)
- [转]缓存穿透与缓存雪崩
- P3368 【模板】树状数组 2
- Sublime下MarkDown插件实现编辑和实时预览并转换成HTML格式
- Linq转换操作之OfType,Cast,AsEnumerable,ToLookup源码分析
- 【转】Python 2.x和Python3.x的区别
- 二、Python开发语音识别
- CSS Reset的相关概念及实例