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 ——
相关文章:

路由和交换机工作原理
路由器与交换机的工作原理 计算机网络往往由许多种不同类型的网络互连连接而成。如果几个计算机网络只是在物理上连接在一起,它们之间并不能进行通信,那么这种“互连”并没有什么实际意义。因此通常在谈到“互连”时,就已经暗示这些相互连接的…

嵌套选项卡自动播放
HTML <div class"box" id"box"><ul class"top" id"top"><li class"fl">专题</li><li class"fl">视频</li></ul><div class"clearFix" id"cont"…

Facebook 与 Google 正在主导在线身份验证市场
OpenID 公司 JanRain 的一项研究发现,用户在第三方网站进行身份验证时,最喜欢使用 Google 和 Facebook 的身份验证服务。Facebook 的验证服务 在媒体, 零售,技术等领域略微领先,而 JanRain 的17万份客户数据显示&#…

WIN2K/XP/2003 + APACHE + ASP + PHP + MYSQL 的简易实现
至目前总算完成了WIN2K/XP/2003 APACHE ASP PHP MYSQL这样一个建站项目,回过头来仔细想想也并不复杂。只是经过了反复的安装、卸载、研究、测试带找资料。真正的步骤却也没什么难的,但如果让你从头研究可能也是一件很头痛的事情了!所以打…

.net 去除特殊字符
str Regex.Replace(str, "<script[^>]*?>.*?</script>", "", RegexOptions.IgnoreCase); //str为需要校验的字符 str Regex.Replace(str, "[~#$%^&\*()_\{}\|<>\/\\\[\]]", "", RegexOptions.IgnoreCase…

为TypeScript项目生成API文档
为TypeScript项目生成文档 使用typedoc为TypeScript项目生成API文档。 1. 使用typedoc生成HTML文档 需要安装 typedoc。 npm i typedoc可以通过命令行参数指定配置信息,也可以通过加载配置文件的方式加载配置信息。 本项目中使用加载配置文件typedoc.json的方式…

DropBox免费扩容到10G了
好久没有写博客了,郑重推荐下Dropbox这款同步软件,很多人有多台电脑,比如公司和家里一些文档需要同步更新,用U盘拷贝来拷贝去,不胜其烦.自然而然就想到用同步软件,而这方面DropBox从速度来说,当然是首屈一指的. 先说明DropBox的优点: 使用简单,去官网http://www.dropbox.com下…

子网划分实例与讲解
子网划分 分为两种:◆ 给定网络地址,划分子网。◆不给定网络地址,根据主机数量,自由确定网络地址,进而划分子网。【实例1】给定网络地址,划分子网。我们单位有计算机100台左右,原来都是在192.16…

使用Docsify搭建Markdown文件服务器
使用docsify快速生成文档网站1. 概述2. 安装 docsify-cli 工具3. 初始化项目4. 本地预览5. 多页文档6. 定制导航栏6.1 在index.html中添加导航栏6.2 添加导航栏配置文件6.3 下拉导航栏7. 封面设置7.1 设置封面参数7.2 自定义封面背景7.3 将封面设置为首页配置项elrepomaxLevell…

