06-MyBatis_关联映射之多对一
2013-10-19 22:32
267 查看
0. 源码下载
MyBatis_关联映射之多对一_src.zip1. 表
1.1 表名和字段
person(personId,personName,personAddress,personTel)orders(orderId,ordreNumber,orderPrice,pid)
1.2 SQL脚本(MySQL)
USE mybatis; CREATE TABLE person ( personId VARCHAR(36) PRIMARY KEY, personName VARCHAR(64), personAddress VARCHAR(128), personTel VARCHAR(11) ); -- order 在MySQL中是关键字 CREATE TABLE orders ( orderId VARCHAR(36) PRIMARY KEY, orderNumber VARCHAR(20), orderPrice INT, pid VARCHAR(36) ); INSERT INTO person VALUES('001', 'Jack', 'Wuhan', '1234567'); INSERT INTO orders VALUES('O_00001', '00001', 100, '001'); INSERT INTO orders VALUES('O_00002', '00002', 200, '001'); SELECT p.*, o.* FROM person p JOIN orders o ON (p.personId=o.pid) WHERE p.personId = '001' SELECT o.*, p.* FROM orders o JOIN person p ON (p.personId=o.pid) WHERE o.orderId = 'O_00001'
2. 实体
public class Person { private String id; private String name; private String address; private String tel; // set get 已省略 } public class Order { private String id; private String number; private Integer price; private Person person; // set get 已省略 }
3. 总配置
同上一篇05-MyBatis_关联映射之一对多4. 映射文件
<mapper namespace="com.hehe.mybatis.domain.Person"> <resultMap type="Person" id="personMap"> <id column="personId" property="id"/> <result column="personName" property="name"/> <result column="personAddress" property="address"/> <result column="personTel" property="tel"/> </resultMap> </mapper>
<mapper namespace="com.hehe.mybatis.domain.Order"> <resultMap type="Order" id="orderMap"> <id column="orderId" property="id"/> <result column="orderNumber" property="number"/> <result column="orderPrice" property="price"/> <!-- 多对一 --> <!-- private Person person; --> <association property="person" javaType="Person"> <id column="personId" property="id"/> <result column="personName" property="name"/> <result column="personAddress" property="address"/> <result column="personTel" property="tel"/> </association> </resultMap> <!-- 关联查询 --> <select id="selectOrderById" parameterType="string" resultMap="orderMap"> SELECT o.*, p.* FROM orders o JOIN person p ON (p.personId=o.pid) WHERE o.orderId = 'O_00001' </select> </mapper>
5. 测试
/* <!-- 关联查询 --> <select id="selectOrderById" parameterType="string" resultMap="orderMap"> SELECT o.*, p.* FROM orders o JOIN person p ON (p.personId=o.pid) WHERE o.orderId = 'O_00001' </select> */ @Test public void testSelectOrderById() throws Exception { SqlSession session = sqlSessionFactory.openSession(); Order order = session.selectOne("com.hehe.mybatis.domain.Order.selectOrderById", "O_00001"); System.out.println( order.getId() + "\t" + order.getNumber() + "\t" + order.getPrice() + "\t" + order.getPerson().getId() + "\t" + order.getPerson().getName() + "\t" + order.getPerson().getAddress() + "\t" + order.getPerson().getTel() ); session.close(); }
相关文章推荐
- Mybatis中的关联映射和查询
- MyBatis映射文件的resultMap如何做表关联
- Mybatis 关联映射
- MyBatis学习(二)之双向一对多关联映射查询
- JavaEE_Mybatis_SpringMVC_Mybatis_lesson11_一对一关联映射(ResultMap/ResultType)
- MyBatis之高级关联和集合映射(一、基础知识)
- 04—mybatis的关联映射
- Mybatis之关联映射
- JavaEE_Mybatis_SpringMVC_Mybatis_lesson12_一对多关联映射(ResultMap)
- MyBatis的关联映射(全)五
- Mybatis一对多关联映射实例
- Mybatis多对多关联映射实例
- (转)MyBatis框架的学习(五)——一对一关联映射和一对多关联映射
- MyBatis框架的一对多关联映射
- MyBatis 3(4)关联映射:一对一,一对多
- Mybatis学习笔记:(二) java中的实体(对象、List、Set)关系怎样与数据库关联映射
- mybatis关联映射
- MyBatis映射文件的resultMap一对一一对多关联
- Mybatis 动态SQL和关联映射
- MyBatis映射文件的resultMap如何做表关联