dtd文件简述

  • 什么是dtd
    文档类型定义(Document Type Definition)是一套为了进行程序间的数据交换而建立的关于标记符的语法规则。
    文档类型定义可定义合法的标准通用标记语言、可扩展标记语言文档构建模块。它使用一系列合法的元素来定义文档(这里主要讨论的是XML)的结构。
    文档类型定义可定义合法的XML文档构建模块。
    它使用一系列合法的元素来定义文档的结构。
    它可被成行地声明于 XML 文档中,也可作为一个外部引用。
    通过它,您的每一个 XML 文件均可携带一个有关其自身格式的描述。
    通过它,独立的团体可一致地使用某个标准的文档类型定义来交换数据。
    而您的应用程序也可使用某个标准的文档类型定义来验证从外部接收到的数据。
    您还可以使用它来验证您自身的数据。

  • XML中如何使用?
    1、内部声明
    假如 DTD 被包含在您的 XML 源文件中,它应当通过下面的语法包装在一个 !DOCTYPE 声明中:

<?xmlversion="1.0"?>
<!DOCTYPE note[
<!ELEMENT note(to,from,heading,body)>
<!ELEMENT to(#PCDATA)>
<!ELEMENT from(#PCDATA)>
<!ELEMENT heading(#PCDATA)>
<!ELEMENT body(#PCDATA)>
]>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend</body>
</note>

以上 DTD 解释如下:
!DOCTYPE note (第二行)定义此文档是 note 类型的文档。
!ELEMENT note (第三行)定义 note 元素有四个元素:”to、from、heading,、body”
!ELEMENT to (第四行)定义 to 元素为 “#PCDATA” 类型
!ELEMENT from (第五行)定义 from 元素为 “#PCDATA” 类型
!ELEMENT heading (第六行)定义 heading 元素为 “#PCDATA” 类型
!ELEMENT body (第七行)定义 body 元素为 “#PCDATA” 类型

2、外部声明
假如 DTD 位于 XML 源文件的外部,那么它应通过下面的语法被封装在一个 DOCTYPE 定义中:

这个 XML 文档和上面的 XML 文档相同,但是拥有一个外部的 DTD:

<?xmlversion="1.0"?>
<!DOCTYPE note SYSTEM"note.dtd">
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

所有的 XML 文档(以及 HTML 文档)均由以下简单的构建模块构成:

  • 元素
  • 属性
  • 实体
  • PCDATA
  • CDATA

参考:
http://baike.baidu.com/link?url=eUZYK7l5tQ1aLPtOLDO4-gC1hfpxLwX7X6UBlJWiWvLwRfqReVR5nnicghfYs7BvLYyt4b-2m2G08m3Gs0WZza

MyBatis 的操作大致步骤如下: 1. 定义数据源和连接池:在 MyBatis ,我们需要先定义数据源和连接池。数据源用于连接数据库,连接池用于管理连接。 2. 定义 SQL 映射文件:SQL 映射文件定义了 SQL 语句和 Java 对象之间的映射关系。这里需要注意的是,MyBatis 支持动态 SQL 语句。 3. 配置 SQL 映射文件:在 MyBatis 的配置文件,我们需要配置 SQL 映射文件的路径以及其他一些属性。 4. 创建 SqlSessionFactory:SqlSessionFactory 是 MyBatis 的核心,它是一个线程安全的对象,用于创建 SqlSession。 5. 创建 SqlSession:SqlSession 是 MyBatis 的一个接口,它提供了许多操作数据库的方法,包括插入、更新、查询和删除等。 6. 执行 SQL 语句:在 SqlSession ,我们可以执行 SQL 语句,并将结果映射为 Java 对象。 下面是一个示例程序,演示了如何使用 MyBatis 进行数据库操作: 1. 定义 User 实体类: ```java public class User { private int id; private String name; private int age; // 省略 getter 和 setter 方法 } ``` 2. 定义 SQL 映射文件 user.xml: ```xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example.dao.UserDao"> <select id="getUserById" parameterType="int" resultType="com.example.entity.User"> SELECT * FROM user WHERE id = #{id} </select> <insert id="addUser" parameterType="com.example.entity.User"> INSERT INTO user(name, age) VALUES (#{name}, #{age}) </insert> </mapper> ``` 3. 定义 UserDao 接口: ```java public interface UserDao { User getUserById(int id); void addUser(User user); } ``` 4. 在 MyBatis 的配置文件配置数据源和 SQL 映射文件的位置: ```xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/test"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/example/dao/user.xml"/> </mappers> </configuration> ``` 5. 创建 SqlSessionFactory: ```java String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); ``` 6. 创建 SqlSession: ```java SqlSession sqlSession = sqlSessionFactory.openSession(); ``` 7. 执行 SQL 语句: ```java UserDao userDao = sqlSession.getMapper(UserDao.class); User user = userDao.getUserById(1); System.out.println(user.getName()); User newUser = new User(); newUser.setName("Tom"); newUser.setAge(20); userDao.addUser(newUser); sqlSession.commit(); ``` 在上面的示例,我们首先通过 SqlSessionFactory 创建了 SqlSession,然后通过 SqlSession 的 getMapper 方法获取了 UserDao 接口的实例,并调用了 getUserById 和 addUser 方法。最后,我们使用 sqlSession.commit() 提交了事务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值