Java持久层框架MyBatis全注解详解
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全注解详解相关推荐
- java持久层框架mybatis如何防止sql注入
2019独角兽企业重金招聘Python工程师标准>>> sql注入大家都不陌生,是一种常见的攻击方式,攻击者在界面的表单信息或url上输入一些奇怪的sql片段,例如"or ...
- java持久层用文件_Java持久层框架MyBatis简单实例
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis .本文 ...
- mybatis(java持久层框架)
mybatis java持久层框架 (对JDBC进行封装,并自动完成ORM操作) ORM框架是对象关系映射,一个对象与表中的一行数据一一对应,把对象持久化到数据库中. 我将会一步一步详细的创建一个完整 ...
- Java基础13:反射与注解详解
Java基础13:反射与注解详解 什么是反射? 反射(Reflection)是Java 程序开发语言的特征之一,它允许运行中的 Java 程序获取自身的信息,并且可以操作类或对象的内部属性. Orac ...
- Java持久层框架之mybatis使用
一.什么是框架,框架从何而来,为什么使用框架? 框架(framework): 1.是一系列jar包,其本质是对JDK功能的拓展.(jar包,jar:class文件的压缩包) 2.框架是一组程序的集合, ...
- Java数据持久层框架 MyBatis之背景知识一
对于MyBatis的学习而言,最好去MyBatis的官方文档:http://www.mybatis.org/mybatis-3/zh/index.html 对于语言的学习而言,马上上手去编程,多多练习 ...
- SSM持久层框架MyBatis,看这一篇就够了
前言: 此篇仅为个人初期学习笔记,如有错误,请xd们指正 你这么好看,还.... MyBatis 前言 一.MyBatis简介 二.搭建MyBatis项目 1. 开发环境 2. 创建maven工程 3 ...
- 优秀的持久层框架-Mybatis(上)
文章目录 前言 一.MyBatis概述 1.1传统JDBC编程 1.2 mybatis的历史 1.3 mybatis是什么? 1.4如何使用? 1.5Mybatis架构 二. MyBatis环境搭建 ...
- Spring 从入门到精通 (二十) 持久层框架 MyBatis
关键词:Spring | 整合 | 持久层 | MyBatis 本专栏通过理论和实践相结合,系统学习框架核心思想及简单原理,原创不易,如果觉得文章对你有帮助,点赞收藏支持博主 ✨ 目录 一.MyBat ...
最新文章
- 爱玛士关于爬虫的scrapy框架的心得
- Java NIO之选择器
- epoll和select的区别
- GitHub学生包的介绍与申请
- 422器件与lvds接收器的区别_SPI、I2C、UART三种串行总线的原理、区别
- BugkuCTF-MISC题blind_injection
- python是什么意思-python中class是什么意思
- sw如何缩放装配体_社团内训 | SW从入门到精通
- 工业互联网标识解析体系
- Windows热键注册原理
- (Note)阿克西斯ACASIS DT-3608双盘位硬盘阵列盒RAID设置
- 不用U盘安卓Linux系统,安卓Android-X86 安装教程 不使用U盘安装Androidx86教程
- Python栈的应用之二进制与十进制转换
- java的动物打一生肖,吉祥的动物是什么生肖 指哪个生肖 打一生肖
- 朱棣文2009年哈佛大学演讲:未来并非在劫难逃
- 屏幕录制一键截图工具 FastStone Capture 9.0 绿色便携中文版
- 将iPad作为Windows电脑副屏的几种方法
- CHI论文阅读(1)EmoGlass: an End-to-End AI-Enabled Wearable Platform for Enhancing Self-Awareness of Emoti
- GRNN神经网络学习笔记_matlab
- Tomcat 端口号的修改
热门文章
- 虚拟机部署各类系统(XP32位、win7、win2003、win2008、CentOs)、系统克隆
- 汇编程序:字符串加密
- linux查看存储标识符,linux 存储管理
- airpodspro窃听模式_AirPods pro通透模式什么原理?
- Oracle导入excel数据方法汇总
- 【蓝桥杯学习笔记】9. 解立方根——二分法+牛顿迭代法
- ant design 动态显示隐藏表头
- 在TeXShop中使用中文(for Mac OS)
- 【3】数据筛选2 - requests
- android观察者模式容器联动,观察者模式(触发联动)