Mybatis-Plus系统化学习之注解的使用
1.背景
注解的使用
大多数请求下我们默认为有如下对应关系
1.数据库中的表名 ---> java中的实体类名 (下划线与驼峰转换)
2.数据中的id为主键
3.数据库中的字段名---> java中的实体的成员变量
但是但是.....
难道必须一一对应没,我不对应行吗?
当然行,数据库中我们经常会根据业务划分表,在表名前加一个前缀
如user表名为 sys_user,其中sys_表示系统业务相关的表
因此在实际的java实体类中我不需要命名为SysUser
只需要使用注解即可
2.注解使用
官方文档:https://baomidou.com/guide/

2.1.表名注解@TableName

/**
* 测试将数据sys_user表名前面加一个前缀 为 mp_sys_user
*
* 实体上加标签 @TableName("mp_sys_user") 即可正常使用
* ==> Preparing: SELECT id,version,age,gender,name,position,account,password,status,type,create_time,update_time FROM mp_sys_user WHERE id=?
* ==> Parameters: 20(Integer)
*/
@Test
public void test() {
SysUser sysUser = sysUserMapper.selectById(20);
System.out.println("sysUser="+sysUser);
}
2.2.表主键注解@TableId

/**
* 默认情况下id是组件,但是如果没有id的表了,或者组件不是id呢,
* 比如在接下来的演示中我在数据库中把id代码my_id作为主键
*
* 实体上就得在myId上加@TableId的注解
*
* ==> Preparing: SELECT my_id,version,age,gender,name,position,account,password,status,type,create_time,update_time FROM mp_sys_user WHERE my_id=?
* ==> Parameters: 20(Integer)
*
*/
@Test
public void testTableId() {
SysUser sysUser = sysUserMapper.selectById(20);
System.out.println("sysUser="+sysUser);
}
2.3.字段注解@TableField

/**
* 如果普通的字段与数据库不一致怎么办
* 假设实体是myGender 而数据库是 gender
* 需要使用注解 @TableField
*
*==> Preparing: SELECT my_id,version,age,gender AS myGender,name,position,account,password,status,type,create_time,update_time FROM mp_sys_user WHERE my_id=?
* ==> Parameters: 20(Integer)
*/
@Test
public void testTableField() {
SysUser sysUser = sysUserMapper.selectById(20);
System.out.println("sysUser="+sysUser);
}
如果实体中的字段不需要对应数据库中的字段怎么办
假设实体中的一个totalAll 是数据库中不需要的字段
需要使用注解 @TableField(exist = false)

