zoukankan      html  css  js  c++  java
  • 数据库及Mybatis学习

    1.数据库范式(规则):

    函数依赖:x唯一确定y 则 y 函数依赖于 x

    完全函数依赖:x中不能再有子集 能够唯一确定 y  ;如果 x 中有子集能够唯一确定 y,则 y 部分函数依赖于 x

    一.第一范式:确保每列都不可拆分,即保持原子性

    二.第二范式:确保表中的每列都和主键相关,而不能只与主键的某一部分相关(联合主键)。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。

    例子:订单与商品信息,两个实体表,一个关系表;详细参考链接文档

    三.第三范式:确保每列都和主键列直接相关,而不是间接相关

    四.BCNF:在关系模式中每一个决定因素都包含候选键,也就是说,只要属性A或属性组A能够决定任何一个属性B,那么A的子集中必须有候选键。

    3NF和BCNF是在函数依赖的条件下对模式分解所能达到的最大程度。一个模式中的关系模式如果都属于BCNF,那么在函数依赖范围内,它已经实现了彻底的分离,已消除了插入和删除的异常。3NF的“不彻底”性表现在可能存在主属性对键的部分依赖和传递依赖。所以关系模式的设计要符合BCNF的设计。

    参考:

    三个范式:http://www.cnblogs.com/linjiqin/archive/2012/04/01/2428695.html

    BCNF:http://www.cnblogs.com/ybwang/archive/2010/06/04/1751279.html

    2.从SQL查询结果到领域模型实体

    • 通过JDBC查询得到ResultSet对象
    • 遍历ResultSet对象并将每行数据暂存到HashMap实例中,以结果集的字段名或字段别名为键,以字段值为值
    • 根据ResultMap标签的type属性通过反射实例化领域模型
    • 根据ResultMap标签的type属性和id、result等标签信息将HashMap中的键值对,填充到领域模型实例中并返回

    3.ResultMap标签属性说明

    id:resultMap标签的标识

    type:返回值的全限定类名,或类型别名。

    autoMapping:值范围(默认为true)。设置是否启动自动映射功能,自动映射功能就是自动查找与字段名小写同名的属性名,并调用setter方法。设置为false后,则需要在`resultMap`内明确注明映射关系才会调用对应的setter方法。

    4.实体类一定要有无参数的构造方法

    5.子元素说明:

    id元素:用于设置主键字段与领域模型属性的映射关系

    result元素:用于设置普通字段与领域模型属性的映射关系

    6.constructor元素:指定使用指定参数列表的构造函数来实例化领域模型。注意:其子元素顺序必须与参数列表顺序对应

    idArg子元素:标记该入参为主键

    arg子元素:标记该入参为普通字段(主键使用该子元素设置也是可以的)

    7.一对一关系,一对多关系 以及动态SQL

    在采用嵌套结果的方式查询一对一、一对多关系时,必须要通过resultMap下的id或result标签来显式设置属性/字段映射关系,否则在查询多条记录时会仅仅返回最后一条记录的情况。

    参考:

    http://www.cnblogs.com/fsjohnhuang/p/4014819.html

    http://www.soso.io/article/65324.html

    8.动态映射关系信息 discriminator

    参考:

    http://www.cnblogs.com/fsjohnhuang/p/4076592.html

    http://www.cnblogs.com/rollenholt/p/3365866.html

  • 相关阅读:
    linux学习之路(2)
    Cocos.js
    BOM常用对象
    display取值和应用
    DOM
    cursor属性
    visibilty属性
    打开新连接的方式
    JQuery
    js的创建对象
  • 原文地址:https://www.cnblogs.com/dobestself-994395/p/4705463.html
Copyright © 2011-2022 走看看