• 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. linux名词解释目录文件,linux的常识及术语解释
  2. Windows phone 8 学习笔记
  3. HDU 1180 诡异的楼梯
  4. java 内联调用深度_Java中内联虚拟方法调用的性能
  5. python居中对齐符号怎么打_Python字符串居中对齐
  6. tomcat人数限制_Tomcat 七最大并发连接数的正确修改方法
  7. ARP,这个隐匿在计网背后的男人
  8. 看完就懂webpack打包原理
  9. android系统 wifi,Android系统wifi分析-手动连接过程
  10. 向iis注册framework命令
  11. Mac局域网本地库server, CornerStone使用
  12. SlickEdit使用 .
  13. Android开发之设置铃声
  14. linux抓包出现nbns,如何用抓包分析工具定位感染主机和用户
  15. 爱荷华大学计算机科学专业,2015 U.S News计算机科学专业排名(不知道有没有伙伴在找)...
  16. mysql++裸盘_绑定裸设备(查看裸设备的大小)
  17. 究竟哪些语句是属于DDL?
  18. 爪哇国新游记之十七----肺腑之言
  19. Cortex-M4操作模式
  20. 视频编辑,如何截取视频片段

热门文章

  1. java计算机毕业设计HTML5果蔬经营平台MyBatis+系统+LW文档+源码+调试部署
  2. 网络广告术语CPC、CPM、PPS、CPA、CTR、CPL
  3. 智慧社区APP引领2016生活服务新趋势
  4. 基于自适应调整权重和搜索策略的鲸鱼优化算法-附代码
  5. 使用 ssm 实现登录日志记录
  6. 林轩田之机器学习课程笔记(when can machines learn之learning problem)(32之1)
  7. linux网卡灯不亮怎么处理,电脑网卡灯不亮怎么办 电脑网卡灯不亮解决方法介绍【详解】...
  8. 使用mac端Charles4.0 抓取App接口(配置篇)
  9. Mac 上 设置 语音呼出Siri
  10. Utools 提高编程效率的工具集,号称小工具之王