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系统化学习之注解的使用的更多相关文章

  1. (转)MyBatis框架的学习(二)——MyBatis架构与入门

    http://blog.csdn.net/yerenyuan_pku/article/details/71699515 MyBatis框架的架构 MyBatis框架的架构如下图: 下面作简要概述: S ...

  2. mybatis源码学习:插件定义+执行流程责任链

    目录 一.自定义插件流程 二.测试插件 三.源码分析 1.inteceptor在Configuration中的注册 2.基于责任链的设计模式 3.基于动态代理的plugin 4.拦截方法的interc ...

  3. spring + myBatis 常见错误:@Autowired注解失败

    今天配置spring+myBatis的时候,使用注解@Autowired把持久层dao注入service层的时候总是报错. 查了好久才发现,居然是配置文件路径写错了.basepackge的路径一定要正 ...

  4. TestNG学习-002-annotaton 注解概述及其执行顺序

    此文主要讲述用 TestNG 基础的 annotation (注解)知识,及其执行的顺序,并通过一个 TestNG 简单的实例演示 annotation 的执行顺序. 希望能对初学 TestNG 测试 ...

  5. Linux 系统化学习系列文章总目录(持续更新中)

    本页内容都是本人系统化学习Linux 时整理出来的.这些文章中,绝大多数命令类内容都是翻译.整理man或info文档总结出来的,所以相对都比较完整. 本人的写作方式.风格也可能会让朋友一看就恶心到直接 ...

  6. 如何从零开始系统化学习视觉SLAM?

    由于显示格式问题,建议阅读原文:如何从零开始系统化学习视觉SLAM? 什么是SLAM? SLAM是 Simultaneous Localization And Mapping的 英文首字母组合,一般翻 ...

  7. Java学习:注解,反射,动态编译

    狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 ! Java学习:注解,反射,动态编译 Annotation 注解  什么是注解 ? Annotat ...

  8. Mybatis基础进阶学习2

    Mybatis基础进阶学习2 1.测试基本结构 2.三个POJO package com.pojo; import java.io.Serializable; import java.util.Dat ...

  9. Mybatis基础入门学习

    Mybatis基础入门学习 mybatis架构分析 搭建测试mybatis架构 )下载并导入mybatis3.2.7.jar(架构),mysql-connector-java-5.1.7-bin.ja ...

  10. (转)MyBatis框架的学习(七)——MyBatis逆向工程自动生成代码

    http://blog.csdn.net/yerenyuan_pku/article/details/71909325 什么是逆向工程 MyBatis的一个主要的特点就是需要程序员自己编写sql,那么 ...

随机推荐

  1. BC1-Hello Nowcoder

    题目 解题思路 方案一: 这道题同输出 "Hello World!"解法相同,用 C 语言的格式输出函数 printf() 来完成即可. 具体代码如下: #include < ...

  2. php反序列化个人笔记

    反序列化 什么是反序列化? 格式转换 序列化:对象转换为字符串或者数组等格式 反序列化:将数组或字符串转换成对象 为什么会出现安全漏洞? 魔术方法 如何利用漏洞? 通过构造pop链,找到代码的逻辑漏洞 ...

  3. 「C++」复杂模拟【壹】

    建议开启目录食用 阅读本文之前建议您先看这里,如果您已经看完了,那么就可以放心大胆的学习本文了. 我认为其实本文的难度还是比较大的,今天我们题是来自山东省省选,所以建议大家谨慎阅读,如果您是专业程序员 ...

  4. Java基础(二)继承剖析

    继承剖析 1 若是要直接调用父类的构造方法,不调用子类的方法则需要使用的是super()关键字 Publicclass Child extends Parent {          Public C ...

  5. 2024年软件架构趋势之AI与机器学习的关系

    在当下这个信息爆炸的时代,我们经常会听到"AI"和"机器学习"这两个词.它们似乎总是携手出现,让人觉得它们就是一对不可分割的"好基友".但你 ...

  6. 实验13.Nat转发telnet实验

    # 实验13.Nat转发telnet实验 本节用于测试NAT服务,用于将流量转发到内网的指定设备上. 实验组 配置路由器 由于之前配置过ospf,所以这次用直接指静态练手,首先确保全网畅通 R3 GW ...

  7. 【Python】用Python把从mysql统计的结果数据转成表格形式的图片并推送到钉钉群

    ** python把数据转为图片 / python推送图片到钉钉群 ** 需求:通过python访问mysql数据库,统计业务相关数据.把统计的结果数据生成表格形式的图片并发送到钉钉群里. 一:Cen ...

  8. 安卓app产品:应用分析工具

    这是我独立开发的一款工具类安卓app(名称:应用分析工具),其主要功能是:(Solo 社区投稿) 1.基础信息查看 - 可查看app的包名.签名.权限.版本信息.AndroidManifest.xml ...

  9. MDI子窗口+事件与委托的一个例程

    1首先,新建WinForm的.NetFramWork的工程并添加2个Form: 2设置 Form1为MDI主窗口: [属性]-- 将以上属性改为 True; 另外,也可以采用代码形式: this.Is ...

  10. 深入理解 JavaScript 闭包:前端开发中的重要概念

    闭包是 JavaScript 中一个非常重要的概念,对于理解和编写高效.灵活的代码至关重要.尽管它看似复杂,但一旦掌握了闭包,你将能够更好地理解 JavaScript 的函数作用域和变量生命周期.本文 ...