MybatisPlus

引入依赖
首先,在项目中引入MyBatis-Plus的依赖:

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.3</version>
</dependency>

定义一个实体类,例如User:

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

@TableName("user")
public class User {
    @TableId(type = IdType.AUTO)
    private Long id;
    private String name;
    private Integer age;
    private String email;
    // 省略getter和setter
}

继承BaseMapper接口:

import com.baomidou.mybatisplus.core.mapper.BaseMapper;

public interface UserMapper extends BaseMapper<User> {
}

条件构造器
MyBatis-Plus提供了QueryWrapper和LambdaQueryWrapper来构造查询条件。

QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("age", 18).like("name", "张");

List<User> userList = userMapper.selectList(wrapper);

使用Lambda方式:

LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(User::getAge, 18).like(User::getName, "张");

List<User> userList = userMapper.selectList(wrapper);

通用CRUD
通过BaseMapper接口,可以实现基本的CRUD操作。

// 插入
User user = new User();
user.setName("张三");
user.setAge(18);
userMapper.insert(user);

// 更新
user.setName("李四");
userMapper.updateById(user);

// 删除
userMapper.deleteById(user.getId());

// 查询
User userById = userMapper.selectById(user.getId());
List<User> userList = userMapper.selectList(null);

在MyBatis配置中添加分页插件:

@Configuration
public class MyBatisConfig {
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
}

使用分页:

Page<User> page = new Page<>(1, 10);
Page<User> userPage = userMapper.selectPage(page, null);

乐观锁插件
在实体类中添加@Version注解:

import com.baomidou.mybatisplus.annotations.Version;

public class User {
    @Version
    private Integer version;
    // ...
}
配置乐观锁插件:

@Configuration
public class MyBatisConfig {
    @Bean
    public OptimisticLockerInterceptor optimisticLockerInterceptor() {
        return new OptimisticLockerInterceptor();
    }
}

代码生成器
MyBatis-Plus提供了代码生成器,可以自动生成实体类、Mapper接口、Service接口和Controller。

示例代码:

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;

public class CodeGenerator {
    public static void main(String[] args) {
        FastAutoGenerator.create("jdbc:mysql://localhost:3306/mydb", "username", "password")
                .globalConfig(builder -> {
                    builder.author("yourName")
                            .outputDir(System.getProperty("user.dir") + "/src/main/java")
                            .fileOverride()
                            .disableOpenDir();
                })
                .packageConfig(builder -> {
                    builder.parent("com.example")
                            .entity("entity")
                            .mapper("mapper")
                            .service("service")
                            .controller("controller");
                })
                .strategyConfig(builder -> {
                    builder.addInclude("user")  // 表名
                            .entityBuilder()
                            .enableLombok()
                            .versionColumnName("version")
                            .logicDeleteColumnName("deleted");
                })
                .templateEngine(new FreemarkerTemplateEngine())
                .execute();
    }
}
posted @   Look_Back  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
点击右上角即可分享
微信分享提示