主页 > 创业  > 

MybatisPlus从入门到精通

MybatisPlus从入门到精通
一、MyBatis-Plus核心特性 无侵入性 在MyBatis基础上增强,无需修改原有代码即可使用。自动化CRUD 内置通用Mapper和Service,减少80%单表操作代码。Lambda表达式 支持Lambda形式的条件构造,避免字段名硬编码错误。主键策略 支持雪花算法(ASSIGN_ID)、UUID(ASSIGN_UUID)、自增(AUTO)等主键生成方式。 二、快速入门案例 1. 数据库准备 DROP TABLE IF EXISTS sys_user; CREATE TABLE sys_user ( id BIGINT NOT NULL COMMENT '主键ID', name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名', age INT NULL DEFAULT NULL COMMENT '年龄', email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱', PRIMARY KEY (id) ); DELETE FROM sys_user; INSERT INTO sys_user (id, name, age, email) VALUES (1, 'Jone', 18, 'test1@baomidou '), (2, 'Jack', 20, 'test2@baomidou '), (3, 'Tom', 28, 'test3@baomidou '), (4, 'Sandy', 21, 'test4@baomidou '), (5, 'Billie', 24, 'test5@baomidou '); 2. Spring Boot配置

pom.xml依赖:

<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-annotation</artifactId> <version>3.5.3.1</version> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-core</artifactId> <version>3.5.3.1</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>3.0.3</version> </dependency>

application.yml:

spring: datasource: url: jdbc:mysql://localhost:3306/mybatis_plus?serverTimezone=GMT%2B8 username: root password: root 3. 实体类与Mapper package com.awei.mybatismodel.entity; import lombok.Data; @Data public class SysUser { private Long id; private String name; private Integer age; private String email; } package com.awei.mybatismodel.mapper; import com.awei.mybatismodel.entity.SysUser; import com.baomidou.mybatisplus.core.mapper.BaseMapper; public interface SysUserMapper extends BaseMapper<SysUser> { } 4.启动类 package com.awei.mybatismodel; import org.springframework.boot.SpringApplication; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication @MapperScan("com.awei.mybatismodel.mapper") public class MybatisModelApplication { public static void main(String[] args) { SpringApplication.run(MybatisModelApplication.class, args); } } 5.测试 package com.awei.mybatismodel; import com.awei.mybatismodel.entity.SysUser; import com.awei.mybatismodel.mapper.SysUserMapper; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import java.util.List; @SpringBootTest public class QuickStartTest { @Autowired private SysUserMapper userMapper; @Test public void testSelect() { System.out.println(("----- selectAll method test ------")); List<SysUser> userList = userMapper.selectList(null); Assertions.assertEquals(5, userList.size()); userList.forEach(System.out::println); } }

三、核心注解详解 注解作用示例@TableName指定实体类对应的表名@TableName("sys_user")@TableId标识主键字段@TableId(type = IdType.AUTO)@TableField字段与列映射/自动填充策略@TableField(value = "email", fill = FieldFill.INSERT_UPDATE)

主键策略示例:

public enum IdType { AUTO, // 数据库自增 ASSIGN_ID, // 雪花算法(默认) ASSIGN_UUID // UUID生成 }
四、CRUD操作 1. 基础操作 // 插入 User user = new User(); user.setName("Tom"); userMapper.insert(user); // 查询 User user = userMapper.selectById(1L); // 更新 user.setAge(30); userMapper.updateById(user); // 删除 userMapper.deleteById(2L); 2. 条件构造器(Wrapper) LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>(); wrapper.like(User::getName, "J") // 模糊查询 .ge(User::getAge, 18) // 年龄>=18 .orderByDesc(User::getCreateTime); List<User> users = userMapper.selectList(wrapper);

生成SQL:

SELECT * FROM user WHERE name LIKE '%J%' AND age >= 18 ORDER BY create_time DESC
五、分页查询 1. 配置分页插件 @Configuration public class MybatisPlusConfig { @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); return interceptor; } } 2. 分页查询代码 Page<User> page = new Page<>(1, 10); // 第1页,每页10条 LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>(); wrapper.eq(User::getAge, 20); IPage<User> userPage = userMapper.selectPage(page, wrapper); System.out.println("总记录数:" + userPage.getTotal());
六、高级功能 1. 逻辑删除

表字段:

ALTER TABLE user ADD is_deleted TINYINT(1) DEFAULT 0 COMMENT '逻辑删除标记';

配置:

mybatis-plus: global-config: db-config: logic-delete-field: isDeleted # 逻辑删除字段名 logic-delete-value: 1 # 删除标记值 logic-not-delete-value: 0 # 未删除标记值 2. 自动填充 public class MetaObjectHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now()); } }

更新中----

标签:

MybatisPlus从入门到精通由讯客互联创业栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“MybatisPlus从入门到精通