MyBatis(二)

二、搭个环境

1、建个数据库

CREATE DATABASE `ssm`;
USE `ssm`;
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`(
`id` int(20) NOT NULL,
`username` varchar(30) DEFAULT NULL,
`password` varchar(30) DEFAULT NULL,
PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8;

insert into `user`(`id`,`username`,`password`) VALUES(1,'xhp','123456'),(2,'***','1234');

 

2、建工程

image-20220123142703387

 

3、父工程的maven配置

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>

   <groupId>com.xhp</groupId>
   <artifactId>test-mybatis</artifactId>
   <version>1.0-SNAPSHOT</version>
   <modules>
       <module>mybatis-01</module>
   </modules>

   <packaging>pom</packaging>
   <!-- 父模块用于约束版本信息 -->
   <properties>
       <maven.compiler.source>8</maven.compiler.source>
       <maven.compiler.target>8</maven.compiler.target>
       <junit.version>4.13.1</junit.version>
       <mybatis.version>3.5.7</mybatis.version>
       <mysql-connector-java.version>8.0.26</mysql-connector-java.version>
       <lombok.version>1.18.22</lombok.version>
   </properties>


   <dependencyManagement>
       <dependencies>
           <!--单元测试-->
           <dependency>
               <groupId>junit</groupId>
               <artifactId>junit</artifactId>
               <version>${junit.version}</version>
               <scope>test</scope>
           </dependency>
           <!--mybatis核心-->
           <dependency>
               <groupId>org.mybatis</groupId>
               <artifactId>mybatis</artifactId>
               <version>${mybatis.version}</version>
           </dependency>

           <!--数据库驱动-->
           <dependency>
               <groupId>mysql</groupId>
               <artifactId>mysql-connector-java</artifactId>
               <version>${mysql-connector-java.version}</version>
               <scope>runtime</scope>
           </dependency>
           <dependency>
               <groupId>org.projectlombok</groupId>
               <artifactId>lombok</artifactId>
               <version>${lombok.version}</version>
           </dependency>
       </dependencies>
   </dependencyManagement>



</project>

 

 

4、创建子模块

image-20220123143151381

pom

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
       <artifactId>test-mybatis</artifactId>
       <groupId>com.xhp</groupId>
       <version>1.0-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>

   <artifactId>mybatis-01</artifactId>

   <properties>
       <maven.compiler.source>8</maven.compiler.source>
       <maven.compiler.target>8</maven.compiler.target>
   </properties>

   <dependencies>
       <dependency>
           <groupId>org.mybatis</groupId>
           <artifactId>mybatis</artifactId>
       </dependency>


       <dependency>
           <groupId>mysql</groupId>
           <artifactId>mysql-connector-java</artifactId>
       </dependency>

       <dependency>
           <groupId>junit</groupId>
           <artifactId>junit</artifactId>
           <scope>test</scope>
       </dependency>

       <dependency>
           <groupId>org.projectlombok</groupId>
           <artifactId>lombok</artifactId>
           <scope>provided</scope>
       </dependency>
   </dependencies>
   <!--处理资源过滤问题-->
   <build>
       <plugins>
           <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-compiler-plugin</artifactId>
               <version>3.1</version>
               <configuration>
                   <source>${maven.compiler.source}</source>
                   <target>${maven.compiler.target}</target>
                   <encoding>utf-8</encoding>
               </configuration>
           </plugin>
       </plugins>
       <resources>
           <resource>
               <directory>src/main/java</directory>
               <includes>
                   <include>**/*.properties</include>
                   <include>**/*.xml</include>
               </includes>
               <filtering>false</filtering>
           </resource>
           <resource>
               <directory>src/main/resources</directory>
               <includes>
                   <include>**/*.properties</include>
                   <include>**/*.xml</include>
               </includes>
               <filtering>false</filtering>
           </resource>
       </resources>
   </build>

</project>

 

5、编写核心文件mybatis-config.xml

1、DTD

DTD(Document Type Definition)即文档类型定义,是一种XML约束模式语言,是XML文件的验证机制

如下是公共DTD实例

<?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">

关于DTD的声明解释如下:

  1. DTD声明始终以!DOCTYPE开头,空一格后跟着文档根元素的名称。

  2. 根元素名: configuration。所以每一个标签库定义文件都是以taglib为根元素的,否则就不会验证通过。

  3. PUBLIC "-//mybatis.org/DTD Config 3.0/IEN,这是一个公共DTD的名称(私有的使用SYSTEM表示)。这个东西命名是有些讲究的。首先它是以""开头的,表示这个DTD不是一个标准组织制定的。(如果是ISO标准化组织批准的,以"ISO"开头)。接着就是双斜杠"",跟着的是DTD所有者的名字,很明显这个DTD是mybatis公司定的。接着又是双斜杠"1",然后跟着的是DTD描述的文档类型,可以看出这份DTD描述的是DTD Config 3.0的格式。再跟着的就是"II""和ISO 639语言标识符。

  4. 绿色的字"http://mybatis.org/dtd/mybatis-3-config.dtd",表示这个DTD的位置。

    疑问:是不是xml分析器都会到java.sun.com上去找这个dtd呢?答案是否定的,xml分析器首先会以某种机制查找公共DTD的名称,查到了,则以此为标准,如果查不到,再到DTD位置上去找。

2、XSD

文档结构描述XML Schema Definition缩写,这种文件同样可以用来定义我们xml文件的结构!

我们看看pom文件的xml头部:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

1、第一行的xmIns代表了一个xml文件中的一个命名空间(xml namespace的缩写),通常是一个唯一的字符串,一般使用一个url,因为不会重复嘛

命名空间的作用就是为了防止重复

他的语法如下:

xmlns=namespace-prefix="namespaceURL"

后边什么也不加,代表默认命名空间,我们在书写标签的时候不需要加任何前缀。

如果我将其改为:

xmlns:c="http://maven.apache.org/POM/4.0.0"

image-20220123153831253

2、xmIns:xsi定义了一个命名空间前缀xsi对应的唯一字符串 http;:/www.w3.org/2001/XMLSchema-nstance。但这个xminsxsi在不同的xml文档中似乎都会出现。这是因为,xsi已经成为了一个业界默认的用于XSD((XML Schema Definition)文件的命名空间。而XSD文件(也常常称为Schema文件)是用来定义xml文档结构的。剩余两行的目的在于为我们的命名空间指定对应的xsd文件。

事实上我们这么写也是可以的:

image-20220123154034426

 

上面这行的语法其实是, xsi:schemaLocation = "ns1url xsd1 ns2url xsd2”XML Schema

相对于DTD的优点在于:

  1. XML Schema基于XML,没有专门的语法。

  2. XML Schema可以象其他XML文件一样解析和处理。

  3. XML Schema比DTD提供了更丰富的数据类型。

  4. XML Schema提供可扩充的数据模型。

  5. XML Schema支持综合命名空间。

  6. XML Schema支持属性组。

posted @ 2022-01-23 15:57  子非鱼!  阅读(236)  评论(0编辑  收藏  举报