• org.apache.ibatis.annotations包下有着 mybatis 所有的注解,让我们一文打尽!

1 @Mapper

MyBatis映射器的标记接口

从mybatis3.4.0开始加入了@Mapper注解,目的就是为了不再写mapper映射文件
但是源码中并没有对于这个注解的详细解释

添加了@Mapper注解之后这个接口在编译时会生成相应的实现类

需要注意的是:这个接口中不可以定义同名的方法,因为会生成相同的id

  • 也就是说这个接口是不支持重载的

对于多个参数来说,每个参数之前都要加上@Param注解,
* 要不然会找不到对应的参数进而报错

2 @Param

mybatis中使用@param和不使用区别

使用@Param注解

当以下面的方式进行写SQL语句时:

@Select("select column from table where userid = #{userid} ")
public int selectColumn(int userid);

当你使用了使用@Param注解来声明参数时,如果使用 #{} 或 ${} 的方式都可以。

@Select("select column from table where userid = ${userid} ")
public int selectColumn(@Param("userid") int userid);

当你不使用@Param注解来声明参数时,必须使用使用 #{}方式。如果使用 ${} 的方式,会报错。

@Select("select column from table where userid = ${userid} ")
public int selectColumn(@Param("userid") int userid);

不使用@Param注解

不使用@Param注解时,参数只能有一个,并且是Javabean。在SQL语句里可以引用JavaBean的属性,而且只能引用JavaBean的属性。

// 这里id是user的属性@Select("SELECT * from Table where id = ${id}")
Enchashment selectUserById(User user);

spring和mybatis中@param使用区别

spring中@param

/*** 查询指定用户和企业关联有没有配置角色* @param businessId  memberId* @return*/int selectRoleCount(@Param("businessId") Integer businessId,@Param("memberId") Long memberId); 123456

mybatis中的param

/*** 查询指定用户和企业关联有没有配置角色* @param businessId memberId* @return*/int selectRoleCount(@Param("businessId") Integer businessId,@Param("memberId") Long memberId); 123456

从表面上看,两种并没有区别,但是在xml文件中使用的时候是有区别的
Spring中的@param在xml需要如下这样引用变量

<select id="selectRoleCount" resultType="java.lang.Integer" >select count(tbm.id)    from t_business_member_relation tbm    where tbm.business_id = #{0,jdbcType=INTEGER}and tbm.member_id = #{1,jdbcType=INTEGER}and tbm.role_business_id is not null
</select>

是根据参数的顺序来取值的,并且从0开始。而在mybatis @param在xml中则是如下这样引用变量的

<select id="selectRoleCount" resultType="java.lang.Integer" >    select count(tbm.id)    from t_business_member_relation tbm    where tbm.business_id = #{businessId,jdbcType=INTEGER}and tbm.member_id = #{memberId,jdbcType=INTEGER}and tbm.role_business_id is not null</select>

是通过参数名来引用的
注:如果Mapper.java文件中引用的是Spring的

org.springframework.data.repository.query.Param;1
但是Mapper.xml中使用的是mybatis 的用法,那么就会如下的错误

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter ‘businessId’ not found. Available parameters are [1, 0, param1, param2]1

参考

  • @Param注解

Java持久层框架MyBatis全注解详解相关推荐

  1. java持久层框架mybatis如何防止sql注入

    2019独角兽企业重金招聘Python工程师标准>>> sql注入大家都不陌生,是一种常见的攻击方式,攻击者在界面的表单信息或url上输入一些奇怪的sql片段,例如"or ...

  2. java持久层用文件_Java持久层框架MyBatis简单实例

    MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis .本文 ...

  3. mybatis(java持久层框架)

    mybatis java持久层框架 (对JDBC进行封装,并自动完成ORM操作) ORM框架是对象关系映射,一个对象与表中的一行数据一一对应,把对象持久化到数据库中. 我将会一步一步详细的创建一个完整 ...

  4. Java基础13:反射与注解详解

    Java基础13:反射与注解详解 什么是反射? 反射(Reflection)是Java 程序开发语言的特征之一,它允许运行中的 Java 程序获取自身的信息,并且可以操作类或对象的内部属性. Orac ...

  5. Java持久层框架之mybatis使用

    一.什么是框架,框架从何而来,为什么使用框架? 框架(framework): 1.是一系列jar包,其本质是对JDK功能的拓展.(jar包,jar:class文件的压缩包) 2.框架是一组程序的集合, ...

  6. Java数据持久层框架 MyBatis之背景知识一

    对于MyBatis的学习而言,最好去MyBatis的官方文档:http://www.mybatis.org/mybatis-3/zh/index.html 对于语言的学习而言,马上上手去编程,多多练习 ...

  7. SSM持久层框架MyBatis,看这一篇就够了

    前言: 此篇仅为个人初期学习笔记,如有错误,请xd们指正 你这么好看,还.... MyBatis 前言 一.MyBatis简介 二.搭建MyBatis项目 1. 开发环境 2. 创建maven工程 3 ...

  8. 优秀的持久层框架-Mybatis(上)

    文章目录 前言 一.MyBatis概述 1.1传统JDBC编程 1.2 mybatis的历史 1.3 mybatis是什么? 1.4如何使用? 1.5Mybatis架构 二. MyBatis环境搭建 ...

  9. Spring 从入门到精通 (二十) 持久层框架 MyBatis

    关键词:Spring | 整合 | 持久层 | MyBatis 本专栏通过理论和实践相结合,系统学习框架核心思想及简单原理,原创不易,如果觉得文章对你有帮助,点赞收藏支持博主 ✨ 目录 一.MyBat ...

最新文章

  1. 爱玛士关于爬虫的scrapy框架的心得
  2. Java NIO之选择器
  3. epoll和select的区别
  4. GitHub学生包的介绍与申请
  5. 422器件与lvds接收器的区别_SPI、I2C、UART三种串行总线的原理、区别
  6. BugkuCTF-MISC题blind_injection
  7. python是什么意思-python中class是什么意思
  8. sw如何缩放装配体_社团内训 | SW从入门到精通
  9. 工业互联网标识解析体系
  10. Windows热键注册原理
  11. (Note)阿克西斯ACASIS DT-3608双盘位硬盘阵列盒RAID设置
  12. 不用U盘安卓Linux系统,安卓Android-X86 安装教程 不使用U盘安装Androidx86教程
  13. Python栈的应用之二进制与十进制转换
  14. java的动物打一生肖,吉祥的动物是什么生肖 指哪个生肖 打一生肖
  15. 朱棣文2009年哈佛大学演讲:未来并非在劫难逃
  16. 屏幕录制一键截图工具 FastStone Capture 9.0 绿色便携中文版
  17. 将iPad作为Windows电脑副屏的几种方法
  18. CHI论文阅读(1)EmoGlass: an End-to-End AI-Enabled Wearable Platform for Enhancing Self-Awareness of Emoti
  19. GRNN神经网络学习笔记_matlab
  20. Tomcat 端口号的修改

热门文章

  1. 虚拟机部署各类系统(XP32位、win7、win2003、win2008、CentOs)、系统克隆
  2. 汇编程序:字符串加密
  3. linux查看存储标识符,linux 存储管理
  4. airpodspro窃听模式_AirPods pro通透模式什么原理?
  5. Oracle导入excel数据方法汇总
  6. 【蓝桥杯学习笔记】9. 解立方根——二分法+牛顿迭代法
  7. ant design 动态显示隐藏表头
  8. 在TeXShop中使用中文(for Mac OS)
  9. 【3】数据筛选2 - requests
  10. android观察者模式容器联动,观察者模式(触发联动)