MyBatis一对一查询

一般MyBatis一对一查询有两种方法:


第一种:(一对一查询)

第一步:创建一个dao类的接口(interface)

package org.peter.dao;

import org.peter.model.Food;

/**
 * Created by Lenovo on 2017/7/27.
 */
public interface FoodDao {

    public Food getFoodById(long  id);
}

第二步:创建一个mapping(mapping 文件的形式 xxxx.xml)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

 <mapper namespace="org.peter.dao.FoodDao">
    <select id="getFoodById" parameterType="Long" resultType="org.peter.model.Food">
        SELECT f.*,s.windowName FROM food f,seller s WHERE f.sellerId=s.id AND f.id=#{id}
    </select>
</mapper>

第三步:创建一个main类做测试
public class main {
    public static void main(String[] args) {
        select();
    }
    public static void select(){
        SqlSession sqlSession = DBUtils.openSession();
        FoodDao mapper = sqlSession.getMapper(FoodDao.class);
        Food food = mapper.getFoodById(1);
        System.out.println(food);
    }
}

以上是第一中方法,注意。。。一定要将mapping和dao放在一个包下,如果不放可能会报错


第二种方法:

第一步:创建一个dao类

public class main {
    public static void main(String[] args) {
        select();
    }
    public static void select(){
        SqlSession sqlSession = DBUtils.openSession();
        FoodDao mapper = sqlSession.getMapper(FoodDao.class);
        Food food = mapper.getFoodById(1);
        System.out.println(food);
    }
}

第二步:创建一个mapping,不过现在我们用到以前学过的ResutMap的知识

association:表示进行关联查询单条记录
property:表示关联查询的结果存储在org.sang.model.Food的seller属性中
javaType:表示关联查询的结果类型
<result property="windowName" column="windowName"/>:查询结果的windowName列对应关联对象的windowName属性。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.peter.dao.FoodDao">
    <!--配置ResultMap-->
    <resultMap id="BaseResultMap" type="org.peter.model.Food">
        <id property="id" column="id"/>
        <result column="foodimg" property="foodimg"/>
        <result column="foodprice" property="foodprice"/>
        <result column="foodname" property="foodname"/>
        <result column="pricetype" property="pricetype"/>
        <result column="sellerid" property="sellerid"/>
        <association property="seller" javaType="org.peter.model.Seller">
            <result property="windowname" column="windowName"/>
        </association>
    </resultMap>

    <select id="getFoodById" parameterType="Long" resultMap="BaseResultMap" >
        SELECT * FROM food f,seller s WHERE f.sellerId=s.id AND f.id=#{id}
    </select>
</mapper>

注意:这里一定要将resultType改为resultMap

第三步:创建main类做测试

public class main {
    public static void main(String[] args) {
        select();
    }
    public static void select(){
        SqlSession sqlSession = DBUtils.openSession();
        FoodDao mapper = sqlSession.getMapper(FoodDao.class);
        Food food = mapper.getFoodById(1);
        System.out.println(food);
    }
}

以上是Mybatis的一对一查询

代码:http://download.csdn.net/detail/strive_peter/9912391

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值