关于mybatis一对一查询一对多查询遇到的问题

2023-01-21 0 3,245

springboot整合mybatis项目
博客系统
文章相册,评论,标签,等表
IDEA为最新版2021.3.3,mysql数据库为最新版Navicat
(或许有些字段不支持特定的命名)

也是醉了,以前idea还是19版的,navicat也是老版本的时候mybatis关联查询mapper操作能正常运行,拿到相应字段,并封装,但最近写项目过程中遇到一个离谱的是,过了好久才发现,

当关联查询时,无论一对一还是一对多
除了需要注意javaType和ofType之外,还应该注意各表主键不能同一名称

实体类文章

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Article implements Serializable {
    private Integer id;
    private Integer authorId;
    private String title;
    private String content;
    private Timestamp date;//private LocalDate date;
    private Users user;
    private List<Comment> commentList;
    private List<ArticleTag> articleTagList;
}

接下来是对文章进行操作,要求查询全部文章,并关联查询作者,文章标签(一个文章多个标签)

先看一下我下面代码块的写法,注意一对一,一对多的各个实体查询时的id,都是拿的数据库的id字段,只有标签被我改为了tag_id

关于mybatis一对一查询一对多查询遇到的问题

<select id=\"queryAllArticles\" resultMap=\"ArticleList\">
        select a.*,u.*,t.*
        from article a
                 join users u on a.authorid = u.id
                 left outer join article_tag t on a.id = t.article_id
    </select>
    <resultMap id=\"ArticleList\" type=\"article\">
        <id column=\"id\" property=\"id\"/>
        <result column=\"authorid\" property=\"authorId\"/>
        <result column=\"title\" property=\"title\"/>
        <result column=\"content\" property=\"content\"/>
        <result column=\"date\" property=\"date\"/>
        <association property=\"user\" javaType=\"users\">
            <id column=\"id\" property=\"id\"/>
            <result column=\"pet_name\" property=\"petName\"/>
            <result column=\"headportrait\" property=\"headPortrait\"/>
        </association>
        <collection property=\"articleTagList\" ofType=\"articleTag\">
            <id column=\"tag_id\" property=\"tagId\"/>
            <result column=\"article_id\" property=\"articleId\"/>
            <result column=\"tag_content\" property=\"tag\"/>
        </collection>
    </resultMap>

如下图
所以当我测试的时候能正常根据id拿到每张表的同一主键名称id吗

并不能拿到
控制台仅仅正确输出了标签list中的tag_id,没错,细心点,我也是最后才发现,它nn的,上面输出的user(文章作者)他的id封装错了,他的id是这篇文章的id,所以,sql我自此所有表的主键不都全命名为id了,防止此处再烙下病根,而且数据库字段在命名时,我发现字段名字为describe和tag都查不到数据,本来想简简单单命名的数据库表,也得上心了拜拜了~~改bug去了

:本文采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可, 转载请附上原文出处链接。
1、本站提供的源码不保证资源的完整性以及安全性,不附带任何技术服务!
2、本站提供的模板、软件工具等其他资源,均不包含技术服务,请大家谅解!
3、本站提供的资源仅供下载者参考学习,请勿用于任何商业用途,请24小时内删除!
4、如需商用,请购买正版,由于未及时购买正版发生的侵权行为,与本站无关。
5、本站部分资源存放于百度网盘或其他网盘中,请提前注册好百度网盘账号,下载安装百度网盘客户端或其他网盘客户端进行下载;
6、本站部分资源文件是经压缩后的,请下载后安装解压软件,推荐使用WinRAR和7-Zip解压软件。
7、如果本站提供的资源侵犯到了您的权益,请邮件联系: 442469558@qq.com 进行处理!

猪小侠源码-最新源码下载平台 Java教程 关于mybatis一对一查询一对多查询遇到的问题 http://www.20zxx.cn/463325/xuexijiaocheng/javajc.html

猪小侠源码,优质资源分享网

常见问题
  • 本站所有资源版权均属于原作者所有,均只能用于参考学习,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担
查看详情
  • 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,建议提前注册好百度网盘账号,使用百度网盘客户端下载
查看详情

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务