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
完美!