DirectX903D 颜色
颜色 颜色表示 颜色用RGB三元组表示。为红色(red)绿色(Green)蓝色(Blue)。 RGB数据可用两种不同的结构来保存。 1 D3DCOLOR结构 与DWORD类型完全相同。共有32位。各位被 分成四个8位项(sectio…

JAVA SHA1 加密 对应 c# SHA1 加密
java: 1 public static String SHA1(String decript) {2 try {3 MessageDigest digest MessageDigest.getInstance("SHA-1");4 digest.update(decript.getBytes("UTF-8"));5 byte[] messageDigest dige…

VLAN设置错误,导致部分用户无法上网
一、事由: 单位的思科3560交换机安装到位,加班到夜里12点,测试了一下,怎么有些用户PING不到了呢?难道集体关机了吗?太累了,准备明天处理。二、问题: 第二天早上࿰…

JS通过正则限制 input 输入框只能输入整数、小数(金额或者现金)
第一: 限制只能是整数 [js] view plaincopy <input type "text" name "number" id number οnkeyup "if(! /^d$/.test(this.value)){alert(只能整数);this.value;}" /> 如果不是整数就直接alert 第二: 限制是两位…

npm包开发测试与发布
NPM 包开发测试与发布NPM 包开发测试与发布引言1. 开发步骤1.1. 项目创建1.2. 工具类功能实现1.3. ts文件编译2. npm包本地测试2.1. 将npm包文件引入项目2.2. npm包功能测试3. 发布4. 注意事项我的NPM包NPM 包开发测试与发布 引言 在项目开发过程中,有时会遇到在多…

Jquery php 点击td变成input,修改后失去焦点发送数据
html部分 <Td><?php echo $row[bigclassid]?></Td> <td height"25" width"241" class"bigclassname"><?php echo $row[bigclassname]?></a></td> Js部分 <script> /**//* * 说明࿱…

美元加息怎么“剪羊毛”
我国为什么把美元储备看的如此重要? 我国需要一定的美元储备,不敢把美元随便花出去!1998年亚洲金融危机,东南亚国家为什么抵抗不过对冲基金,就是因为他们手里的美元储备太少,如果你手里美元多,就可以放出美元…

浅谈企业IT应用的访问方式之:乱想
近来手上的几大块事情,算是大头朝下了。后面可能更多是跟公司的最终用户打交道,一套完整的应用服务体系,不光只是服务器平台的搭建。更重要的是如何让用户觉得确实给他们带来了帮助。 在非洲的一段经历让我们严重认识到一点,其…

java中的基本用法
java中的基本用法 关键字:专门用途的字符串 所有java关键字都是小写英文标识符 java常量 java变量 ■ 作用域:起作用的区域■ 使用前必须先声明,在赋值。使用变量名访问这块区域java程序执行过程 java变量的分类 ■ 局部变量■ 成员变量■…

JavaScript中双叹号(!!)和单叹号(!)
转自:JavaScript中双叹号(!!)作用 经常看到这样的例子: var a; var b!!a; a默认是undefined。!a是true,!!a则是false,所以b的值是false,而不再是undefined,也非其它值,主要是为后续判…

git 初次push
1、本地仓库与远程仓库第一次同步时,一直同步不上 最后 git status ,发现有两个文件没提交 提交后再push即可 2、如果不行,再看一下其他情况 转载于:https://www.cnblogs.com/sanhao/p/10681919.html

简单是可靠的先决条件
2010年4月编程语言排名,C语言重回第1宝座,不禁令人感叹C语言的生命力。 记得有人在几年前发表了一篇C语言已经死了,5个需要忘却它的理由,其后有人发表驳“C语言已经死了”,又有人发表也驳"驳C语言已经死了" …

帮朋友招聘赴北京微软ASP.NET开发工程师
职位要求:1. 3年以上ASP.NET开发经验。2. 有过大型门户网站开发经验。3. 精通ASP.NET WEB开发、Ajax技术,有良好的代码编写习惯。4. 能够熟练运用MVC框架。有意向的朋友可以将简历发到我邮箱:fanmenglifemicrosoftservices.com.cn转载于:http…

xx.xib: error: Illegal Configuration: Safe Area Layout Guide before iOS 9.0报错问题解决
之前是用xcode8.3.3创建的工程最近升级到Xcode9.0 遇见了这个问题 在Xcode 9.0以上 新建xib文件会报错 xx.xib: error: Illegal Configuration: Safe Area Layout Guide before iOS 9.0 是因为在iOS 11上安全距离的变化引起的解决办法如下图:(以UITableV…

LuoguP2617 Dynamic Rankings (动态主席树学习理解)
题目地址 题目链接 题解 动态主席树的板子题。动态主席树其实和静态的有很大差别,虽然同样是n个根,但是节点并不能共用,每个根节点表示bit上的一段区间。 所以其实是个树套树的东西来着,外层是bit,内层是主席树。 然后…

Flash气泡回弹效果
好久没有碰过Flash了,今天温习一下AS3.0,做了一个回弹效果,气泡回弹本想着怎么可以定义气泡的不同颜色,这样可以做出更绚丽的效果,或者更进步一,气泡和气泡直接回弹,想了老半天没有想出来&#…

数据库连接的代码
数据库连接前的准备 数据库连接的jar包 数据库连接的java代码: package com.it.util;import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException;public class Dbutil {private String jdbcName"com.mysql.jdbc.Driver"…

windows建立PPPoE服务器
windows建立PPPoE服务器1.下载RASPPPOE(0.99版)2.安装RASPPPOE协议本地连接-->属性-->常规-->安装-->协议-->添加-->从磁盘安装-->浏览-->“找到自己RASPPOE所在的目录下的那个winpppoe.inf”-->打开-->继续……………即可…

使用 Azure CLI 管理 Azure 虚拟网络和 Linux 虚拟机
Azure 虚拟机使用 Azure 网络进行内部和外部网络通信。 本教程将指导读者部署两个虚拟机,并为这些 VM 配置 Azure 网络。 本教程中的示例假设 VM 将要托管包含数据库后端的 Web 应用程序,但本教程并不介绍如何部署应用程序。 本教程介绍如何执行下列操作…

面向对象的内存分析
注意:成员属性是有默认的初始值。数据类型 默认的初始值int 0float 0.0fdouble 0.0char String null引用数据类型 …

ModuleNotFoundError: No module named ‘qcloud_cos‘
是腾讯云提供的一个Python SDK,用于与腾讯云对象存储(COS)服务进行交互。使用pip安装qcloud_cos报以下错误。这个错误表示Python无法找到名为。