Mybatis-plus 使用备忘

2021-07-26  本文已影响0人  KenChen_939

MyBatis Plus是一个MyBatis的增强器。在MyBatis的基础上只做增强不做改变。

依赖:

<!--        持久层:mybatis plus,mysql-->
        <!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.2</version>
        </dependency>

关于CRUD

正常写pojo类,但是mapper只需要继承BaseMapper即可
此时既可调用mapper的CRUD方法。但是MyBatis Plus的功能远不止与此。

@Mapper
public interface UserMapper extends BaseMapper<User> {

}


@Autowired
private UserMapper userMapper;


/**
 * 查询全部
 */
@Test
public void selectAll(){
    System.out.println("--------SelectAll method test-------");
    List<User> userList = userMapper.selectList(null);
    userList.forEach(System.out::println);
}


/**
 * 根据ID查询
 */
@Test
public void selectById(){
    System.out.println("--------SelectById method test-------");
    User user = userMapper.selectById(1);
    System.out.println(user.toString());
}


/**
 * 批量删除
 */
@Test
public void deleteByIds(){
    System.out.println("--------DeleteByIds method test-------");
    List<Integer> list = new ArrayList<>();
    for (int i = 0; i <3 ; i++) {
        list.add(i);
    }
    userMapper.deleteBatchIds(list);
}

条件构造器 Wrapper

对于需要进行条件筛选的SQL来说,就需要用到条件构造器,它可以生成轻度复杂的sql语句。


image.png
//selectList
@Test
public void QueryWrapperTest(){
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.ge("age",20);                                    //查询所有年龄小于20的user。

    List<User> userList = userMapper.selectList(queryWrapper);
    userList.forEach(System.out::println);
}

//selectPage

/**
 * 分页查询
 */
@Test
public void selectPage(){
    Page<User> page = new Page<>(1, 3);
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    Page<User> userIPage = userMapper.selectPage(page, queryWrapper);

    System.out.println(userIPage.toString());
    System.out.println("总条数"+userIPage.getTotal());
    System.out.println(userIPage.getRecords());
}
}

关于分页

//分页查询插件,需添加config
@EnableTransactionManagement
@Configuration
@MapperScan("cn.lnfvc.ken.demo.mapper")// 这里配置自己项目的dao层目录
public class MybatisPlusConfig {
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
        // 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求  默认false
        // paginationInterceptor.setOverflow(false);
        // 设置最大单页限制数量,默认 500 条,-1 不受限制
        // paginationInterceptor.setLimit(500);
        // 开启 count 的 join 优化,只针对部分 left join
        paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
        return paginationInterceptor;
    }

    // 最新版
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
    MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
    interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
    return interceptor;
}

日志打印

如果要看执行的sql语句,可以在yml中添加配置信息.在执行时就会打印出来。

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
上一篇下一篇

猜你喜欢

热点阅读