mybatis-plus基本使用

简介: mybatis-plus基本使用

如果一个人不知道他要驶向哪个码头,那么任何风都不会是顺风。——小塞涅卡

上回我们写到封装了axios的工具类

今天我把OSS上传文件接了,可以去项目目录自取

前端项目:https://gitee.com/VampireAchao/my-vue-app.git

后端项目:https://gitee.com/VampireAchao/simple-springboot.git

传统代码以点到为止,所以这里就不再多聊OSS,想了解可以看这篇博客

然后我们聊聊mybatis-plus的基本使用

首先引入依赖,这个没什么好说的

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

然后我们按照之前创的表去对应新建一个DO

因为之前我们的表结构为这样【Tips:用的SQLite】【创建库表】【整合进项目

所以我们的DO长这样

package com.ruben.pojo.dataObject;/**
 * @ClassName: UserDataObject
 * @Date: 2020/11/21 0021 15:55
 * @Description:
 */
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruben.pojo.UserInfo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
 * @ClassName: UserDataObject
 * @Description: 我还没有写描述
 * @Date: 2020/11/21 0021 15:55
 * *
 * @author: <achao1441470436@gmail.com>
 * @version: 1.0
 * @since: JDK 1.8
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName("user")
public class UserDataObject implements Serializable {
    private static final long serialVersionUID = -1891465370283313432L;
    private Integer id;
    private String username;
    private String password;
    @TableField(exist = false)
    private UserInfo userInfo;
}

注意,这里的@TableName是指定表名的意思

以及我们如果字段名称不对应的话需要使用@TableField注解,这个注解中,可以指定value为我们的表字段名;如果字段不存在与表中,可以指定exist=false

然后我们再新建一个mapper

package com.ruben.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruben.pojo.dataObject.UserDataObject;
import org.apache.ibatis.annotations.Mapper;
/**
 * @ClassName: MpUserMapper
 * @Date: 2020/11/21 0021 15:54
 * @Description:
 */
@Mapper
public interface MpUserMapper extends BaseMapper<UserDataObject> {
}

编写测试类测试

package com.ruben;/**
 * @ClassName: MybatisPlusDemo
 * @Date: 2020/11/9 0009 20:51
 * @Description:
 */
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.api.R;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruben.dao.MpUserMapper;
import com.ruben.pojo.User;
import com.ruben.pojo.dataObject.UserDataObject;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.annotation.DependsOn;
import javax.annotation.Resource;
import java.io.Serializable;
import java.util.function.Function;
/**
 * @ClassName: MybatisPlusDemo
 * @Description: 我还没有写描述
 * @Date: 2020/11/9 0009 20:51
 * *
 * @author: <achao1441470436@gmail.com>
 * @version: 1.0
 * @since: JDK 1.8
 */
@SpringBootTest
public class MybatisPlusDemo {
    @Resource
    private MpUserMapper mpUserMapper;
    @Test
    public void test() {
        IPage<UserDataObject> page = mpUserMapper.selectPage(new Page<>(1, 2), Wrappers.lambdaQuery(UserDataObject.builder().build()));
        System.out.println(page);
    }
}

这里我没大意,顺便把springboot-test-starter的依赖放出来

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependency>

我们运行后debug可以看到查询出来了我们想要的数据

我们再来一个

例如我们需要根据多个ID查询,并且 名字里有achao 或者 Achao

IPage<UserDataObject> page = mpUserMapper.selectPage(new Page<>(1, 2), Wrappers.lambdaQuery(UserDataObject.builder().build()));
        System.out.println(page);
        LambdaQueryWrapper<UserDataObject> wrapper = Wrappers.lambdaQuery(UserDataObject.builder().build());
        // 取得用户ids
        List<Integer> userIds = page.getRecords().stream().map(UserDataObject::getId).collect(Collectors.toList());
        // 根据ids用IN查询
        wrapper.in(UserDataObject::getId, userIds)
                // 并且
                .and(w -> w.like(UserDataObject::getUsername, "achao").or(wr -> wr.like(UserDataObject::getUsername, "Achao")));
        page = mpUserMapper.selectPage(new Page<>(1, 2), wrapper);
        System.out.println(page);

很容易就写好了,查询结果,但我们发现这里分页有问题,返回的total为0

我们需要写个mybatis-plus的配置类

package com.ruben.config;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
 * @ClassName: MybatisPlusConfig
 * @Description: 我还没有写描述
 * @Date: 2020/11/21 0021 16:34
 * *
 * @author: <achao1441470436@gmail.com>
 * @version: 1.0
 * @since: JDK 1.8
 */
@Configuration
@MapperScan("com.ruben.dao.mapper*")
public class MybatisPlusConfig {
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
        return paginationInterceptor;
    }
}

然后我们的分页问题就解决了

最后放上mybatis-plus官网https://mybatis.plus/

相关文章
|
SQL Java 数据库连接
MyBatis 基本使用
创建一个普通的Maven项目,然后添加对应的Mybatis和MySQL的相关依赖
48 0
|
6月前
|
SQL Java 数据库连接
MyBatis入门——MyBatis的基础操作(2)
MyBatis入门——MyBatis的基础操作(2)
30 4
|
7月前
|
SQL Java 数据库连接
|
Java 数据库连接 Maven
SSM复习之mybatis01:Mybatis简介-第一个Mybatis代码简单实现
SSM复习之mybatis01:Mybatis简介-第一个Mybatis代码简单实现
57 0
|
SQL XML Java
MyBatis注解基本使用
MyBatis注解是一种用于配置MyBatis映射关系和SQL操作的方式,通过在Java接口或方法上使用注解来代替XML配置,使得配置更加简洁明了。在MyBatis中,可以使用以下几个主要的注解来定义映射关系和SQL操作。
113 2
|
SQL 前端开发 Oracle
MyBatis-Plus用法 真的很强大啊(二)
MyBatis-Plus用法 真的很强大啊(二)
88 0
|
存储 druid Java
MyBatis-Plus用法 真的很强大啊(一)
MyBatis-Plus用法 真的很强大啊(一)
119 0
|
SQL Java 数据库连接
MyBatis 注解的基本使用
MyBatis 注解的基本使用
|
SQL Java 数据库连接
[mybatis]Example的用法
[mybatis]Example的用法
259 0
|
SQL Java 数据库连接
MyBatis的配置和简单使用
MyBatis的配置和简单使用
MyBatis的配置和简单使用

热门文章

最新文章