mybatis多表查询

来源:互联网 发布:网络销售渠道有哪些 编辑:程序博客网 时间:2024/06/06 09:35
generator只能生成简单的单表查询语句,若需要多表查询,需要自己修改一些文件

1、修改model
将以javebean的形式体现表连接:

package com.bupt.blog.model;import java.util.Date;import java.util.List;public class Blog {    // 一系列属性和setter、getter方法    private Integer blogId;    ...    /**    以实体的方式体现一对多、一对一连接     */    private Admin adminInfo;    private Provenance provenanceInfo;    private List<Type> typeInfo;}

2、修改mapping映射文件
注意:有两种方式:集合嵌套结果
集合嵌套查询

集合嵌套查询如下(两次查询):

<resultMap id="BaseResultMap" type="com.bupt.blog.model.Blog">    <id column="blog_ID" jdbcType="INTEGER" property="blogId" />    ...    <association property="adminInfo" javaType="com.bupt.blog.model.Admin" column="author" select="com.bupt.blog.dao.AdminMapper.selectByPrimaryKey">    </association>    <association property="provenanceInfo" javaType="com.bupt.blog.model.Provenance"  column="provenance" select="com.bupt.blog.dao.ProvenanceMapper.selectByPrimaryKey">    </association>    <collection property="typeInfo" ofType="com.bupt.blog.model.Type"  column="type" select="com.bupt.blog.dao.TypeMapper.selectByPrimaryKey">    </collection>  </resultMap>

集合嵌套结果如下(一次查询,表连接):

<resultMap id="BaseResultMap" type="com.bupt.blog.model.Blog">    <id column="blog_ID" jdbcType="INTEGER" property="blogId" />    ...    <collection property="typeInfo" ofType="com.bupt.blog.model.Type"  column="type" select="com.bupt.blog.dao.TypeMapper.selectByPrimaryKey">    </collection>  </resultMap>  <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">     <select id="getUserinfoById" parameterType="int" resultMap="userMap">              select                   blog.id ,                  ...                g.user_id,   <!--嵌套结果这种方式是使用了一次连接查询,而嵌套查询使用了两次 -->                  g.name,               from                  user blog                  inner join admin g on blog.id = g.user_id               where                   blog.id =${value};          </select>   
0 0
原创粉丝点击