Code前端首页关于Code前端联系我们

MyBatis开发框架介绍、创建项目+简单示例

terry 2年前 (2023-09-25) 阅读数 56 #后端开发

1. MyBatis 简介

​ 2001 年,Clinton Begin 发起了一个名为 iBATIS 的开源项目,最初专注于密码软件研发,后来演变为基于软件的 Java 持久层框架。

​ 2004 年,克林顿将 iBATIS 名称和源代码捐赠给 Apache 软件基金会。

​ 2010年,核心开发团队决定离开Apache软件基金会,并将iBATIS更名为MyBatis。

​ MyBatis 是一个优秀的持久层框架,支持自定义 SQL 查询、存储过程和高级映射,消除了几乎所有 JDBC 代码以及手动参数设置和结果集检索。可以使用 XML 或注释来配置和映射 MyBat。 MyBatis 通过将参数与配置的 SQL 进行匹配,形成最终执行的 SQL 语句,最后将 SQL 执行的结果映射为 Java 对象并返回。

​ 与其他 ORM(对象关系映射)框架不同,MyBatis 并不将 Java 对象与数据库表关联起来,而是将 Java 方法与 SQL 语句关联起来。

注意。只需理解上面的内容即可,因为我的风格是我不太喜欢纯粹理论和基于文本的东西。看过我之前博客的读者可能都知道这一点。我更喜欢实用的代码,比如如何使用它。一种用某段代码解决问题的新技术...

2。创建maven项目

我一直认为理解技术最好的方式就是通过一个具体的例子,比如Hello World,哈哈​​​​。

所以,首先我们需要创建一个新的Maven项目。使用IDEA新建Maven项目如下:

MyBatis开发框架简介、创建项目+简单示例

MyBatis开发框架简介、创建项目+简单示例

MyBatis开发框架简介、创建项目+简单示例

新建的Maven项目结构如下:

MyBatis开发框架简介、创建项目+简单示例

默认生成的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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.zwwhnly</groupId>
    <artifactId>mybatis-action</artifactId>
    <version>1.0-SNAPSHOT</version>
    
</project>

MyBatis开发框架简介、创建项目+简单示例

首先我们设置源代码的编码方式为UTF-8:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

接下来我们设置编译后的源代码的JDK版本。我们现在将使用 1.6。大家可以根据自己的实际需要进行更改,比如改成1.8:

<build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
    </plugins>
</build>

然后添加重要的MyBatis依赖坐标和mysql驱动依赖坐标:

<dependencies>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.3.0</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.38</version>
    </dependency>
    
</dependencies>

最后添加用到的Log4j和JUnit依赖坐标。 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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.zwwhnly</groupId>
    <artifactId>mybatis-action</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.3.0</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.38</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.12</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.12</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

如果IDEA中没有特殊配置,修改pom文件后需要手动导入,否则会是下图:

MyBatis开发框架简介、创建项目+简单示例

如何手动导入?只需点击IDEA右下角的Import Changes即可。

MyBatis开发框架简介、创建项目+简单示例

MyBatis开发框架简介、创建项目+简单示例

至此,Maven项目就创建完成了。 ?在src/main/resources目录下创建配置文件mybatis-config.xml。为了更快的创建 mybatis-config.xml 文件,我们可以添加如下模板:

MyBatis开发框架简介、创建项目+简单示例

MyBatis开发框架简介、创建项目+简单示例
MyBatis开发框架简介、创建项目+简单示例
MyBatis开发框架简介、创建项目+简单示例

MyBatis开发框架简介、创建项目+简单示例

然后输入以下内容:

<?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>
    <settings>
        <setting name="logImpl" value="LOG4J"/>
    </settings>

    <typeAliases>
        <package name="com.zwwhnly.mybatisaction.model"/>
    </typeAliases>

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC">
                <property name="" value=""/>
            </transactionManager>
            <dataSource type="UNPOOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis_action_db"/>
                <property name="username" value="root"/>
                <property name="password" value=""/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="com/zwwhnly/mybatisaction/mapper/CountryMapper.xml"/>
    </mappers>
