SpringBoot整合mybatis-plus

本文介绍了如何在SpringBoot项目中整合mybatis-plus,包括新增操作的主键生成策略,逻辑删除功能的实现,自动填充修改时间,以及查询和分页的使用方法。通过配置和接口的继承,可以便捷地进行数据库操作。

引入mybatis-plus的依赖

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

创建一个接口并继承BaseMapper,泛型中必须是要使用的实体类

把接口注入要调用的地方

在调用的时候会出现接口父类的方法,直接按照要求使用即可

1.新增注意:

当使用新增方法时可以对主键加入注解实现新增时主键值的生成方式进行更改,默认为雪花算法生成主键的值。

所有的类型如下

使用时可以直接向实体中的主键字段传null

    public void testPrimary(){
        TabId tabId=new TabId(null,"aa");
        int insert = myBatisPlusMapper.insert(tabId);
        System.out.println(insert);
    }

2.逻辑删除

使用逻辑删除时需要保证数据库中有一个整型的字段,且0代表正常,1代表删除。并且要在实体的逻辑删除字段加上声明的注解。

配置完成后调用删除方法时会自动变成更新数据库数据的状态。

3.修改时更改时间的自动填充

当数据库的表中有新增时间字段或更新时间字段时可以使用该方式进行自动根据当前时间更新数据库中的数据。对字段添加@TableField注解并给fill属性一个何时调用的值。

然后生成一个没有新增时间和更新时间的构造方法,当调用时使用这个构造即可完成另两个字段的更新。

还需要把两个字段配置到配置类里才可以正常使用。

@Configuration
public class MyConfig implements MetaObjectHandler {

    @Override
    public void insertFill(MetaObject metaObject) {
        this.strictInsertFill(metaObject, "createTime", Date.class, new Date()); // 起始版本 3.3.0(推荐使用)
        this.strictInsertFill(metaObject, "updateTime", Date.class, new Date()); // 起始版本 3.3.0(推荐使用)
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date()); // 起始版本 3.3.0(推荐)
    }
}

4.查询

关于查询需要的方法大多是需要一个Wrapper类作为参数的,Wrapper是封装检索条件的类的接口,使用时大多使用它的实现类QueryWrapper  UpdateWrapper  LambdaQueryWrapper LambdaUpdateWrapper等,可以在该类中设置大多数的检索条件。

例子:

        QueryWrapper<TabId> wrapper=new QueryWrapper<>();
        wrapper.between("age",10,18);//字段age的值在10-18之间
        wrapper.or();//前一个检索条件和后一个的逻辑运算符为 ‘或’
        wrapper.like("name","章");//模糊检索:字段name包含‘章’
        wrapper.orderByDesc("age");//按照字段age的大小降序排列
        wrapper.orderByAsc("age");//按照字段age的大小升序排列
        wrapper.in("age",18,17,16);//字段age的值在数组[18,17,16]中
        List<TabId> tabIds = myBatisPlusMapper.selectList(wrapper);
        System.out.println(tabIds);

5.分页

plus自带分页,但是需要先在配置类里配置

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));//我用的是MYSQL数据库,所以值为DbType.MYSQL
        return interceptor;
    }

使用方式如下:

    @Test
    public void testSelectByPage(){
        /**
         * Page:当前页码  每页显示的条数
         */
        Page<TabId> page=new Page<>(2,4);
        Page<TabId> page1 = myBatisPlusMapper.selectPage(page, null);
        System.out.println("当前的总页码:"+page1.getPages());
        System.out.println("总条数:"+page1.getTotal());
        System.out.println("当前页的记录:"+page1.getRecords());
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值