MybatisPlus 使用教程

MyBatisPlus使用教程

文章目录

MyBatisPlus顾名思义便是对MyBatis的加强版,但两者本身并不冲突(只做增强不做改变):

引入它并不会对原有工程产生影响 ,启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作!!

1、使用方式

它的使用方式也很简单:

1.1 引入依赖

xml 复制代码
<dependency>
     <groupId>com.baomidou</groupId>
     <artifactId>mybatis-plus-boot-starter</artifactId>
     <version>3.5.3.1</version>
</dependency>

注:这里的依赖引入之后就不需要引入mybatis的依赖了

1.2 构建mapper接口

java 复制代码
public interface UserMapper extends BaseMapper<User> {
   
}

注:这里需要让mapper接口继承BaseMapper<>,且泛型要写上实体类

实体类代码(可自行编写):

java 复制代码
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.itheima.mp.enums.UserStatus;
import lombok.Data;

import java.time.LocalDateTime;

@Data
public class User {

    /**
     * 用户id
     */
    private Long id;

    /**
     * 用户名
     */
    private String username;

    /**
     * 密码
     */
    private String password;

    /**
     * 注册手机号
     */
    private String phone;

    /**
     * 详细信息
     */
    private UserInfo info;

    /**
     * 使用状态(1正常 2冻结)
     */
    private UserStatus status;

    /**
     * 账户余额
     */
    private Integer balance;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;
}

数据库(可自行搭建):

测试一下:

java 复制代码
@SpringBootTest
class UserMapperTest {

    @Autowired
    private UserMapper userMapper;
	
     @Test
    void testInsert() {
        User user = new User();
        user.setId(5L); // 可见这里在未配置注解或xml的情况下也可直接调用方法
        user.setUsername("XiaoMi"); 
        user.setPassword("123");
        user.setPhone("10086");
        user.setBalance(200);
        user.setInfo(UserInfo.of(24, "英文老师", "female"));
        user.setCreateTime(LocalDateTime.now());
        user.setUpdateTime(LocalDateTime.now());
        userMapper.insert(user);
    }
    
    @Test
    void testSelectById() {
        User user = userMapper.selectById(5L);
        System.out.println("user = " + user);
    }

}

按上述步骤来即可执行成功!!相较于mybatis需要编写注解或xml,mybatisplus在接口继承之后就能够直接调用相关的方法来进行CURD,节省了许多重复工作,这对于快速开发来说很有帮助!!

2、常用注解

MyBatisPlus 是通过扫描实体类(即BaseMaper<>泛型),并基于反射获取实体类信息来作为数据库信息,如果直接使用该实体类的话有几个前提条件:

  • 默认以类名驼峰转下划线作为表名
  • 默认把名为id的字段作为主键
  • 默认把变量名按驼峰方式转下划线作为表的字段名

若上述条件有差异,则需要通过注解的方式来调整:

2.1 @TableName

用于指定表名称及全局配置

类名与表名不一致 (驼峰转换后不一致)会报错,需要通过@TableName注解进行指定表名:

java 复制代码
@Data
@TableName("tb_user")
public class User {
}

2.2 @TableId

指定Id字段及其相关配置

对于Id字段,它一般用于描述主键,同时它也有一些属性需要添加,如自增长,可以通过@TableId进行指定:

  • IdType.AUTO:数据库自增长
  • IdType.INPUT:通过set方法自行输入
  • IdType.ASSIGN:分配ID
java 复制代码
@TableId(value="id", type = IdType.AUTO)
private Long id;

2.3 @TableField

指定普通字段及其相关配置

@TableField一般用于以下场景:

  • 成员变量与数据库字段名不一致
  • 成员变量以is开头,且是布尔值
  • 成员变量与数据库关键字冲突,如order
  • 成员变量不是数据库字段
java 复制代码
@TableField("username")
private String name; // 名字与数据库表中字段不同

@TableField(exist = false)
private String address; // 数据库表中不存在

以上便是MyBatisPlus的基本使用教程了!!对于MyBatisPlus的来说,它更适合于单表操作,如果需要对多表进行复杂操作则需使用MyBatis!!

相关推荐
u01005596021 天前
IPage类与Page类区别和作用讲解
mybatis·mybatisplus
大飞哥~BigFei22 天前
mybatisPlus的@TableLogic逻辑删除注解导致联合索引失效的坑
mysql·mybatisplus
装不满的克莱因瓶1 个月前
你真的懂Mybatis分页原理吗?
java·开发语言·架构·mybatis·mybatisplus·mybatis-plus·分页
是梦终空2 个月前
JAVA毕业设计153—基于Java+Springboot+小程序的校园维修管理系统小程序(源代码+数据库)
java·spring boot·小程序·毕业设计·layui·mybatisplus·校园维修管理系统
是梦终空2 个月前
JAVA毕业设计152—基于Java+Springboot+vue+小程序的个人健康管理系统小程序(源代码+数据库+15000字论文)
java·spring boot·vue·毕业设计·论文·mybatisplus·个人健康管理小程序
小言不爱说2 个月前
后端实现图片上传本地,可采用url查看图片
java·数据库·mybatisplus
CSDN专家-赖老师(软件之家)2 个月前
房屋出租管理系统小程序需求分析及功能介绍
小程序·人脸识别·springboot·uniapp·需求分析·mybatisplus·地图定位
是梦终空2 个月前
JAVA毕业设计146—基于Java+Springboot+vue+uniapp的景区旅游购票小程序(源代码+数据库+9000字论文)
java·spring boot·小程序·毕业设计·课程设计·mybatisplus·景区旅游门票小程序系统
小沈同学呀2 个月前
【实战】EasyExcel实现百万级数据导入导出
java·大数据·spring·springboot·mybatisplus·easyexcel