36人参与 • 2025-06-11 • Java
不引入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>
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
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;
}
}
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> {
}
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);
}
}<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>
pagehelper:
helper-dialect: mysql # 数据库方言
reasonable: true # 页码越界时自动修正
support-methods-arguments: true # 支持接口参数分页
params: count=countsql
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使用内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论