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. cerebro安装部署,es客户端优化界面

    1.下载地址 https://github.com/lmenezes/cerebro/releases 2.下载cerebro-0.9.3.zip 运行bin/cerebro ,启动没有报错,并且命令 ...

  2. Jenkins创建任务进行构建项目配置

    总体构建项目的操作步骤 分为Generna(总的描述).源码管理.构建触发器.构建环境.构建.构建后的操作 1.Dashboard-> new item > 新建一个任务,选择freest ...

  3. Pycharm或cmd在Terminal中运行tensorboard、pip等python包

    这个主要是添加python包的路径到环境变量里 因为装了anaconda,所以我们要找的是对应虚拟环境里的包路径,一般是放在anaconda安装路径下的anaconda3\envs\环境名\Scrip ...

  4. admission-controllers

    WebHook是什么  官方文档: https://kubernetes.io/zh-cn/docs/reference/access-authn-authz/admission-controller ...

  5. WPF网格类型像素着色器

    由于WPF只能写像素着色器,没法写顶点着色器,所以只能在这上面做文章了 刚好有个纹理坐标TEXCOORD输入可用,而且值的范围是已知的0-1,左上角是原点,这就好办了 例子 索引 二分网格 使用cei ...

  6. 中台框架模块开发实践-用 Admin.Core 代码生成器生成通用代码生成器的模块代码

    前言 之前分享中台 Admin.Core 的模块代码生成器,陆续也结合群友们的反馈,完善了一些功能和模板上的优化,而本篇将基于此代码生成器生成一个通用代码生成器模块的基本代码 后续再在此代码的基础上进 ...

  7. JSP快速上手与MVC模式和三层架构的知识点总结+综合案例

    阅读提示: 说明 由于JSP实在是太 难读 难写 复杂 占资源 难调试 不分离 了,拉跨!(节目效果哈,勿喷),作为一种有(ji)更(hu)好(jiu)的(yao)上(bei)位(tao)替(tai) ...

  8. 9. 嵌套的 CMake

    9. 嵌套的 CMake 如果项目很大,或者项目中有很多的源码目录,在通过 CMake 管理项目的时候如果只使用一个 CMakeLists.txt ,那么这个文件相对会比较复杂,有一种化繁为简的方式就 ...

  9. [oeasy]python0089_大型机的衰落_Dec小型机崛起_PDP_VAX网络

    编码进化 回忆上次内容 上次 回顾了 计算机存储单位的演变 最小的读写单位 是 bit 8-bit 固定下来 成为了字节(Byte) 位数 容量 8-bit 1Byte 1024Byte 1 KB 1 ...

  10. SQL Server 图解备份(完全备份、差异备份、增量备份)和还原

    常用的数据备份方式有完全备份.差异备份以及增量备份,那么这三种备份方式有什么区别,在具体应用中又该如何选择呢? 1.三种备份方式 完全备份(Full Backup):备份全部选中的文件夹,并不依赖文件 ...