it编程 > 编程语言 > Java

Mybatis Plus Join使用方法示例详解

8人参与 2025-06-11 Java

1、pom文件

不引入mybatis的任何内容,防止包冲突

<dependency>
			<groupid>com.baomidou</groupid>
			<artifactid>mybatis-plus-boot-starter</artifactid>
			<version>3.5.5</version>
		</dependency>
		<dependency>
			<groupid>com.github.yulichang</groupid>
			<artifactid>mybatis-plus-join-boot-starter</artifactid>
			<version>1.5.3</version>
		</dependency>

2、yaml配置文件

mybatis-plus-join:
    #是否打印 mybatis plus join banner 默认true
    banner: true
    #全局启用副表逻辑删除(默认true) 关闭后关联查询不会加副表逻辑删除
    sub-table-logic: true
    #拦截器mappedstatement缓存(默认true)
    ms-cache: true
    #表别名(默认 t)
    table-alias: t
    #副表逻辑删除条件的位置,支持where、on
    #默认on (1.4.7.2及之前版本默认为where)
    logic-del-type: on

3、分页插件

 
import com.baomidou.mybatisplus.annotation.dbtype;
import com.baomidou.mybatisplus.extension.plugins.mybatisplusinterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.paginationinnerinterceptor;
import org.springframework.context.annotation.bean;
import org.springframework.context.annotation.configuration;
/**
 * mybatis-plus配置
 *
 * @author mark sunlightcs@gmail.com
 */
@configuration
public class mybatisplusconfig {
    /**
     * 添加分页插件
     */
    @bean
    public mybatisplusinterceptor mybatisplusinterceptor() {
        mybatisplusinterceptor interceptor = new mybatisplusinterceptor();
        interceptor.addinnerinterceptor(new paginationinnerinterceptor(dbtype.mysql)); // 如果配置多个插件, 切记分页最后添加
        // 如果有多数据源可以不配具体类型, 否则都建议配上具体的 dbtype
        return interceptor;
    }
}

4、示例代码:

 
import com.baomidou.mybatisplus.annotation.tableid;
import com.baomidou.mybatisplus.annotation.tablename;
import lombok.data;
@data
@tablename("address")
public class address {
    @tableid
    private long id;
    private long userid;
    private string city;
    private string address;
}
import com.baomidou.mybatisplus.annotation.tableid;
import com.baomidou.mybatisplus.annotation.tablename;
import lombok.data;
@data
@tablename("user")
public class user {
    @tableid
    private long id;
    private string name;
    private integer age;
    private string email;
}
import lombok.data;
import lombok.tostring;
@data
@tostring
public class userdto {
    private long id;
    private string name;
    private integer age;
    private string email;
    private string city;
    private string address;
}
import com.github.yulichang.base.mpjbasemapper;
import org.apache.ibatis.annotations.mapper;
@mapper
public interface addressmapper extends mpjbasemapper<address> {
}
import com.github.yulichang.base.mpjbasemapper;
import org.apache.ibatis.annotations.mapper;
@mapper
public interface usermapper extends mpjbasemapper<user> {
}

