Mybatis注解学习记录
Mybatis注解使用
- 1. SQL语句映射
- 1.1 @Select注解:实现查询功能
- 1.1.1 用法
- 1.2 @Insert注解:实现新增功能
- 1.2.1 用法
- 1.3 @Update注解:实现更新功能
- 1.3.1 用法
- 1.4 @Delete注解:实现删除功能
- 1.4.1 用法
- 2. 结果集映射
- 2.1 @Results注解:结果集映射关系数组
- 2.2 @Result注解
- 2.3 @ResultMap
- 3. 关系映射
- 3.1 @One注解:一对一的关系映射
- 3.1 @Many注解:一对多的关系映射
- 参考文档
Mybatis常用注解可以分为三大类:SQL语句映射、结果集映射、关系映射。
1. SQL语句映射
1.1 @Select注解:实现查询功能
1.1.1 用法
- 在Mapper接口文件中导入
@Select注解
import org.apache.ibatis.annotations.Select;
- 在
@Select()
注解的括号中书写SQL语句
@Select("SELECT id, name FROM users WHERE id = #{id}")
User selectById(int id);
该注解通常结合@Results
注解使用。
当数据库字段名与对应实体类的属性名不一致时,会导致实体类中该属性的属性值为null。
当SQL中需要用到其它标签,如<where>
标签时,需要将SQL语句包含在<script></script>
标签中。
1.2 @Insert注解:实现新增功能
1.2.1 用法
- 在Mapper接口文件中导入
@Insert注解
import org.apache.ibatis.annotations.Insert;
- 在
@Insert()注解
的括号中书写SQL语句
/*** 将信息插入数据表* @param user User实体类示例* @return int 当前SQL语句影响的条数*/
@Insert("INSERT INTO users (id, name) VALUES(#{id}, #{name})")
int insert(User user);
1.3 @Update注解:实现更新功能
1.3.1 用法
@Update("UPDATE users SET name = #{name} WHERE id = #{id}")
int update(User user);
1.4 @Delete注解:实现删除功能
1.4.1 用法
@Delete("DELETE FROM users WHERE id = #{id}")
int deleteById(int id);
2. 结果集映射
@Result,@Results,@ResultMap是结果集映射的三大注解。
2.1 @Results注解:结果集映射关系数组
@Results()
用来表示结果集映射关系数组,其中id
为当前结果集的唯一标志,value
值为结果集映射关系数组,在其中使用@Result
注解来指定数据库字段名称与实体类属性名称之间的映射关系。
2.2 @Result注解
@Result()
注解用来指定数据库字段名称与实体类属性名称之间的映射关系,其中column指定数据库字段的名称,property指定实体类属性的名称,jdbcType指定数据库字段类型,id
值为true表示该字段为主键,默认为false。
2.3 @ResultMap
@ResultMap
注解用来引用@Results
注解声明的映射结果集数组,提高代码复用性。
声明结果集映射关系代码:
@Select({"select id, name, class_id from student"})
@Results(id="studentMap", value={@Result(column="id", property="id", jdbcType=JdbcType.INTEGER, id=true),@Result(column="name", property="name", jdbcType=JdbcType.VARCHAR),@Result(column="class_id ", property="classId", jdbcType=JdbcType.INTEGER)
})
List<Student> selectAll();
引用结果集映射关系代码:
@Select({"select id, name, class_id from student where id = #{id}"})
@ResultMap(value="studentMap")
Student selectById(integer id);
3. 关系映射
3.1 @One注解:一对一的关系映射
@One
注解用于表示一对一的关系映射。
3.1 @Many注解:一对多的关系映射
@Many
注解用于表示一对多的关系映射。
示例代码如下:
@Select("select USER_NO, USER_NAME, USER_SEX from SYS_USER where USER_NO = #{userNo}")
@Results({@Result(column = "USER_NO", property = "userNo", jdbcType = JdbcType.VARCHAR),@Result(column = "USER_NAME", property = "userName", jdbcType = JdbcType.VARCHAR),@Result(column = "USER_SEX", property = "userSex", jdbcType = JdbcType.VARCHAR),@Result(column = "USER_NO", property = "roleList", many = @Many(select = "com.usercenter.mapper.SysUserRoleMapper.qryUserRoleByUserNo")),
})
SysUserPO qrySysUserDetail(String userNo);
参考文档
- Mybatis常用11种注解:http://www.mybatis.cn/archives/739.html
—— END ——
Mybatis注解学习记录相关推荐
- Java注解学习记录(反射也能实现ButterKnife)
文章目录 什么是注解(Annotation) 注解有什么用 注解怎么用 注解关键字 @interface 注解属性的数据类型 元注解 @Retention @Target @Documented @I ...
- springboot+mybatis plus学习记录+三层架构理解
仅作为本人学习的一个记录,可能有的说法或者用法不准确 三层架构 三层架构就是为了符合"高内聚,低耦合"思想,把各个功能模块划分为表示层(UI).业务逻辑层(BLL)和数据访问层(D ...
- MyBatis学习记录
前言 本人学习内容,跟随尚硅谷2022版MyBatis课程学习 文中相当一部分代码和注释来自尚硅谷资料 本文用以记录自身学习和经验总结 课程链接 MyBatis项目搭建(更标准,更好用) 1.创建Ma ...
- mybatis注解记录
目录 mybatis注解有感 1.了解 2.利用注解开发 3.分析 4.mybatis执行过程 mybatis注解有感 1.了解 mybatis最初配置信息是基于 XML ,映射语句(SQL)也是定义 ...
- Spring Boot学习笔记----mybatis注解(一)
之前使用jpa,感觉不错.不用涉及sql便可完成对数据库的增删改查.但项目组要求使用mybatis进行开发,也就用了.两者的区别在于,后者需要进行SQL语句的注解绑定. 网上搜到的mybatis资料, ...
- springboot @cacheable不起作用_Springboot学习记录13 使用缓存:整合redis
本学习记录的代码,部分参考自gitee码云的如下工程.这个工程有详尽的Spingboot1.x教程.鸣谢! https://gitee.com/didispace/SpringBoot-Learnin ...
- Java EE——Mybatis 框架学习
文章目录 一.MyBatis 框架概述: 二. Mybatis 框架入门 三. 基于代理 Dao 实现 CRUD 操作 1.根据 ID 查询: 2.保存操作: 3.用户更新: 4.用户删除: 四.My ...
- mybatis自己学习的一些总结
以前一直在使用spring的JDBCTEMPLATE和hibernate做项目:两个都还不错,spring的jdbctemplate用起来比较麻烦,虽然很简单.而hibernate呢,用起来很好用,很 ...
- SSM框架入门学习记录
SSM框架入门学习记录 //项目结构 在这里插入图片描述 在这里插入图片描述 包名多种多样,命名习惯问题. 流程:Controller(接受请求)-->Service(biz)(bl)(写业务函 ...
最新文章
- springMvc+mybatis+spring 整合 包涵整合activiti 基于maven
- lamp整合三连发(2)
- 事务管理最佳实践全面解析
- 如何解决win8系统下卸载软件出现错误代码为2502和2503的问题
- 投资狂人陈一舟:哪里火爆投哪里
- 1.6 动态数据抓取 -- PyQuery详解
- 论文浅尝 | Distant Supervision for Relation Extraction
- 网络KPI异常检测之时序分解算法
- java tts引擎_让Java说话-用Java实现语音引擎
- echarts环形图
- mysql 查询的关键词的执行顺序
- MapReduce实现QQ好友推荐
- 斯坦福公开课一键下载
- Linux(ubuntu)内容整理(常用命令)
- 中创向心力:如何把思想政治教育贯穿职业教育全过程?
- 提高网站关键词排名优化技巧!
- 关于机器学习特征选择的方法总结
- iphone5s怎么取消iphone系统更新如何关闭系统更新提醒
- 【OpenCV 例程200篇】205. 调节色彩平衡/饱和度/明度
- 算法细节系列(3):梯度下降法,牛顿法,拟牛顿法
热门文章
- python简说(十五)MD5加密
- 文件操作(ifstream、ofstream、fstream)
- .net erp(办公oa)开发平台架构之流程服务概要介绍
- 对联广告,带关闭,可以移动
- ubuntu设置securecrt串口权限
- 在 ASP.NET 中执行 URL 重写
- Windows10上使用VS2017编译MXNet源码操作步骤(C++)
- 【C++】C++11 STL算法(六):最小/最大操作(Minimum/maximum operations)、比较运算(Comparison operations)
- 系统dsn oracle,linux平台配置oracle odbc dsn的方法.docx
- mysql 查询结果转置_转置MySQL查询 – 需要将行放入列中