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
<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去了
做猪小侠源码的代理,提供一站式服务
如果你不懂得搭建网站或者服务器,小程序,源码之类的怎么办? 第一通过本站学习各种互联网的技术 第二就是联系客服,我帮帮你搭建(当然要收取部分的费用) 第三成为我们的代理,我们提供整套的服务。