5、测试代码

 
import cn.hutool.json.jsonutil;
import com.baomidou.mybatisplus.extension.plugins.pagination.page;
import com.github.yulichang.wrapper.mpjlambdawrapper;
import lombok.extern.slf4j.slf4j;
import org.junit.test;
import org.junit.runner.runwith;
import org.springframework.beans.factory.annotation.autowired;
import org.springframework.boot.test.context.springboottest;
import org.springframework.test.context.junit4.springrunner;
import java.util.list;
@springboottest(classes = renrenapplication.class)
@runwith(springrunner.class)
@slf4j
public class sampletest {
    @autowired
    private usermapper usermapper;
    @test
    public void testselect() {
        mpjlambdawrapper<user> wrapper = new mpjlambdawrapper<user>()
                .selectall(user.class)//查询user表全部字段
                .select(address::getcity, address::getaddress)
                .leftjoin(address.class, address::getuserid, user::getid);
        list<userdto> userlist = usermapper.selectjoinlist(userdto.class, wrapper);
        userlist.foreach(system.out::println);
        //分页查询 (需要启用 mybatis plus 分页插件)
        page<userdto> listpage = usermapper.selectjoinpage(new page<>(1, 2), userdto.class, wrapper);
        log.info("分页查询结果:{}", jsonutil.tojsonstr(listpage));
    }
}
class test {
    @resource
    private usermapper usermapper;
    void testjoin() {
        //和mybatis plus一致,mpjlambdawrapper的泛型必须是主表的泛型,并且要用主表的mapper来调用
        mpjlambdawrapper<userdo> wrapper = joinwrappers.lambda(userdo.class)
                .selectall(userdo.class)//查询user表全部字段
                .select(useraddressdo::gettel)//查询user_address tel 字段
                .selectas(useraddressdo::getaddress, userdto::getuseraddress)//别名
                .select(areado::getprovince, areado::getcity)
                .leftjoin(useraddressdo.class, useraddressdo::getuserid, userdo::getid)
                .leftjoin(areado.class, areado::getid, useraddressdo::getareaid)
                .eq(userdo::getid, 1)
                .like(useraddressdo::gettel, "1")
                .gt(userdo::getid, 5);
        //连表查询 返回自定义resulttype
        list<userdto> list = usermapper.selectjoinlist(userdto.class, wrapper);
        //分页查询 (需要启用 mybatis plus 分页插件)
        page<userdto> listpage = usermapper.selectjoinpage(new page<>(2, 10), userdto.class, wrapper);
    }
}

6、和pagehelper结合

6.1引入pom文件

        <dependency>
			<groupid>com.baomidou</groupid>
			<artifactid>mybatis-plus-boot-starter</artifactid>
			<version>3.5.5</version>
		</dependency>
		<dependency>
			<groupid>com.github.yulichang</groupid>
			<artifactid>mybatis-plus-join-boot-starter</artifactid>
			<version>1.5.3</version>
		</dependency>
		<dependency>
			<groupid>com.github.pagehelper</groupid>
			<artifactid>pagehelper-spring-boot-starter</artifactid>
			<version>1.4.6</version>
		</dependency>

6.2 pagehelper配置

pagehelper:
    helper-dialect: mysql    # 数据库方言
    reasonable: true         # 页码越界时自动修正
    support-methods-arguments: true  # 支持接口参数分页
    params: count=countsql

6.3 测试代码:

 
import lombok.extern.slf4j.slf4j;
import org.junit.test;
import org.junit.runner.runwith;
import org.springframework.beans.factory.annotation.autowired;
import org.springframework.boot.test.context.springboottest;
import org.springframework.test.context.junit4.springrunner;
import java.util.list;
@springboottest(classes = application.class)
@runwith(springrunner.class)
@slf4j
public class sampletest {
    @autowired
    private usermapper usermapper;
    @test
    public void testselect() {
        mpjlambdawrapper<user> wrapper = new mpjlambdawrapper<user>()
                .selectall(user.class)//查询user表全部字段
                .select(address::getcity, address::getaddress)
                .leftjoin(address.class, address::getuserid, user::getid);
        list<userdto> userlist = usermapper.selectjoinlist(userdto.class, wrapper);
        log.info("查询结果:{}", jsonutil.tojsonstr(userlist));
        pagehelper.startpage(1, 2);
        list<userdto> userlist1 = usermapper.selectjoinlist(userdto.class, wrapper);
        pageinfo<userdto> pageinfo = new pageinfo<>(userlist1);
        log.info("pagehelper 分页查询结果:{}", jsonutil.tojsonstr(pageinfo));
        pagehelper.clearpage();
        //分页查询 (需要启用 mybatis plus 分页插件)
        page<userdto> listpage = usermapper.selectjoinpage(new page<>(1, 4), userdto.class, wrapper);
        log.info("分页查询结果:{}", jsonutil.tojsonstr(listpage));
    }
}

到此这篇关于mybatis plus join使用方法示例详解的文章就介绍到这了,更多相关mybatis plus join使用内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

您想发表意见!!点此发布评论

推荐阅读

MybatisPlus service接口功能介绍

06-11

MyBatis ResultMap 的基本用法示例详解

06-11

Mybatis的分页实现方式

06-11

Java中实现线程的创建和启动的方法

06-11

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

06-11

MyBatis-Plus 条件构造器Wrapper使用示例详解(最新整理)

06-11

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论