06-MyBatis_关联映射之多对一

来源:互联网 发布:人工智能实际应用 编辑:程序博客网 时间:2024/05/17 03:30

0. 源码下载

     MyBatis_关联映射之多对一_src.zip

1. 表


 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();}




原创粉丝点击