以订单商品数据为模型,来对mybaits高级关系映射进行学习。
1.1 数据模型分析思路
1、每张表记录的数据内容
分模块对每张表记录的内容进行熟悉,相当 于你学习系统 需求(功能)的过程。
2、每张表重要的字段设置
非空字段、外键字段
3、数据库级别表与表之间的关系
外键关系
4、表与表之间的业务关系
在分析表与表之间的业务关系时一定要建立 在某个业务意义基础上去分析。
1.2 数据模型分析
用户表user:
记录了购买商品的用户信息
订单表:orders
记录了用户所创建的订单(购买商品的订单)
订单明细表:orderdetail:
记录了订单的详细信息即购买商品的信息
商品表:items
记录了商品信息
表与表之间的业务关系:
在分析表与表之间的业务关系时需要建立 在某个业务意义基础上去分析。
先分析数据级别之间有关系的表之间的业务关系:
usre和orders:
user---->orders:一个用户可以创建多个订单,一对多
orders--->user:一个订单只由一个用户创建,一对一
orders和orderdetail:
orders---》orderdetail:一个订单可以包括 多个订单明细,因为一个订单可以购买多个商品,每个商品的购买信息在orderdetail记录,一对多关系
orderdetail--> orders:一个订单明细只能包括在一个订单中,一对一
orderdetail和itesm:
orderdetail---》itesms:一个订单明细只对应一个商品信息,一对一
items--> orderdetail:一个商品可以包括在多个订单明细 ,一对多
再分析数据库级别没有关系的表之间是否有业务关系:
orders和items:
orders和items之间可以通过orderdetail表建立 关系。
sqlMapConfig.xml配置
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE configuration 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 5 <configuration> 6 7 <!-- 加载属性文件 --> 8 <properties resource="db.properties"> 9 <!--properties中还可以配置一些属性名和属性值 --> 10 <!-- <property name="jdbc.driver" value=""/> --> 11 </properties> 12 13 <!-- 和spring整合后 environments配置将废除--> 14 <environments default="development"> 15 <environment id="development"> 16 <!-- 使用jdbc事务管理,事务控制由mybatis--> 17 <transactionManager type="JDBC" /> 18 <!-- 数据库连接池,由mybatis管理--> 19 <dataSource type="POOLED"> 20 <property name="driver" value="${jdbc.driver}" /> 21 <property name="url" value="${jdbc.url}" /> 22 <property name="username" value="${jdbc.username}" /> 23 <property name="password" value="${jdbc.password}" /> 24 </dataSource> 25 </environment> 26 </environments> 27 <!-- 加载 映射文件 --> 28 <mappers> 29 30 <!--通过resource方法一次加载一个映射文件 --> 31 <!-- <mapper resource="mapper/UserMapper.xml"/> --> 32 33 <!-- 通过mapper接口加载单个 映射文件 34 遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录 中 35 上边规范的前提是:使用的是mapper代理方法 36 --> 37 <!-- <mapper class="cn.itcast.mybatis.mapper.UserMapper"/> --> 38 39 <!-- 批量加载mapper 40 指定mapper接口的包名,mybatis自动扫描包下边所有mapper接口进行加载 41 遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录 中 42 上边规范的前提是:使用的是mapper代理方法 43 --> 44 <package name="cn.itcast.mapper"/> 45 46 </mappers> 47 48 </configuration>