MybatisPlus是什么,为什么这么多人用TA(上)

简介: MybatisPlus是什么,为什么这么多人用TA

基础操作


MybatisPlus提供了一系列基础操作的封装,例如插入、更新、删除、查询等。这些操作都是通过Mapper接口和实现类来完成的,开发者只需要继承BaseMapper接口即可。


1. 基础操作概念


MybatisPlus的基础操作封装了常见的增删改查操作,使得开发者可以更容易地使用MybatisPlus进行数据库操作。这些基础操作是通过Mapper接口和实现类来完成的,开发者只需要继承BaseMapper接口即可。以下是MybatisPlus支持的基础操作:


  • 插入:insert、insertBatch、insertOrUpdate 等方法。
  • 更新:updateById、update、updateBatchById 等方法。
  • 删除:deleteById、deleteByMap、delete 等方法。
  • 查询:selectById、selectBatchIds、selectByMap、selectOne、selectList、selectPage等方法。


2. 基础操作示例


下面是一个使用MybatisPlus进行基础操作的示例:


// 定义实体类
@Data
public class User {
    private Long id;
    private String name;
    private Integer age;
}
// 定义Mapper接口
public interface UserMapper extends BaseMapper<User> {}
// 插入数据
User user = new User();
user.setName("Tom");
user.setAge(18);
userMapper.insert(user);
// 更新数据
user.setName("Jerry");
userMapper.updateById(user);
// 删除数据
userMapper.deleteById(1L);
// 查询数据
User result = userMapper.selectById(2L);
List<User> users = userMapper.selectList(null);
Page<User> page = userMapper.selectPage(new Page<>(1, 10), null);

在这个示例中,我们定义了一个名为User的实体类,并继承了Serializable接口。然后,我们定义了一个名为UserMapper的Mapper接口,并继承了BaseMapper。在插入、更新、删除、查询数据时,我们分别调用了UserMapper中的insert、updateById、deleteById、selectById等方法,完成了基础操作。


以上就是MybatisPlus基础操作的概念和代码示例。通过使用MybatisPlus提供的基础操作,我们可以更快速、更方便地进行数据库操作,提高开发效率。


分页查询


MybatisPlus支持分页查询,并且提供了丰富的分页查询API,例如Page类、IPage接口、PaginationInterceptor插件等。


1. 分页查询概念


分页查询是一种常见的数据库查询方式,它将大量数据拆分成若干个小块进行查询,从而提高查询效率和用户体验。MybatisPlus提供了丰富的分页查询API,例如Page类、IPage接口、PaginationInterceptor插件等,使得开发者可以更方便地进行分页查询操作。


2. 分页查询示例


下面是一个使用MybatisPlus进行分页查询的示例:

// 定义Mapper接口
public interface UserMapper extends BaseMapper<User> {}
// 分页查询数据
Page<User> page = new Page<>(1, 10);
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("age", 18);
userMapper.selectPage(page, wrapper);


在这个示例中,我们定义了一个名为UserMapper的Mapper接口,并继承了BaseMapper。在分页查询数据时,我们首先创建了一个名为page的Page对象,指定当前页数为1,每页显示10条记录。然后,我们使用QueryWrapper构造器创建一个查询条件,查询年龄为18的用户信息。最后,我们调用userMapper的selectPage方法进行分页查询,并将查询结果赋值给page对象。


3. 分页查询SQL代码


MybatisPlus会自动根据传入的分页参数生成对应的SQL语句,以下是MybatisPlus生成的分页查询SQL示例:

SELECT id,name,age FROM user WHERE age = ? LIMIT ?,?
-- 参数1:查询条件 age=18
-- 参数2:偏移量,即从第几条记录开始查询,例如当前页数为1,每页显示10条数据,则偏移量为0。
-- 参数3:每页显示的记录数,例如当前页数为1,每页显示10条数据,则每页显示的记录数为10。


以上就是MybatisPlus支持分页查询的概念、代码示例和生成的SQL语句。通过使用MybatisPlus提供的分页查询API,我们可以更方便地进行分页查询操作,并且可以提高查询效率和用户体验。


条件构造器


MybatisPlus提供了一种灵活、方便的条件构造器,可以根据动态条件生成SQL语句。常用的构造器有QueryWrapper和UpdateWrapper。


1. 条件构造器概念


条件构造器是MybatisPlus提供的一种灵活、方便的查询方式,可以根据动态条件生成SQL语句。常用的条件构造器有QueryWrapper和UpdateWrapper。QueryWrapper主要用于查询操作,UpdateWrapper主要用于更新操作。


2. 条件构造器示例


下面是一个使用MybatisPlus进行条件查询的示例:

// 定义Mapper接口
public interface UserMapper extends BaseMapper<User> {}
// 构造查询条件
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("age", 18);
if (StringUtils.isNotBlank(name)) {
    wrapper.like("name", name);
}
List<User> users = userMapper.selectList(wrapper);


在这个示例中,我们定义了一个名为UserMapper的Mapper接口,并继承了BaseMapper。在构造查询条件时,我们使用QueryWrapper构造器创建一个查询条件,查询年龄为18且姓名包含指定字符串的用户信息。其中,eq方法表示等于,like方法表示模糊匹配。如果传入姓名参数,则添加姓名匹配条件。最后,我们调用userMapper的selectList方法执行查询操作,并将查询结果赋值给users对象。


3. 条件构造器SQL代码


MybatisPlus会自动生成对应的SQL语句,以下是MybatisPlus生成的条件查询SQL示例:

SELECT id,name,age FROM user WHERE age = ? AND name LIKE ?
-- 参数1:查询条件 age=18
-- 参数2:查询条件 name like '%xxx%'


