01数据字典

枚举:列举对象的可能项.
数据字典你更容易维护日常的东西。

Orm

我们研究的是关系数据库
多对一,外键处在多的一方。

对象的表达:多对一的对象设置

映射文件的设置

配置实体

BaseDict

    private String dict_id;
    private String dict_type_code;
    private String dict_type_name;
    private String dict_item_name;
    private String dict_item_code;
    private String dict_memo;
    private Integer dict_sort;
    private Character dict_enable;

BaseDict.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- 配置表与实体对象的关系 -->
<hibernate-mapping package="cn.itcast.domain">
    <class name="BaseDict" table="base_dict">
        <id name="dict_id">
            <generator class="assigned"></generator>
            <!-- class="assigned"说明主键是自己定的, 不是数据库生成的,用户注册的帐号一般就属于这种类型。 -->
        </id>
        <property name="dict_type_name" column="dict_type_name">
            <!-- <column name="cust_name" sql-type="varchar" ></column> -->
        </property>
        <property name="dict_type_code"></property>
        <property name="dict_item_name"></property>
        <property name="dict_item_code"></property>
        <property name="dict_memo"></property>
        <property name="dict_sort"></property>
        <property name="dict_enable"></property>
    </class>
</hibernate-mapping>

Customer

    private Long cust_id;
    
    private String cust_name;
    /*private String cust_source;
    private String cust_industry;
    private String cust_level;*/
    //这三个是外键,一般情况下,多的一方有外键,所以这是多表
    private String cust_linkman;
    private String cust_phone;
    private String cust_mobile;
    
    //引用关联的数据字典的对象
    
    private BaseDict cust_source;//客户来源
    private BaseDict cust_industry;//客户行业
    private BaseDict cust_level;//客户级别
    

Customer.hbn.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
   <!-- 配置表与实体对象的关系 -->
<hibernate-mapping package="cn.itcast.domain" >
    <class name="Customer" table="cst_customer" >
        <id name="cust_id"  >
            <!-- generator:主键生成策略(明天讲) -->
            <generator class="assigned"></generator>
        </id>
        <property name="cust_name" column="cust_name" >
            <!--  <column name="cust_name" sql-type="varchar" ></column> -->
        </property>
        <!-- <property name="cust_source" column="cust_source" ></property>
        <property name="cust_industry" column="cust_industry" ></property>
        <property name="cust_level" column="cust_level" ></property> -->
        <property name="cust_linkman" column="cust_linkman" ></property>
        <property name="cust_phone" column="cust_phone" ></property>
        <property name="cust_mobile" column="cust_mobile" ></property>
    
    <!-- 配置表的多对一关系 -->
    <many-to-one name="cust_source" column="cust_source" class="BaseDict"></many-to-one>
    <many-to-one name="cust_industry" column="cust_industry" class="BaseDict"></many-to-one>
    <many-to-one name="cust_level" column="cust_level" class="BaseDict"></many-to-one>
    </class>
</hibernate-mapping>

需要注意的是在Customer的实体中把那几个外键注释掉了,并引入了BaseDict的那几个成员变量,所以需要在映射表对一的时候,把多表中的属性移除掉,把它们配置在多对一的关系当中。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容