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,那么 ...
随机推荐
- url编码和解码分析URLEncoder.encode和URLDecoder.decode
url编码和解码分析 1.Get请求会将参数做默认的url解码操作,接口接收到的值是Get解码后的值.2.可以将Get操作修改成Post操作,这样不会url解码.可以在接口中做url解码.3.在多次传 ...
- java redis 短信业务应用
java redis 短信业务应用 短信业务场景:根据实际业务来通知客户,在短信的MQ中新增字段:是否需要发送短信的标识,短信微服务可以接收到MQ后根据该字段来判断是否发送. 如果发送端MQ的事件的操 ...
- jqurey基础知识和常用事件方法
样式文件不需要<style>标签 引用style文件的方法 <link href="main.css" rel="stylesheet" st ...
- 03-vi和vim编辑器的使用
背景 vim是一个类似于vi的著名的功能强大.高度可定制的文本编辑器. vim在vi的基础上改进和增加了很多特性. 如今vi已经是最受IT届欢迎的编辑器之一. 不止在Linux中,主流IDE都支持vi ...
- [ABC347C] Ideal Holidays题解
[ABC347C] Ideal Holidays题解 原题传送门 原题传送门(洛谷) 题意翻译: 在 \(AtCoder\) 王国中,一个周有 \(A+B\) 天.其中在一周中, \([1,A ...
- InvocationTargetException和UndeclaredThrowableException异常介绍
今天来介绍了两个陌生又熟悉的异常类,熟悉是因为我们经常会遇到它们,陌生是好像又从来不知道它们是做什么的 假定读者已经清楚了Java的异常分类: 一是程序不能处理的错误(Error), 二是程序应该避免 ...
- Java(screw)生成数据库表结构
数据库支持 MySQL MariaDB TIDB Oracle SqlServer PostgreSQL Cache DB(2016) 文档生成支持 html word markdown 方式一:代码 ...
- css 手稿
CSS 网页的布局和外观的显示样式 没有一张图解决不了的事:https://www.processon.com/mindmap/5e368a8be4b0d27af184e118 选择器 * 通配符选择 ...
- Mybatis xxxMapper.xml 三表关联,配置文件
VideoMapper.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mappe ...
- ORACLE 如何判断某字段是否小于0
Oracle 自带的函数 SIGN 表达式的正 (+1).零 (0) 或负 (-1) 号 SQL> SELECT SIGN(-47.3), SIGN(0), SIGN(47.3) FROM du ...