一般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