mybatis plus 多表查询

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_38891150/article/details/86664528

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

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

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

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

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

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

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

2、要配置mapper xml的位置

     在yml文件下配置

     

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

      

 

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

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

接着在mapper xml文件编写映射

type代表返回的对象

conllection是一对多时使用

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

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;

/**
 * <p>
 * 
 * </p>
 *
 * @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;

/**
 * <p>
 * 
 * </p>
 *
 * @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<Course> courses;

    public List<Course> getCourses() {
        return courses;
    }

    public void setCourses(List<Course> 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<Teacher> teachers = new ArrayList<>();
        teachers = teacherMapper.selectTC();
        for (Teacher t:teachers) {
            System.out.println("---"+t);
        }

测试类前要加注解

测试结果

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

 

展开阅读全文

没有更多推荐了,返回首页