mybatis plus的一些操作

在控制台显示SQL语句以及信息,需要配置文件添加

#配置后可以显示sql语句
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

mybatis plus的ID自动增长的用法

@TableId(type = IdType.AUTO)//自动增长
    private Long ID ; //ID

@TableId(type = IdType.INPUT)//需要自动输入ID
    private Long ID ; //ID

@TableId(type = IdType.NONE)//需要自动输入ID
    private Long ID ; //ID

@TableId(type = IdType.ASSIGN_UUID)//随机生成一个值
    private Long ID ; //ID

@TableId(type = IdType.ASSIGN_ID)//雪花算法
    private Long ID ; //ID

mybatis plus的自动填充的用法

    @TableField(fill = FieldFill.INSERT) //在添加的时候会自动填充一个值
    private Date createtime ; //创建时间

    @TableField(fill = FieldFill.INSERT_UPDATE) //在添加的时候都会有值
    private Date updatetime ; //修改时间

创建一个类并交给spring管理

package com.liyiba.employee.handler;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;

@Component
public class MyMetaObjectHandler implements MetaObjectHandler {

    /**
     * 使用mp实现添加操作,这个方法执行
     * @param metaObject
     */
    @Override
    public void insertFill(MetaObject metaObject) {
        //实体类中的字段   需要自动填充的数据   metaObject
        this.setFieldValByName("createtime",new Date(),metaObject);
        //实体类中的字段   需要自动填充的数据   metaObject
        this.setFieldValByName("updatetime",new Date(),metaObject);
        //实体类中的字段   需要自动填充的数据   metaObject  用于乐观锁
        this.setFieldValByName("version",1,metaObject);
    }

    /**
     * 使用mp实现修改操作,这个方法执行
     * @param metaObject
     */
    @Override
    public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("updatetime",new Date(),metaObject);
    }
}

乐观锁

//在数据库与实体类加一个代表版本号的字段
    @Version //加上注解代表为乐观锁
    private Integer version ; //版本号

配置乐观锁插件

package com.liyiba.employee.Config;

import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@MapperScan("com.liyiba.employee.dao")
public class MpConfig {

    //乐观锁插件
    @Bean
    public OptimisticLockerInterceptor optimisticLockerInterceptor() {
        return new OptimisticLockerInterceptor();
    }
}

测试:

 @Autowired
    private UserService userService ;
    @Test
    void contextLoads() {
        //根据ID查询数据
        User user = userService.findAllById(1L);
        //进行修改
        user.setUsername("2222");
        userService.updateById(user);
    }

多条查询:

userDao.selectBatchIds(Arrays.asList(1,2));

mybatis分页查询

//分页插件
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
@Test
    void contextLoads() {
        //1.创建一个page对象
        //2.传入两个参数:当前页 和 每页显示的条数
        Page page = new Page<>(1,3);
        //3.调用分页查询的方法
        userDao.selectPage(page, null);
    }

逻辑删除

    @TableLogic
    //在数据库与实体类中加个deleted
    private Integer deleted ; //逻辑删除

性能分析插件

//Spring boot方式
@EnableTransactionManagement
@Configuration
@MapperScan("com.baomidou.cloud.service.*.mapper*")
public class MybatisPlusConfig {

    /**
     * SQL执行效率插件
     */
    @Bean
    @Profile({"dev","test"})// 设置 dev test 环境开启
    public PerformanceInterceptor performanceInterceptor() {
        return new PerformanceInterceptor();
    }
}

 

你可能感兴趣的:(mybatis,plus)