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注解学习记录相关推荐

  1. Java注解学习记录(反射也能实现ButterKnife)

    文章目录 什么是注解(Annotation) 注解有什么用 注解怎么用 注解关键字 @interface 注解属性的数据类型 元注解 @Retention @Target @Documented @I ...

  2. springboot+mybatis plus学习记录+三层架构理解

    仅作为本人学习的一个记录,可能有的说法或者用法不准确 三层架构 三层架构就是为了符合"高内聚,低耦合"思想,把各个功能模块划分为表示层(UI).业务逻辑层(BLL)和数据访问层(D ...

  3. MyBatis学习记录

    前言 本人学习内容,跟随尚硅谷2022版MyBatis课程学习 文中相当一部分代码和注释来自尚硅谷资料 本文用以记录自身学习和经验总结 课程链接 MyBatis项目搭建(更标准,更好用) 1.创建Ma ...

  4. mybatis注解记录

    目录 mybatis注解有感 1.了解 2.利用注解开发 3.分析 4.mybatis执行过程 mybatis注解有感 1.了解 mybatis最初配置信息是基于 XML ,映射语句(SQL)也是定义 ...

  5. Spring Boot学习笔记----mybatis注解(一)

    之前使用jpa,感觉不错.不用涉及sql便可完成对数据库的增删改查.但项目组要求使用mybatis进行开发,也就用了.两者的区别在于,后者需要进行SQL语句的注解绑定. 网上搜到的mybatis资料, ...

  6. springboot @cacheable不起作用_Springboot学习记录13 使用缓存:整合redis

    本学习记录的代码,部分参考自gitee码云的如下工程.这个工程有详尽的Spingboot1.x教程.鸣谢! https://gitee.com/didispace/SpringBoot-Learnin ...

  7. Java EE——Mybatis 框架学习

    文章目录 一.MyBatis 框架概述: 二. Mybatis 框架入门 三. 基于代理 Dao 实现 CRUD 操作 1.根据 ID 查询: 2.保存操作: 3.用户更新: 4.用户删除: 四.My ...

  8. mybatis自己学习的一些总结

    以前一直在使用spring的JDBCTEMPLATE和hibernate做项目:两个都还不错,spring的jdbctemplate用起来比较麻烦,虽然很简单.而hibernate呢,用起来很好用,很 ...

  9. SSM框架入门学习记录

    SSM框架入门学习记录 //项目结构 在这里插入图片描述 在这里插入图片描述 包名多种多样,命名习惯问题. 流程:Controller(接受请求)-->Service(biz)(bl)(写业务函 ...

最新文章

  1. springMvc+mybatis+spring 整合 包涵整合activiti 基于maven
  2. lamp整合三连发(2)
  3. 事务管理最佳实践全面解析
  4. 如何解决win8系统下卸载软件出现错误代码为2502和2503的问题
  5. 投资狂人陈一舟:哪里火爆投哪里
  6. 1.6 动态数据抓取 -- PyQuery详解
  7. 论文浅尝 | Distant Supervision for Relation Extraction
  8. 网络KPI异常检测之时序分解算法
  9. java tts引擎_让Java说话-用Java实现语音引擎
  10. echarts环形图
  11. mysql 查询的关键词的执行顺序
  12. MapReduce实现QQ好友推荐
  13. 斯坦福公开课一键下载
  14. Linux(ubuntu)内容整理(常用命令)
  15. 中创向心力:如何把思想政治教育贯穿职业教育全过程?
  16. 提高网站关键词排名优化技巧!
  17. 关于机器学习特征选择的方法总结
  18. iphone5s怎么取消iphone系统更新如何关闭系统更新提醒
  19. 【OpenCV 例程200篇】205. 调节色彩平衡/饱和度/明度
  20. 算法细节系列(3):梯度下降法,牛顿法,拟牛顿法

热门文章

  1. python简说(十五)MD5加密
  2. 文件操作(ifstream、ofstream、fstream)
  3. .net erp(办公oa)开发平台架构之流程服务概要介绍
  4. 对联广告,带关闭,可以移动
  5. ubuntu设置securecrt串口权限
  6. 在 ASP.NET 中执行 URL 重写
  7. Windows10上使用VS2017编译MXNet源码操作步骤(C++)
  8. 【C++】C++11 STL算法(六):最小/最大操作(Minimum/maximum operations)、比较运算(Comparison operations)
  9. 系统dsn oracle,linux平台配置oracle odbc dsn的方法.docx
  10. mysql 查询结果转置_转置MySQL查询 – 需要将行放入列中