MyBatis 入门(三)--链接表查询

一、只包含一个对象的情况

  1. 先看看数据库的设计
    这里写图片描述
    一个用户表,和用户的身份证id记录表

  2. mapper文件

<resultMap id="BaseResultMap" type="com.elements.user.model.User">
        <id column="userId" property="userid" jdbcType="INTEGER" />
        <result column="UserName" property="username" jdbcType="VARCHAR" />
        <result column="UserEmail" property="useremail" jdbcType="VARCHAR" />
        <association property="useridentification" column="userId"
            javaType="com.elements.user.model.Useridentification">
            <id property="userid" column="ui_id" />
            <result property="code" column="code" />
        </association>
    </resultMap>

    <select id="selectByPrimaryKey" resultMap="BaseResultMap"
        parameterType="java.lang.Integer">

        SELECT
        u.userId as userId, u.UserName as UserName,
        u.UserEmail as UserEmail, ui.userId as ui_id, ui.code as code
        FROM
        user
        u,
        useridentification ui
        WHERE
        u.userId = ui.userId
        and u.userId = #{userid,jdbcType=INTEGER}
    </select>

二、一个对象内包括一个list的情况 (1对多)

  1. 先看数据库的设计
    这里写图片描述

我们先有一个主表 acpz,他有kjq和pzh两个主键,又设计了他的一个从表axpzmx的他的明细表.
我们希望读取主表的时候就加载从表的明细数据,那么在acpz内就有另一个明细的list :private List mxlist;
2.类设计

public class Acpz extends AcpzKey {

    private Long acctAmt;

    private List<Axpzmx> mxlist;

    public List<Axpzmx> getMxlist() {
        return mxlist;
    }

    public void setMxlist(List<Axpzmx> mxlist) {
        this.mxlist = mxlist;
    }  
    public Long getAcctAmt() {
        return acctAmt;
    }
        public void setAcctAmt(Long acctAmt) {
        this.acctAmt = acctAmt;
    }
    @Override
    public String toString() {
        return "Acpz [acctAmt=" + acctAmt + ", " + super.toString() + ", mxlist=" + mxlist+"]";
    }

}

3.mapper 文件

   <resultMap type="com.elements.acpz.model.Acpz" id="AcpzResult">
        <id property="kjq" column="kjq" />
        <id property="pzh" column="pzh" />
        <result property="acctAmt" column="acct_amt" />
        <collection property="mxlist" ofType="com.elements.acpz.model.Axpzmx">
            <id property="kjq" column="kjq" />
            <id property="pzh" column="pzh" />
            <id property="id" column="id" />
            <result property="acctCode" column="acct_code" />
            <result property="accAmt" column="mx_acct_amt" />
        </collection>
    </resultMap>

    <select id="selectByPrimaryKey" parameterType="com.elements.acpz.model.AcpzKey"
        resultMap="AcpzResult">
        SELECT
        pz.kjq as kjq,
        pz.pzh as pzh,
        pz.acct_amt
        as acct_amt,
        mx.id as id,
        mx.acct_code as acct_code,
        mx.acc_amt as
        mx_acct_amt
        FROM
        mybatis.acpz pz,
        axpzmx mx
        WHERE
        pz.kjq = mx.kjq AND
        pz.pzh = mx.pzh
        and pz.kjq=#{kjq,jdbcType=VARCHAR}
        and pz.pzh=#{pzh,jdbcType=VARCHAR}

    </select>


    <select id="selectAll" parameterType="com.elements.acpz.model.AcpzKey"
        resultMap="AcpzResult">
        SELECT
        pz.kjq as kjq,
        pz.pzh as pzh,
        pz.acct_amt
        as acct_amt,
        mx.id as id,
        mx.acct_code as acct_code,
        mx.acc_amt as
        mx_acct_amt
        FROM
        mybatis.acpz pz,
        axpzmx mx
        WHERE
        pz.kjq = mx.kjq AND
        pz.pzh = mx.pzh


    </select>

4.数据库主键和mapper配置文件的关系
这里写图片描述

 项目代码:http://pan.baidu.com/s/1hrN5pNQ
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值