mybatis使用resultMap实现一对一查询
2017-05-07 02:34
429 查看
在订单po类中 创建一个User的属性,然后利用resultMap将查询出来的与po进行自定义映射
订单Orders. java
public class Orders {
private int id;//订单号
private int user_id;//用户的id
private String order_number;//订单号
private User user;
Mapper.xml进行配置resultMap
<mapper namespace="com.mo.mapper.OrdersMapperCustom">
<!-- 定义订单信息及用户信息的resultMap -->
<resultMap type="orders" id="ordersUserResultMap">
<!--
id:订单的主键,或者是唯一的标示
result:是普通的字段
-->
<id column="id" property="id"/>
<result column="user_id" property="user_id"/>
<result column="order_number" property="order_number"/>
<!--
配置用户映射信息
将查询出来的数据 映射到orders中的user属性中
association:用于单个关系对象的映射
property:将关联信息映射到order的哪一个属性
javaType:映射属性的类型
-->
<association property="user" javaType="com.mo.pojo.User">
<!--
进行映射
id:关联的用户信息的唯一约束
result:是普通字段
column:代表表的字段
property:代表po类的属性
-->
<id column="user_id" property="id"/>
<result column="username" property="username"/>
<result column="address" property="address"/>
</association>
</resultMap>
<!-- 使用resultMap实现订单查询,关联查询用户信息 -->
<select id="findOrderUserListResultMap" resultMap="ordersUserResultMap">
SELECT orders.*,USER.username,USER.address FROM orders,USER WHERE orders.user_id = USER.id
</select>
Mapper.java
public interface OrdersMapperCustom {
List<OrdersCustom> findOrderUserListResultMap();
}
单元测试
public class TestDao {
//这里需要创建sqlSessionFactory工厂,因为创建新的UserDaoImpl需要注入会话工厂
private SqlSessionFactory sqlSessionFactory;
@Before
public void setUp() throws IOException{
String resource = "SqlMapConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}
@Test
public void test3(){
SqlSession sqlSession = sqlSessionFactory.openSession();
OrdersMapperCustom ordersMapperCustom = sqlSession.getMapper(OrdersMapperCustom.class);
List<OrdersCustom> list = ordersMapperCustom.findOrderUserListResultMap();
System.out.println(list.size());
}
}
订单Orders. java
public class Orders {
private int id;//订单号
private int user_id;//用户的id
private String order_number;//订单号
private User user;
Mapper.xml进行配置resultMap
<mapper namespace="com.mo.mapper.OrdersMapperCustom">
<!-- 定义订单信息及用户信息的resultMap -->
<resultMap type="orders" id="ordersUserResultMap">
<!--
id:订单的主键,或者是唯一的标示
result:是普通的字段
-->
<id column="id" property="id"/>
<result column="user_id" property="user_id"/>
<result column="order_number" property="order_number"/>
<!--
配置用户映射信息
将查询出来的数据 映射到orders中的user属性中
association:用于单个关系对象的映射
property:将关联信息映射到order的哪一个属性
javaType:映射属性的类型
-->
<association property="user" javaType="com.mo.pojo.User">
<!--
进行映射
id:关联的用户信息的唯一约束
result:是普通字段
column:代表表的字段
property:代表po类的属性
-->
<id column="user_id" property="id"/>
<result column="username" property="username"/>
<result column="address" property="address"/>
</association>
</resultMap>
<!-- 使用resultMap实现订单查询,关联查询用户信息 -->
<select id="findOrderUserListResultMap" resultMap="ordersUserResultMap">
SELECT orders.*,USER.username,USER.address FROM orders,USER WHERE orders.user_id = USER.id
</select>
Mapper.java
public interface OrdersMapperCustom {
List<OrdersCustom> findOrderUserListResultMap();
}
单元测试
public class TestDao {
//这里需要创建sqlSessionFactory工厂,因为创建新的UserDaoImpl需要注入会话工厂
private SqlSessionFactory sqlSessionFactory;
@Before
public void setUp() throws IOException{
String resource = "SqlMapConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}
@Test
public void test3(){
SqlSession sqlSession = sqlSessionFactory.openSession();
OrdersMapperCustom ordersMapperCustom = sqlSession.getMapper(OrdersMapperCustom.class);
List<OrdersCustom> list = ordersMapperCustom.findOrderUserListResultMap();
System.out.println(list.size());
}
}
相关文章推荐
- MyBatis Review——使用resultType和resultMap实现一对一查询
- MyBatis Review——使用resultType和resultMap实现一对一查询
- mybatis使用resultMap实现一对多查询 (需求:查询订单以及订单明细)
- mybatis之resultMap实现一对一查询
- mybatis进阶(2)--一对一查询(使用resultType)
- Mybatis实现关联表查询(一对一关联)
- Mybatis通过接口实现一对一及一对多的查询
- 使用Oracle实现的MyBatis分页查询效果
- mybatis使用resultMap实现多对多查询 (需求:商品信息和订单明细有多对多的关系)
- mybatis一对一的三种实现方式 数据准备: 使用mysql数据库作为测试。建表语句及测试数据: CREATE TABLE `classes` ( `class_id` int(11) NOT
- mybatis使用foreach语句实现IN查询
- 第二章 mybatis使用注解实现in查询(mysql)
- 第二章 mybatis使用注解实现in查询(mysql)
- 【Mybatis学习总结四】实现关联表查询----一对一关联(association)
- MyBatis之自查询使用递归实现 N级联动效果(两种实现方式)
- mybatis 实现一对一,一对多,多对多关联查询 小结
- MyBatis(三)---实现一对一和一对多的关联表查询
- Mybatis中使用Association元素进行一对一级联查询
- MyBatis中的动态SQL,实现不确定条件的CRUD-----使用Map来传递查询的参数
- mybatis进阶(3)--一对一查询(使用resultMap)