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. url编码和解码分析URLEncoder.encode和URLDecoder.decode

    url编码和解码分析 1.Get请求会将参数做默认的url解码操作,接口接收到的值是Get解码后的值.2.可以将Get操作修改成Post操作,这样不会url解码.可以在接口中做url解码.3.在多次传 ...

  2. java redis 短信业务应用

    java redis 短信业务应用 短信业务场景:根据实际业务来通知客户,在短信的MQ中新增字段:是否需要发送短信的标识,短信微服务可以接收到MQ后根据该字段来判断是否发送. 如果发送端MQ的事件的操 ...

  3. jqurey基础知识和常用事件方法

    样式文件不需要<style>标签 引用style文件的方法 <link href="main.css" rel="stylesheet" st ...

  4. 03-vi和vim编辑器的使用

    背景 vim是一个类似于vi的著名的功能强大.高度可定制的文本编辑器. vim在vi的基础上改进和增加了很多特性. 如今vi已经是最受IT届欢迎的编辑器之一. 不止在Linux中,主流IDE都支持vi ...

  5. [ABC347C] Ideal Holidays题解

    [ABC347C] Ideal Holidays题解 原题传送门 原题传送门(洛谷) ​ 题意翻译: ​ 在 \(AtCoder\) 王国中,一个周有 \(A+B\) 天.其中在一周中, \([1,A ...

  6. InvocationTargetException和UndeclaredThrowableException异常介绍

    今天来介绍了两个陌生又熟悉的异常类,熟悉是因为我们经常会遇到它们,陌生是好像又从来不知道它们是做什么的 假定读者已经清楚了Java的异常分类: 一是程序不能处理的错误(Error), 二是程序应该避免 ...

  7. Java(screw)生成数据库表结构

    数据库支持 MySQL MariaDB TIDB Oracle SqlServer PostgreSQL Cache DB(2016) 文档生成支持 html word markdown 方式一:代码 ...

  8. css 手稿

    CSS 网页的布局和外观的显示样式 没有一张图解决不了的事:https://www.processon.com/mindmap/5e368a8be4b0d27af184e118 选择器 * 通配符选择 ...

  9. Mybatis xxxMapper.xml 三表关联,配置文件

    VideoMapper.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mappe ...

  10. ORACLE 如何判断某字段是否小于0

    Oracle 自带的函数 SIGN 表达式的正 (+1).零 (0) 或负 (-1) 号 SQL> SELECT SIGN(-47.3), SIGN(0), SIGN(47.3) FROM du ...