三、子表删除兼容问题

这个问题,使用SQL配置函数不太好处理,而且就算使用SQL配置函数,也不够直观,有点自动生成SQL的意味,太Hibernate了(不过要是可以兼收Hibernate和Mybatis两家之长,那也是一个不错的主意),下面我们使用自定义命名空间的方式来解决。

1、编写sqlmapper-extend命名空间的XSD文件,引进新的<db>元素

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xsd:schema xmlns="http://dysd.org/schema/sqlmapper-extend"
    targetNamespace="http://dysd.org/schema/sqlmapper-extend"
    xmlns:s="http://dysd.org/schema/sqlmapper"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
    version="1.0">

    <!-- 导入由mybatis官方DTD转换而来的XSD命名空间 -->
    <xsd:import namespace="http://dysd.org/schema/sqlmapper" 
        schemaLocation="http://dysd.org/schema/sqlmapper.xsd"/>
    
    <xsd:element name="db">
        <xsd:annotation><xsd:documentation><![CDATA[
            定义一个新的db元素,有一个枚举列表的属性type,表示数据库类型,以!开头表示否定
            可以配置SQL文本、statement级元素、script级元素以及其它扩展空间元素等子元素
        ]]></xsd:documentation></xsd:annotation>
        <xsd:complexType mixed="true">
            <xsd:choice maxOccurs="unbounded">
                <xsd:group ref="s:statementGroup" minOccurs="0" maxOccurs="1"/>
                <xsd:group ref="s:dynaScriptGroup" minOccurs="0" maxOccurs="1" />
            </xsd:choice>
            <xsd:attribute name="type" use="required">
                <xsd:simpleType>
                    <xsd:list>
                        <xsd:simpleType>
                            <xsd:restriction base="xsd:string">
                                <xsd:enumeration value="!"/>
                                <xsd:enumeration value="Oracle"/>
                                <xsd:enumeration value="MySQL"/>
                                <xsd:enumeration value="DB2"/>
                                <xsd:enumeration value="H2"/>
                                <xsd:enumeration value="SybaseASE"/>
                                <xsd:enumeration value="SybaseIQ"/>
                            </xsd:restriction>
                        </xsd:simpleType>
                    </xsd:list>
                </xsd:simpleType>
            </xsd:attribute>
        </xsd:complexType>
    </xsd:element>
</xsd:schema>
View Code

相关文章:

  • 2021-10-28
  • 2022-01-11
  • 2021-12-12
  • 2021-10-30
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-24
相关资源
相似解决方案