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相关推荐

  1. mybatis传入数组怎么写_推荐的MyBatis传参方式List、数组等

    MyBatis 推荐的传参方式 如果要详细的学习 MyBatis,推荐看这个教程:https://www.w3cschool.cn/mybatis/ 1. 单个参数//接口方法int getAgeBy ...

  2. mybatis传参问题总结

    一. 传入单个参数 当传入的是单个参数时,方法中的参数名和sql语句中参数名一致即可 List<User> getUser(int id);<select id="getU ...

  3. mybatis 传参是 liststring 的注意事项

    <!--付款 批量 修改账单状态--><update id="editbillpayALL" parameterType="java.util.List ...

  4. mybatis传参为map的写法

    接口方法是这样的 XxlJobInfo getInfoByParameters(@Param("param") Map<String, String> param); ...

  5. MyBatis框架 传参、事务、缓存(二级)

    传参 在mapper.xml文件中的标签中的parameterType可以可控制参数 传入参数的方法: sSession.select("虚拟包.id", 参数列表); SQL语句 ...

  6. MyBatis复习(四):#{}占位符与SQL传参

    参数类型 1. MyBatis的parameterType参数类型可以是基本数据类型.String.包装类型.java.util.Map.java.util.LinkHashMapd等 ${}和#{} ...

  7. mybatis多对一,一对一,多对多resultMap映射,pojo映射,传参集合,封装的对象传参

    普通映射: <!-- 使用resultMap解决列名和属性名不一致的情况 --><!-- 配置一个resultMap映射列和属性 --><resultMap type=& ...

  8. mybatis入门学习(九) -DB环境切换、使用注解、事务提交、获取自增ID、多参数传参、鉴别器、内置参数、批量写入、Oracle字段无法插入 null 值

    一.多数据库环境切换 1.config配置: <!-- default="mydemo" 指定连接的数据库 --><environments default=&q ...

  9. 在Mybatis中使用万能的Map传参,实现增删改查

    在编程中,有可能遇到我们的实体类或者数据库中表的字段或参数过多的情况,那这时候用Map传参是比较理想的选择. Map的特性是键值对应的,只要确定了一个键key,那么值value可以是任何的数据,这样就 ...

  10. mybatis java传参_[Java教程]Mybatis批量和传参

    [Java教程]Mybatis批量和传参 0 2014-07-31 04:00:12 MyBatis中批量插入 方法一: resultType="java.lang.String" ...

最新文章

  1. Numpy学习笔记(下篇)
  2. nagios自定义监控API插件
  3. FPGA之道(65)代码中的约束信息(二)乘法器的相关约束
  4. 细谈 对象的初始化过程------内存中的实现过程?
  5. premiere cs 下载
  6. DCMTK:存储服务类用户(C-STORE操作)
  7. Liferay –简单主题开发
  8. Linux查看设置系统时区
  9. Ts_半分查找猜数字游戏(初始版),
  10. sentos7查看网络配置_论各厂商设备之基础常用配置命令集
  11. Android使用ksoap2调用C#中的webservice实现图像上传
  12. 试着用java实现DNS(一)——DatagramSocket, DatagramPacket, Message
  13. Django中应用celery
  14. HDMI/DVI分配器芯片
  15. 从命令行安装Deb文件的5种方法
  16. TDP158RSBR 6-Gbps 转接驱动器,兼容HDMI2.0
  17. Worktile 中百万级实时消息推送服务的实现
  18. MPLAB 创建新项目
  19. 网络1711班 C语言第一次作业批改总结
  20. 计算机专业要不要读研?

热门文章

  1. Quartz.net官方开发指南系列篇
  2. 谈谈学完Asp.net 中的自定义控件后的感受
  3. 基于Dialog的MFC程序在启动时隐藏为托盘程序(三)
  4. [转]缓存穿透与缓存雪崩
  5. P3368 【模板】树状数组 2
  6. Sublime下MarkDown插件实现编辑和实时预览并转换成HTML格式
  7. Linq转换操作之OfType,Cast,AsEnumerable,ToLookup源码分析
  8. 【转】Python 2.x和Python3.x的区别
  9. 二、Python开发语音识别
  10. CSS Reset的相关概念及实例