博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mybatis关系映射之一对多和多对一
阅读量:6582 次
发布时间:2019-06-24

本文共 3571 字,大约阅读时间需要 11 分钟。

hot3.png

一. 简介:

本实例使用顾客和订单的例子做说明: 一个顾客可以有多个订单, 一个订单只对应一个顾客

 

二. 例子:

1. 代码结构图:

233840_k10B_1443516.png

2. 建表语句:

CREATE DATABASE test;      USE test;    CREATE TABLE person(   personId VARCHAR(36) PRIMARY KEY,   personName VARCHAR(64),   personAddress VARCHAR(128),   personTel VARCHAR(11) );    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'

3. 顾客实体:

/** * 客户实体  */ public class Person {        private String id;     private String name;     private String address;     private String tel;            private List
 orders;            @Override     public String toString() {         return "{id: " + id + ", name: " + name + ", address: " + address + ", tel: " + tel + "}";     } }

4. 订单实体:

/** * 订单实体 */ public class Order {        private String id;     private String number;     private int price;            private Person person;             @Override     public String toString() {         return "{id: " + id + ", number: " + number + ", price: " + price + "}";     }    }

5. 一对多实体配置: Person.xml

  
        
         
         
         
         
                    
         
         
             
             
             
                          
     
         select p.*, o.* from person p, orders o where p.personId  = o.pid and p.personId = #{id}             

6. 多对一实体配置:

  
     
         
         
         
                    
         
         
             
             
             
             
                          
     
         select p.*, o.* from person p, orders o where p.personId  = o.pid and o.orderId = #{id}             

7. 总配置: sqlMapConfig.xml

  
     
         
           
       
     
         
             
             
                 
                 
                 
                 
                                
         
         
         
     
 

8. 测试文件:

/** * 测试一对多和多对一 */ public class MybatisTest {        private SqlSessionFactory ssf;         @Before     public void initSF() throws Exception {         String resource = "sqlMapConfig.xml";         InputStream inputStream = Resources.getResourceAsStream(resource);         ssf = new SqlSessionFactoryBuilder().build(inputStream);     }        @Test//一对多关联查询     public void selectPersonById()throws Exception{         SqlSession session = ssf.openSession();         Person person = session.selectOne("com.zdp.domain.Person.selectPersonById", "001");         System.out.println(person.getOrders());     }            @Test//多对一关联查询     public void selectOrderById()throws Exception{         SqlSession session = ssf.openSession();         Order order = session.selectOne("com.zdp.domain.Order.selectOrderById", "O_00001");         System.out.println(order.getPerson().getName());     } }

转载于:https://my.oschina.net/gaoxadmin/blog/655465

你可能感兴趣的文章
怎么检查网站的死链接呢?
查看>>
scrapy爬虫框架实例一,爬取自己博客
查看>>
React是UI的未来吗?
查看>>
中国人社部:2018年15个省(区、市)调整最低工资标准
查看>>
手把手教你通过Thrift 访问ApsaraDB for HBase
查看>>
MacOS安装MySQL 报错
查看>>
Java知识点总结(反射-反射操作泛型)
查看>>
Vue+webpack+Element 兼容问题总结
查看>>
《软技能》读书笔记(下)
查看>>
textarea文域高度自适应
查看>>
go语言renderer包代码分析
查看>>
【Scala谜题】成员声明的位置
查看>>
git最最最最...常用命令
查看>>
复杂recyclerView封装库
查看>>
使用Redis构建文章投票网站(Java)
查看>>
见微知著 —— Redis 字符串内部结构源码分析
查看>>
Command './js-ant' failed to execute
查看>>
阿里云NFS NAS数据保护实战
查看>>
Spring cloud配置客户端
查看>>
产品研发项目管理软件哪个好?
查看>>