mybatis plus 多表查询

mybatis plus的mapper.xml貌似是和mybatis一模一样的,可以使用mybatis plus自动生成的mapper.xml和mapper接口

本demo是springboot结合mybatis plus,IDE是idea。

本文的前提是你已经可以生成代码,并且测试生成mapper接口已经成功

利用mybatis plus的代码生成器生成各结构,红色方框里面的就是生成的代码。我按照course表和teacher两个表生成的。

mybatis plus 多表查询_第1张图片

接下来要注意一些事项,确保项目可以跑起来

1、springboot启动类注解mapper接口扫描

mybatis plus 多表查询_第2张图片

如果不注解,或者注解错了,在引用mapper接口时会报错

2、要配置mapper xml的位置

     在yml文件下配置

     mybatis plus 多表查询_第3张图片

      其次,还要再pom.xml文件配置,我这里的mapper xml是放在resources下的,如果是放在java下面的,第二个resources就不能这么写了

      mybatis plus 多表查询_第4张图片

 

好,配置结束,接下来来写多表查询的mapper xml文件,和mapper接口

这里定义一个selectTC接口,代表teacher表和course表的联查

mybatis plus 多表查询_第5张图片

接着在mapper xml文件编写映射

type代表返回的对象

conllection是一对多时使用

courses是自己在Teacher类添加的一个List 的属性

mybatis plus 多表查询_第6张图片

Teacher和Couse代码

package com.baomidou.ant.sys.entity;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * 

* *

* * @author jobob * @since 2019-01-26 */ //@Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) public class Course implements Serializable { private static final long serialVersionUID = 1L; @TableId("cNumber") private String cNumber; @TableField("cName") private String cName; @TableField("tNumber") private String tNumber; public static long getSerialVersionUID() { return serialVersionUID; } public String getcNumber() { return cNumber; } public void setcNumber(String cNumber) { this.cNumber = cNumber; } public String getcName() { return cName; } public void setcName(String cName) { this.cName = cName; } public String gettNumber() { return tNumber; } public void settNumber(String tNumber) { this.tNumber = tNumber; } @Override public String toString() { return "Course{" + "cNumber='" + cNumber + '\'' + ", cName='" + cName + '\'' + ", tNumber='" + tNumber + '\'' + '}'; } }
package com.baomidou.ant.sys.entity;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import java.util.List;

import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * 

* *

* * @author jobob * @since 2019-01-26 */ //@Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) public class Teacher implements Serializable { private static final long serialVersionUID = 1L; @TableId("tNumber") private String tNumber; @TableField("tName") private String tName; private List courses; public List getCourses() { return courses; } public void setCourses(List courses) { this.courses = courses; } public static long getSerialVersionUID() { return serialVersionUID; } public String gettNumber() { return tNumber; } public void settNumber(String tNumber) { this.tNumber = tNumber; } public String gettName() { return tName; } public void settName(String tName) { this.tName = tName; } @Override public String toString() { return "Teacher{" + "tNumber='" + tNumber + '\'' + ", tName='" + tName + '\'' + ", courses=" + courses + '}'; } }

get set和tostring方法是我自己生成的,因为不知道@Data注解怎么使用,有小伙伴知道的话,顺便给我留下言告诉我。

 

接下来测试

    @Test
    public void liancha(){
        List teachers = new ArrayList<>();
        teachers = teacherMapper.selectTC();
        for (Teacher t:teachers) {
            System.out.println("---"+t);
        }

测试类前要加注解

mybatis plus 多表查询_第7张图片

测试结果

ok搞定。建议先把mapper映射弄清楚,不要以为根据别人项目去照写。我就是,跟着别人的代码一步一步打,但是却总是差狠多,因为别人不能把所有的点都讲清楚,所以有时报了错,你根本就不知道错在哪里。改不了只能从头开始,万一成功了,你也不明白这是为什么,下一次要写同样的功能是只能按步骤,机械化似的复制代码,不明所以然,有bug往往需要耗费很多的时间来解决。

 

你可能感兴趣的:(java)