maybatis源码分析(一)——看懂mybatis-config.dtd和mybatis-config.xsd文件

 看懂mybatis-config.dtd文件

 首先明白什么是dtd文件:

DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块。DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。

说白了就是先定义一个规则,以后你写的(外部接受的)xml文件都必须符合这个规则。

学习dtd文件的相关知识可参考:DTD 教程 | 菜鸟教程

我们可以看到dtd文档的第一部分为:

<!ELEMENT configuration (properties?, settings?, typeAliases?, typeHandlers?, objectFactory?, objectWrapperFactory?, reflectorFactory?, plugins?, environments?, databaseIdProvider?, mappers?)>

如图:

configuration :表示定义的配置文件根节点是configuration

子节点包含:properties?, settings?, typeAliases?, typeHandlers?, objectFactory?, objectWrapperFactory?, reflectorFactory?, plugins?, environments?, databaseIdProvider?, mappers?

并且他们先后顺序也必须和定义的顺序一致

如:

我们定义了如下的配置文件,

我们可以看到之前我们定义的dtd文件, databaseIdProvider节点在environments之后,如果我们现在将databaseIdProvider放在environments之前,我们的编译工具就会帮我们检测出错误,如图:

解释: 

?:表示该元素可以出现0次或多次

我们可以看到dtd文档的第二部分为:

<!ELEMENT databaseIdProvider (property*)>
<!ATTLIST databaseIdProvider
type CDATA #REQUIRED
>

 这段代码的意思就是:

databaseIdProvider节点有个type属性,而且是必填的,有多个property节点(*:表示有0个或者多个)

如图:

 此时如果我们将dtd文件中的*去掉:

该节点报错:

property的节点定义为:(解释方法同上)

<!ELEMENT property EMPTY>
<!ATTLIST property
name CDATA #REQUIRED
value CDATA #REQUIRED
>

有了这个前置知识 我相信大家不仅能看懂:mybatis-3-config.dtd 、mybatis-3-mapper.dtd文件,其他的dtd文件都能看穿底裤。

#REQUIRED解释:

 

看懂mybatis的mybatis-config.xsd文件:

要看懂xsd文件先要知道XSD文件的相关知识:

XML Schema 可定义 XML 文件的元素。

简易元素指那些只包含文本的元素。它不会包含任何其他的元素或属性。

什么是简易元素?

简易元素指那些仅包含文本的元素。它不会包含任何其他的元素或属性。

不过,"仅包含文本"这个限定却很容易造成误解。文本有很多类型。它可以是 XML Schema 定义中包括的类型中的一种(布尔、字符串、数据等等),或者它也可以是您自行定义的定制类型。

您也可向数据类型添加限定(即 facets),以此来限制它的内容,或者您可以要求数据匹配某种特定的模式。

学习教程参考:XSD 简易元素 | 菜鸟教程

可以自己去研究一下xsd文件的教程,xsd比dtd更加强大,但他们在mybatis中的作用是一样的,所以此处不作详解

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
由于问题比较长,我会尽量提供详细的步骤和代码示例,但是可能无法完全覆盖所有细节。如果您有具体的问题或疑问,请随时在评论区提出。 步骤1:创建动态网页工程 这个步骤比较简单,可以在Eclipse或IntelliJ IDEA等集成开发环境中创建。选择一个动态web项目,选择使用Maven或Gradle进行项目构建,选择使用SpringMVC和MyBatis框架,创建完成后,将会自动添加默认的配置文件和目录结构。 步骤2:导入SpringMVC框架相应jar包 这个步骤也比较简单,可以在pom.xml文件中添加以下依赖: ```xml <!-- SpringMVC --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <!-- MyBatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>${mybatis.version}</version> </dependency> ``` 其中,${spring.version}和${mybatis.version}是由您指定的版本号。 步骤3:创建配置文件和相应映射文件 在src/main/resources目录下创建spring-servlet.xml和mybatis-config.xml配置文件,以及相应的Mapper映射文件Java Bean类。 spring-servlet.xml配置文件示例: ```xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!-- 指定控制器扫描包 --> <context:component-scan base-package="com.example.controller" /> <!-- 开启SpringMVC注解驱动 --> <mvc:annotation-driven /> <!-- 静态资源映射 --> <mvc:resources mapping="/static/**" location="/static/" /> <!-- 视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/" /> <property name="suffix" value=".jsp" /> </bean> </beans> ``` mybatis-config.xml配置文件示例: ```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> <typeAliases> <!-- 指定Java Bean类的包名 --> <package name="com.example.pojo" /> </typeAliases> <mappers> <!-- 指定Mapper映射文件的包名 --> <mapper resource="mapper/UserMapper.xml" /> </mappers> </configuration> ``` Mapper映射文件示例(UserMapper.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.mapper.UserMapper"> <!-- 查询用户信息 --> <select id="selectUserById" parameterType="int" resultType="com.example.pojo.User"> SELECT * FROM user WHERE id = #{id} </select> <!-- 插入用户信息 --> <insert id="insertUser" parameterType="com.example.pojo.User"> INSERT INTO user(username, password, email) VALUES(#{username}, #{password}, #{email}) </insert> </mapper> ``` Java Bean类示例(User.java): ```java public class User { private Integer id; private String username; private String password; private String email; // getter和setter方法省略 // ... } ``` 步骤4:编写相应配置 在以上配置文件中,已经给出了比较详细的示例。需要注意的是,spring-servlet.xml配置文件中需要指定控制器扫描包,开启SpringMVC注解驱动,以及配置视图解析器和静态资源映射。mybatis-config.xml配置文件中需要指定Java Bean类和Mapper映射文件的包名,以及相应的查询和插入操作。 步骤5:编写教师列表功能的控制器方法,返回JSON格式数据 这个步骤需要编写一个控制器方法,用于查询数据库中的教师信息,并将其转换为JSON格式数据返回。在这个示例中,我们使用SpringMVC的@ResponseBody注解将返回值转换为JSON格式数据,使用MyBatis进行数据库查询操作。 控制器示例(UserController.java): ```java @Controller @RequestMapping("/user") public class UserController { @Autowired private UserMapper userMapper; @RequestMapping(value = "/list", method = RequestMethod.GET) @ResponseBody public List<User> list() { return userMapper.selectAll(); } } ``` Mapper接口示例(UserMapper.java): ```java public interface UserMapper { List<User> selectAll(); } ``` 步骤6:用浏览器访问教师列表功能,显示JSON数据 在浏览器中输入http://localhost:8080/user/list,即可访问教师列表功能,并显示JSON数据。如果一切正常,您将会看到类似以下的JSON数据: ```json [{"id":1,"username":"张三","password":"123456","email":"zhangsan@example.com"},{"id":2,"username":"李四","password":"654321","email":"lisi@example.com"}] ``` 至此,用户注册、登录和个人信息查看功能的开发基本完成。您可以根据需求进一步完善和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值