表关联查询+Mybatis-plus表关联查询所遇到的问题

  • 项目背景

使用MyBatis-Plus生成模板,进行表关联查询。

  • 使用表

文章表+作者表 文章表中有一个author_id 连接 作者表中的id

文章表

作者表

  • 实体类

想要使用表关联查询,需要在文章类中添加一个作者对象,两个实体类如下

//文章实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
@TableName("article")
public class Article extends Model<Article> {

    private static final long serialVersionUID = 1L;

    private String id;

    private String name;

    private String content;

    @TableField(exist = false)  //重点:Mybatis-plus中默认操作忽略该字段
    private Author author;

    @Override
    protected Serializable pkVal() {
        return this.id;
    }

}

//作者实体类
//文章实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
@TableName("author")
public class Article extends Model<Author> {

    private static final long serialVersionUID = 1L;

    private String id;

    private String name;

  
    @Override
    protected Serializable pkVal() {
        return this.id;
    }

}

重点:Mybatis-plus在使用表关联查询的时候,如果使用了mybatis-plus封装的方法,在实体类中,必须将连接的对象添加注释

 @TableField(exist = false)

即该条属性是数据库表中不存在的,但是又是需要使用的属性

若不添加,则使用封装的方法时会报错,找不到该列

  • mapper内语句

//resultMapper
<!-- 通用查询映射结果 -->
    <resultMap id="rm" type="com.baizhi.entity.Article">
        <id column="id" property="id" />
        <result column="name" property="name" />
        <result column="author_id" property="authorId" />
        <result column="content" property="content" />
        <association property="author" javaType="Author">
            <id property="id" column="gid"/>
            <result column="name" property="name"/>
        </association>
    </resultMap>

//sql语句
<select id="query" resultMap="rm">
      select a.id,a.name,a.author_id,a.content,g.id gid,g.name from article a left join author g on a.author_id = g.id 
</select>

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值