mybatis总结
编程走的坑
由于没有指定关联的 id,导致只查询出一对多的第一个元素
<resultMap id="blogResult" type="Blog">
<id property="id" column="blog_id" />
<result property="title" column="blog_title"/>
<association property="author" javaType="Author">
<id property="id" column="author_id"/>
<result property="username" column="author_username"/>
<result property="password" column="author_password"/>
<result property="email" column="author_email"/>
<result property="bio" column="author_bio"/>
</association>
</resultMap>
当有关联关系时,id 元素在嵌套结果映射中扮演着非常重要的角色。你应该总是指定一个或多个可以唯一标识结果的属性。 虽然,即使不指定这个属性,MyBatis 仍然可以工作,但是会产生严重的性能问题。 只需要指定可以唯一标识结果的最少属性。显然,你可以选择主键(复合主键也可以)。不指定甚至有可能会发生错误。导致一对多查询,list中只查询出了一条结果。
不要填充使用代码生成器生成的代码
为什么呢,因为我们由于后期添加了属性字段,可能会使用代码生成器重新生成代码,这时候,就会覆盖我们之前手动写的代码,一般的做法是另起文件重新编写。
如果需要手动编写关联查询的话,在consumer包中新建实体,并填充方法,然后继承自数据库表中对应的实体
dao层也一样 重新创建类,进行接口的编写,不过不需要继承,只需要加上mapper注解就可以了
mapper配置文件一样,重新创建,不过修改命名空间为我们自定义的dao的包路径,然后编写查询
如果需要引用别的配置文件的resultmap的话,可以直接继承,如果是引用的话,可以直接根据 命名空间 + resultmapid进行引用