以上就是MybatisPlus条件构造器的概念、代码示例和生成的SQL语句。通过使用MybatisPlus提供的条件构造器,我们可以更灵活地进行查询操作,并且可以根据动态条件生成对应的SQL语句,提高查询效率和可维护性。


自动填充


MybatisPlus支持自动填充数据库表中的某些字段,例如创建时间、更新时间等。可以通过实现MetaObjectHandler接口实现自动填充功能。


1. 自动填充概念


自动填充是MybatisPlus提供的一种方便、快捷的功能,它可以自动填充数据库表中的某些字段,例如创建时间、更新时间等。通过实现MetaObjectHandler接口并重写对应的方法,即可实现自动填充功能。


2. 自动填充示例


下面是一个使用MybatisPlus进行自动填充的示例:

// 定义实体类
@Data
public class User {
    private Long id;
    private String name;
    private Integer age;
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;
}
// 实现MetaObjectHandler接口
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        this.strictInsertFill(metaObject, "createTime", Date.class, new Date());
        this.strictInsertFill(metaObject, "updateTime", Date.class, new Date());
    }
    @Override
    public void updateFill(MetaObject metaObject) {
        this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date());
    }
}
// 插入数据
User user = new User();
user.setName("Tom");
user.setAge(18);
userMapper.insert(user);
// 更新数据
user.setName("Jerry");
userMapper.updateById(user);


在这个示例中,我们定义了一个名为User的实体类,并在其中定义了创建时间和更新时间两个属性,并在其注解@TableField中指定了对应的填充策略。然后,我们实现了一个名为MyMetaObjectHandler的类,并继承了MetaObjectHandler接口,重写了insertFill、updateFill方法,分别表示插入和更新时填充对应的字段。最后,在插入和更新数据时,MybatisPlus会自动调用MyMetaObjectHandler的对应方法进行自动填充。


3. 自动填充SQL代码


自动填充是在Java层面进行处理的,不需要生成对应的SQL语句。


以上就是MybatisPlus自动填充的概念、代码示例和说明。通过使用MybatisPlus提供的自动填充功能,我们可以更方便地进行数据库操作,并且可以避免手动填充某些字段的繁琐工作。


代码生成器


MybatisPlus提供了一个强大的代码生成器,可以根据数据库表结构自动生成JavaBean、Mapper接口、XML文件等代码,极大地提高了开发效率。


1. 代码生成器概念


MybatisPlus提供了一个强大的代码生成器,可以根据数据库表结构自动生成JavaBean、Mapper接口、XML文件等代码,极大地提高了开发效率。通过使用代码生成器,我们可以快速生成基础的CURD代码,并且可以避免手写重复的代码。


2. 代码生成器示例


下面是一个使用MybatisPlus代码生成器的示例:

// 配置代码生成器
AutoGenerator generator = new AutoGenerator();
GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setOutputDir("src/main/java");
globalConfig.setAuthor("Little B");
generator.setGlobalConfig(globalConfig);
DataSourceConfig dataSourceConfig = new DataSourceConfig();
dataSourceConfig.setDbType(DbType.MYSQL);
dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/mybatis_plus?useUnicode=true&characterEncoding=utf8");
dataSourceConfig.setUsername("root");
dataSourceConfig.setPassword("123456");
generator.setDataSource(dataSourceConfig);
PackageConfig packageConfig = new PackageConfig();
packageConfig.setParent("com.example.mybatisplusdemo");
packageConfig.setEntity("entity");
packageConfig.setMapper("mapper");
generator.setPackageInfo(packageConfig);
StrategyConfig strategyConfig = new StrategyConfig();
strategyConfig.setNaming(NamingStrategy.underline_to_camel);
strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);
strategyConfig.setEntityLombokModel(true);
strategyConfig.setRestControllerStyle(true);
strategyConfig.setInclude("user");
generator.setStrategy(strategyConfig);
TemplateConfig templateConfig = new TemplateConfig();
templateConfig.setEntity("/templates/entity.java");
templateConfig.setMapper("/templates/mapper.java");
templateConfig.setXml("/templates/mapper.xml");
generator.setTemplate(templateConfig);
generator.execute();
相关文章
|
SQL Java 数据库连接
|
7天前
|
SQL Java 数据库连接
mybatisplus QueryWrapper or写法
# MyBatis-Plus QueryWrapper的OR写法详解 MyBatis-Plus是一款基于MyBatis的增强工具,提供了丰富的简化操作,使开发者能更高效地进行数据库操作。`QueryWrapper`是MyBatis-Plus中用于构建查询条件的一个核心类,支持多种条件组合,包括AND和OR条件。本文将详细介绍如何使用 `QueryWrapper`实现OR条件的查询。 ## QueryWrapper简介 `QueryWrapper`用于构建动态SQL查询条件,它封装了各种条件构造方法,使得查询条件的构建更加简洁和直观。`QueryWrapper`中提供了丰富的方法来支持多
14 0
|
6月前
|
SQL
解决一个mybatisplus left join里有ur报错问题
解决一个mybatisplus left join里有ur报错问题
65 0
|
5月前
|
Java Spring
mybatisplus的typeAliasesPackage 配置
【6月更文挑战第20天】mybatisplus的typeAliasesPackage 配置
616 3
TienChin 引入 MyBatisPlus
在父工程当中添加版本号,统一管理:
50 0
|
算法 数据库
MyBatisPlus之id生成策略
MyBatisPlus之id生成策略
421 0
|
SQL XML 缓存
MybatisPlus是什么,为什么这么多人用TA(下)
MybatisPlus是什么,为什么这么多人用TA
|
数据库
MybatisPlus dynamic
MybatisPlus dynamic
MybatisPlus常用条件查询器Wrapper的使用
MybatisPlus常用条件查询器Wrapper的使用
125 0