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 ...
最新文章
- linux名词解释目录文件,linux的常识及术语解释
- Windows phone 8 学习笔记
- HDU 1180 诡异的楼梯
- java 内联调用深度_Java中内联虚拟方法调用的性能
- python居中对齐符号怎么打_Python字符串居中对齐
- tomcat人数限制_Tomcat 七最大并发连接数的正确修改方法
- ARP,这个隐匿在计网背后的男人
- 看完就懂webpack打包原理
- android系统 wifi,Android系统wifi分析-手动连接过程
- 向iis注册framework命令
- Mac局域网本地库server, CornerStone使用
- SlickEdit使用 .
- Android开发之设置铃声
- linux抓包出现nbns,如何用抓包分析工具定位感染主机和用户
- 爱荷华大学计算机科学专业,2015 U.S News计算机科学专业排名(不知道有没有伙伴在找)...
- mysql++裸盘_绑定裸设备(查看裸设备的大小)
- 究竟哪些语句是属于DDL?
- 爪哇国新游记之十七----肺腑之言
- Cortex-M4操作模式
- 视频编辑,如何截取视频片段
热门文章
- java计算机毕业设计HTML5果蔬经营平台MyBatis+系统+LW文档+源码+调试部署
- 网络广告术语CPC、CPM、PPS、CPA、CTR、CPL
- 智慧社区APP引领2016生活服务新趋势
- 基于自适应调整权重和搜索策略的鲸鱼优化算法-附代码
- 使用 ssm 实现登录日志记录
- 林轩田之机器学习课程笔记(when can machines learn之learning problem)(32之1)
- linux网卡灯不亮怎么处理,电脑网卡灯不亮怎么办 电脑网卡灯不亮解决方法介绍【详解】...
- 使用mac端Charles4.0 抓取App接口(配置篇)
- Mac 上 设置 语音呼出Siri
- Utools 提高编程效率的工具集,号称小工具之王