MyBatis-Plus实战:Spring Boot数据库操作效率提升10倍

一、引入依赖

复制代码
<!-- pom.xml -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.5</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

# application.yml
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf8
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  global-config:
    db-config:
      logic-delete-field: deleted
      logic-delete-value: 1
      logic-not-delete-value: 0

回到顶部

二、实体类

复制代码
@Data
@TableName("user")
public class User {

    @TableId(type = IdType.AUTO)
    private Long id;

    @TableField("username")
    private String username;

    private String email;

    private Integer age;

    @TableLogic  // 逻辑删除
    private Integer deleted;

    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}

回到顶部

三、Mapper 接口

复制代码
@Mapper
public interface UserMapper extends BaseMapper<User> {
    // 继承 BaseMapper 后,自动拥有以下方法:
    // - insert(entity)
    // - deleteById(id)
    // - updateById(entity)
    // - selectById(id)
    // - selectList(wrapper)
    // - selectPage(page, wrapper)
    // 无需编写 XML!
}

回到顶部

四、条件构造器

复制代码
// 查询年龄大于18且邮箱不为空的用户
List<User> users = userMapper.selectList(
    new LambdaQueryWrapper<User>()
        .gt(User::getAge, 18)
        .isNotNull(User::getEmail)
        .orderByDesc(User::getCreateTime)
);

// 模糊查询
List<User> users = userMapper.selectList(
    new LambdaQueryWrapper<User>()
        .likeRight(User::getUsername, "张")
        .between(User::getAge, 20, 30)
);

// 更新:年龄大于30的用户状态改为1
userMapper.update(null,
    new LambdaUpdateWrapper<User>()
        .set(User::getStatus, 1)
        .gt(User::getAge, 30)
);

回到顶部

五、分页查询

复制代码
// 分页配置类
@Configuration
public class MyBatisPlusConfig {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
}

// 分页查询
Page<User> page = new Page<>(1, 10);  // 第1页,每页10条
userMapper.selectPage(page,
    new LambdaQueryWrapper<User>()
        .gt(User::getAge, 18)
);

List<User> records = page.getRecords();  // 当前页数据
long total = page.getTotal();           // 总记录数
long pages = page.getPages();           // 总页数

回到顶部

六、代码生成器

复制代码
// AutoGenerator 一键生成 Entity、Mapper、Service、Controller
AutoGenerator generator = new AutoGenerator();

// 全局配置
GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setOutputDir(System.getProperty("user.dir") + "/src/main/java");
globalConfig.setAuthor("myname");
globalConfig.setOpen(false);
generator.setGlobalConfig(globalConfig);

// 数据源配置
DataSourceConfig dataSourceConfig = new DataSourceConfig.Builder(
    "jdbc:mysql://localhost:3306/mydb",
    "root", "123456"
).build();
generator.setDataSource(dataSourceConfig);

// 策略配置
StrategyConfig strategyConfig = new StrategyConfig.Builder()
    .addInclude("user", "order")  // 表名
    .entityBuilder().enableLombok()
    .controllerBuilder().enableRestStyle()
    .build();
generator.setStrategy(strategyConfig);

generator.execute();
相关推荐
爱喝水的鱼丶17 小时前
SAP-ABAP:数据类型与数据对象(8篇) 第七篇:进阶优化篇——基于类型与对象特征的性能优化技巧
运维·数据库·学习·性能优化·sap·abap·开发交流
SelectDB技术团队17 小时前
PB 级自动驾驶数据秒级检索:Apache Doris 统一多模态数据平台实践
数据库·人工智能·自动驾驶·apache doris·selectdb
XS03010618 小时前
MyBatis基础实战笔记一
笔记·mybatis
爱编程的小新☆18 小时前
LangGraph4j工作流框架
前端·数据库·ai·langchain·langgraph4j
海兰18 小时前
【第21篇-续】graph-Stream-Node改造为适配openAI模型示例
java·人工智能·spring boot·spring·spring ai
programhelp_18 小时前
Google 2026 New Grad SDE VO 三轮面试详解 | 含Behavioral、Coding、Design
java·服务器·数据库
czhc114007566318 小时前
数据库520 HALCONAN安装
数据库
阿坤带你走近大数据18 小时前
Oracle中的OGG介绍
数据库·oracle
Ether IC Verifier18 小时前
TCP/IP协议握手原理详解——结合以太网连接过程
服务器·网络·数据库·网络协议·tcp/ip
宋浮檀s18 小时前
SQL注入基础+DVWA搭建
数据库·sql·安全·网络安全