</configuration>

设置简单说明:属性的配置节点上指定使用LOG4J输出日志。包名称在

  • 元素下配置。通常,在指定类时,必须使用完整的类名,例如 com.zwwhnly.mybatisaction.model.Country。在MyBat中,经常使用完整的类名。为了方便使用,我们配置了包com.zwwhnly.mybatisaction.model。这样配置后,使用类时就不需要写部分包名了。就用国家吧。你可以。
  • 环境配置主要配置数据库连接。例如,这里我们使用本地MySql中的mybatis_action_db数据库。用户名是root,没有密码(您可以根据自己的实际情况更改数据库、用户名和密码)。
  • 配置了一个CountryMapper.xml文件,该文件包含完整的类路径,即MyBatis Sql语句和映射配置文件。
  • 3.3 创建实体类和Mapper.xml文件

    在src/main/java下新建一个包:com.zwwhnly.mybatisaction,然后在这个包下创建一个包:model。

    在model包下创建数据库表的country表对应的实体类Country:

    package com.zwwhnly.mybatisaction.model;
    
    public class Country {
        private Integer id;
    
        private String countryname;
    
        private String countrycode;
    
        // 按Alt+Insert快捷键生成get和set方法
    }

    在src/main/resources下创建一个目录com/zwwhnly/simple/mapper,然后在该目录下创建CountryMapper.xml文件。以后为了更快的创建Mapper.xml文件,可以参考上面添加mybatis-config.xml模板的方法,这里不再赘述。

    CountryMapper.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.zwwhnly.mybatisaction.mapper.CountryMapper">
        <select id="selectAll" resultType="Country">
            SELECT id,countryname,countrycode from country
        </select>
    </mapper>

    简单配置说明:

    • mapper:XML根元素,属性namespace指定当前XML命名空间。
    • 选择:A 选择我们定义的查询。
    • id属性:指定当前选择请求的唯一ID。
    • resultType:指定当前请求的返回值类型。它指的是State实体类。这里主要使用前面配置中提到的包名。如果不指定包名,则应写为resultType="com..zwwhnly.mybatisaction.model.Country"。
    • 从国家中选择id、国家名称、国家代码:用SQL语句查询。

    3.4 配置Log4j,查看MyBatis数据库运行进程

    在src/main/resources中新建配置文件log4j.properties,输入以下内容:

    log4j.rootLogger=ERROR, stdout
    log4j.logger.com.zwwhnly.mybatisaction.mapper=TRACE
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n 

    3.5 输入测试代码 src /test /java 创建包:com.zwwhnly.mybatisaction.mapper,然后创建测试类CountryMapperTest,代码如下:
    package com.zwwhnly.mybatisaction.mapper;
    
    import com.zwwhnly.mybatisaction.mapper.model.Country;
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    import org.junit.BeforeClass;
    import org.junit.Test;
    
    import java.io.IOException;
    import java.io.Reader;
    import java.util.List;
    
    public class CountryMapperTest {
        private static SqlSessionFactory sqlSessionFactory;
    
        @BeforeClass
        public static void init() {
            try {
                Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
                sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
                reader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        @Test
        public void testSelectAll() {
            SqlSession sqlSession = sqlSessionFactory.openSession();
    
            try {
                List<Country> countryList = sqlSession.selectList("selectAll");
                printCountryList(countryList);
            } finally {
                sqlSession.close();
            }
        }
    
        private void printCountryList(List<Country> countryList) {
            for (Country country : countryList) {
                System.out.printf("%-4d%4s%4s\n", country.getId(), country.getCountryname(), country.getCountrycode());
            }
        }
    }

    运行测试代码,输出日志如下:

    DEBUG [main] - ==> 准备工作:从国家

    DEBUG [main] 中选择 id,countryname ,countrycode - ==> 参数:

    TRACE [main] -

    版权声明

    本文仅代表作者观点,不代表Code前端网立场。
    本文系作者Code前端网发表,如需转载,请注明页面地址。

    发表评论:

    ◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

    热门