之前在Spring Boot中整合MyBatis时,采用了注解的配置方式,相信很多人还是比较喜欢这种优雅的方式的,也收到不少读者朋友的反馈和问题,主要集中于针对各种场景下注解如何使用,下面就对几种常见的情况举例说明用法。

传参方式

下面通过几种不同传参方式来实现前文中实现的插入操作。

使用@Param

在之前的整合示例中我们已经使用了这种最简单的传参方式,如下:

@Insert("INSERT INTO USER(NAME, AGE) VALUES(#{name}, #{age})")
int insert(@Param("name") String name, @Param("age") Integer age);

  

这种方式很好理解,@Param中定义的name对应了SQL中的#{name}age对应了SQL中的#{age}

使用Map

如下代码,通过Map对象来作为传递参数的容器:

@Insert("INSERT INTO USER(NAME, AGE) VALUES(#{name,jdbcType=VARCHAR}, #{age,jdbcType=INTEGER})")
int insertByMap(Map<String, Object> map);

  

对于Insert语句中需要的参数,我们只需要在map中填入同名的内容即可,具体如下面代码所示:

Map<String, Object> map = new HashMap<>();
map.put("name", "CCC");
map.put("age", 40);
userMapper.insertByMap(map);

  

使用对象

除了Map对象,我们也可直接使用普通的Java对象来作为查询条件的传参,比如我们可以直接使用User对象:

@Insert("INSERT INTO USER(NAME, AGE) VALUES(#{name}, #{age})")
int insertByUser(User user);

  

这样语句中的#{name}#{age}就分别对应了User对象中的nameage属性。

源码来源

最新文章

  1. [转载]C#读写txt文件的两种方法介绍
  2. Socket通讯
  3. [SharePoint] SharePoint 错误集 1
  4. 【JAVA与XML、dtd约束、Schema约束】
  5. soap request by afnetworking2.X/3.X
  6. Introducing shard translator
  7. BZOJ1029: [JSOI2007]建筑抢修(贪心)
  8. Android学习笔记⑦——UI组件的学习AdapterView相关1
  9. c# 判断点是否在区域内 点在区域内 在多边形内 判断
  10. Windows8.1下PHP环境配置(PHP5.6、Apache2.4、MySql5.6)
  11. uC/OS 的任务调度解析 (转)
  12. javascript中数组循环的方式
  13. Linux C 编程内存泄露检測工具(二):memwatch
  14. HTML——CSS的基础语法2
  15. Django—中间件
  16. Asp.Net MVC 利用ReflectedActionDescriptor判断Action返回类型
  17. 高斯消元 o(n^3) 取摸和不取摸
  18. js高级-作用域链
  19. UVA-10269 Adventure of Super Mario (dijkstra)
  20. requestAnimationFrame 定时器

热门文章

  1. pidof---找寻PID
  2. Java lesson16homework
  3. 数据库SQL优化分析查询语句总结
  4. webpack中使用html-webpack-plugin生成HTML文件并主动插入css和js引入标签
  5. vue入门:(模板语法与指令)
  6. 一种移动端position:absolute布局:
  7. ubuntu python3.5升级3.6后打不开终端的解决办法
  8. 网络初级篇之STP(BPDU详解与STP故障恢复)
  9. 3.NIO_Buffer缓冲区
  10. Linux基础命令01