/**
* 如果实体中的字段不需要对应数据库中的字段怎么办
* 假设实体中的一个totalAll 是数据库中不需要的字段
* 需要使用注解 @TableField(exist = false)
* <p>
* ==> Preparing: INSERT INTO mp_sys_user ( age, name ) VALUES ( ?, ? )
* ==> Parameters: 99(Integer), 张四峰(String)
* 从sql语句可以看出 totalAll 并没有映射到sql语句上
*/
@Test
public void testTableFieldExist() {
int row = sysUserMapper.insert(new SysUser().setName("张四峰").setAge(99).setTotalAll(200));
System.out.println("受影响行数=" + row);
}
mybatis-plus系统化学习教程:https://www.cnblogs.com/newAndHui/p/14141950.html
完美!
Mybatis-Plus系统化学习之注解的使用的更多相关文章
- (转)MyBatis框架的学习(二)——MyBatis架构与入门
http://blog.csdn.net/yerenyuan_pku/article/details/71699515 MyBatis框架的架构 MyBatis框架的架构如下图: 下面作简要概述: S ...
- mybatis源码学习:插件定义+执行流程责任链
目录 一.自定义插件流程 二.测试插件 三.源码分析 1.inteceptor在Configuration中的注册 2.基于责任链的设计模式 3.基于动态代理的plugin 4.拦截方法的interc ...
- spring + myBatis 常见错误:@Autowired注解失败
今天配置spring+myBatis的时候,使用注解@Autowired把持久层dao注入service层的时候总是报错. 查了好久才发现,居然是配置文件路径写错了.basepackge的路径一定要正 ...
- TestNG学习-002-annotaton 注解概述及其执行顺序
此文主要讲述用 TestNG 基础的 annotation (注解)知识,及其执行的顺序,并通过一个 TestNG 简单的实例演示 annotation 的执行顺序. 希望能对初学 TestNG 测试 ...
- Linux 系统化学习系列文章总目录(持续更新中)
本页内容都是本人系统化学习Linux 时整理出来的.这些文章中,绝大多数命令类内容都是翻译.整理man或info文档总结出来的,所以相对都比较完整. 本人的写作方式.风格也可能会让朋友一看就恶心到直接 ...
- 如何从零开始系统化学习视觉SLAM?
由于显示格式问题,建议阅读原文:如何从零开始系统化学习视觉SLAM? 什么是SLAM? SLAM是 Simultaneous Localization And Mapping的 英文首字母组合,一般翻 ...
- Java学习:注解,反射,动态编译
狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 ! Java学习:注解,反射,动态编译 Annotation 注解 什么是注解 ? Annotat ...
- Mybatis基础进阶学习2
Mybatis基础进阶学习2 1.测试基本结构 2.三个POJO package com.pojo; import java.io.Serializable; import java.util.Dat ...
- Mybatis基础入门学习
Mybatis基础入门学习 mybatis架构分析 搭建测试mybatis架构 )下载并导入mybatis3.2.7.jar(架构),mysql-connector-java-5.1.7-bin.ja ...
- (转)MyBatis框架的学习(七)——MyBatis逆向工程自动生成代码
http://blog.csdn.net/yerenyuan_pku/article/details/71909325 什么是逆向工程 MyBatis的一个主要的特点就是需要程序员自己编写sql,那么 ...
随机推荐
- BC1-Hello Nowcoder
题目 解题思路 方案一: 这道题同输出 "Hello World!"解法相同,用 C 语言的格式输出函数 printf() 来完成即可. 具体代码如下: #include < ...
- php反序列化个人笔记
反序列化 什么是反序列化? 格式转换 序列化:对象转换为字符串或者数组等格式 反序列化:将数组或字符串转换成对象 为什么会出现安全漏洞? 魔术方法 如何利用漏洞? 通过构造pop链,找到代码的逻辑漏洞 ...
- 「C++」复杂模拟【壹】
建议开启目录食用 阅读本文之前建议您先看这里,如果您已经看完了,那么就可以放心大胆的学习本文了. 我认为其实本文的难度还是比较大的,今天我们题是来自山东省省选,所以建议大家谨慎阅读,如果您是专业程序员 ...
- Java基础(二)继承剖析
继承剖析 1 若是要直接调用父类的构造方法,不调用子类的方法则需要使用的是super()关键字 Publicclass Child extends Parent { Public C ...
- 2024年软件架构趋势之AI与机器学习的关系
在当下这个信息爆炸的时代,我们经常会听到"AI"和"机器学习"这两个词.它们似乎总是携手出现,让人觉得它们就是一对不可分割的"好基友".但你 ...
- 实验13.Nat转发telnet实验
# 实验13.Nat转发telnet实验 本节用于测试NAT服务,用于将流量转发到内网的指定设备上. 实验组 配置路由器 由于之前配置过ospf,所以这次用直接指静态练手,首先确保全网畅通 R3 GW ...
- 【Python】用Python把从mysql统计的结果数据转成表格形式的图片并推送到钉钉群
** python把数据转为图片 / python推送图片到钉钉群 ** 需求:通过python访问mysql数据库,统计业务相关数据.把统计的结果数据生成表格形式的图片并发送到钉钉群里. 一:Cen ...
- 安卓app产品:应用分析工具
这是我独立开发的一款工具类安卓app(名称:应用分析工具),其主要功能是:(Solo 社区投稿) 1.基础信息查看 - 可查看app的包名.签名.权限.版本信息.AndroidManifest.xml ...
- MDI子窗口+事件与委托的一个例程
1首先,新建WinForm的.NetFramWork的工程并添加2个Form: 2设置 Form1为MDI主窗口: [属性]-- 将以上属性改为 True; 另外,也可以采用代码形式: this.Is ...
- 深入理解 JavaScript 闭包:前端开发中的重要概念
闭包是 JavaScript 中一个非常重要的概念,对于理解和编写高效.灵活的代码至关重要.尽管它看似复杂,但一旦掌握了闭包,你将能够更好地理解 JavaScript 的函数作用域和变量生命周期.本文 ...