mybatis-plus3.5.1学习笔记

1、ID

1>id策略有6种:
mybatis-plus3.5.1学习笔记_第1张图片
想要id自增就在id上面添加

@TableId(type = IdType.AUTO)

mybaits-plus的默认的主键策略是:

@TableId(type = IdType.ID_WORKER)

这样生成的是19位的数字id。

有的人喜欢使用UUID:

@TableId(type = IdType.UUID)

2、createTime(创建时间),updateTime(修改时间)

1>首先我们的数据库字段必须要有createTime(创建时间),updateTime(修改时间)这两个字段
2>在实体类添加注解

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

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

3>在项目目录下新增一个handler包,在包下创建MyMetaObjectHandler.java

@Component
public class MyMetaObjectHandler implements MetaObjectHandler {

   
    
    //使用mp实现添加操作,这个方法执行
    @Override
    public void insertFill(MetaObject metaObject) {
        this.setFieldValByName("createTime", new Date(), metaObject);
        this.setFieldValByName("updateTime", new Date(), metaObject);

    }

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

3、乐观锁——version

1> 数据库表中添加:“version”,并设置默认值为1
2>实体类中添加字段,然后加上@version注解

@Version
private Integer Version;

3>在项目目录下新建一个包:config。然后在包下面新建:Mpconfig.java文件。

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@EnableTransactionManagement
@Configuration
@MapperScan("com.bang.mp.mapper")//这里是扫描mapper
public class MpConfig {

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
        //乐观锁插件
        mybatisPlusInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
        //分页插件
        mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return mybatisPlusInterceptor;
    }
}

4>进行测试

//首先插入一条数据,version字段默认赋值为1
@Test
void testInsert(){
    User user = new User();
    user.setAge(18);
    user.setName("阿昌");
    user.setEmail("[email protected]");
    int result = userMapper.insert(user);
}
//在对这条数据进行修改,version会变成 2
@Test
void testOptimisticLocker(){
   //查询
   User user = userMapper.selectById(1364080977348956166L);
    //修改数据
   user.setName("Helen Yao");
   user.setEmail("[email protected]");
    //执行更新
   userMapper.updateById(user);
}

4、分页插件

1>在Mpconfig.java 中添加,为了方便,我在步骤3:乐观锁中已经添加了

//分页插件
        mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));

2>测试

//分页查询
@Test
void testPage(){
    //1、创建page对象
    //传入参数:当前页 和 每页显示记录数
    Page<User> userPage = new Page<>(1,3);
    //调用mp分页查询方法
    //调用mp分页查询过程中,底层会封装,把所有分页数据分装到page对象中
    userMapper.selectPage(userPage,null);

    //通过page对象获取数据
    userPage.getRecords().forEach(System.out::println);//遍历查询的分页数据
    System.out.println(userPage.getCurrent());//获取当前页
    System.out.println(userPage.getSize());//每页显示记录数
    System.out.println(userPage.getTotal());//总记录数
    System.out.println(userPage.getPages());//总页数

    System.out.println(userPage.hasNext());//判断是否有下一页
    System.out.println(userPage.hasPrevious());//判断是否有上一页
}

5、逻辑删除

1> 数据库表中添加:“deleted”,并设置默认值为0,在这里mybatis-plus默认0是未删除,1是已删除。
2>实体类中添加字段,然后加上@TableLogic注解

@TableLogic
private Integer deleted;

3>测试

/**
* 测试 逻辑删除
*/
@Test
public void testLogicDelete() {
int result = userMapper.deleteById(1L);
System.out.println(result);
}

6、条件查询

QueryWrapper queryWrapper = new QueryWrapper();
//ge >= ,gt> ,le<=, lt<
queryWrapper.ge("age",30);
//eq,ne

//between 年龄在20岁到30岁
queryWrapper.between("age",20,30);


//like 模糊查询
queryWrapper.like("name","岳");

//orderBy
queryWrapper.orderByAsc("id");
queryWrapper.orderByDesc("id");
//last 就是在sql 的后面添加
queryWrapper.last("limit 1");
//查询指定的列
queryWrapper.select("id","name");
List<User> list = userMapper.selectList(queryWrapper);

你可能感兴趣的:(java,java,java-ee,intellij-idea)