MyBatis入门案例_创建项目所需文件和编写内容

使用MyBatis的步骤

1、pom.xml依赖: 添加使用mybatis需要的依赖和其他配置,插件
2、类文件: 创建对应数据库表的实体类和访问数据的dao接口
    1)、实体类 Student.java
    2)、dao接口 StudentDao.java
3、配置文件: 创建mybatis所需的配置文件
    1)、sql映射文件 StudentDao.xml
    2)、mybatis主配置文件 mybatis.xml

1. pom依赖

添加依赖

在pom.xml文件中添加mybatismysql驱动依赖,项目资源构建设置和编译项目所需的插件

<!--    mybatis依赖-->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.1</version>
</dependency>
<!--    mysql驱动-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.9</version>
</dependency>
<!-- 添加插件 -->
<build>
    <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>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>8</source>
                <target>8</target>
            </configuration>
        </plugin>
    </plugins>
</build>

2. 类文件

2.1. 实体类

编写实体类

编写和数据库表中数据行(记录)对应的java实体类 src/main/java/com/bipowernode/domain/Student.java

package com.bipowernode.domain;
/**
 * @author nathan
 * @date 2021-11-19-20:37
 */
import org.apache.ibatis.type.IntegerTypeHandler;
/**
 * 1、定义实体类
 *  要求: 推荐和数据库表的名称一致,方便记忆
 */
public class Student {
    /**
     * 2、定义实体属性
     *  要求: 实体类中的属性名和数据库表中的列名(字段名)保持一致
     */
    private Integer id ;
    private String name;
    private String email;
    private Integer age;
    /**
     * 3、生成属性对应的get,set方法
     */
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    /**
     * 4、重写toString()方法
     */
    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", email='" + email + '\'' +
                ", age=" + age +
                '}';
    }
}

2.2. dao接口

创建操作数据的dao接口 src/main/java/com/bipowernode/dao/StudentDao.java

package com.bipowernode.dao;

import com.bipowernode.domain.Student;

import java.util.List;
/**
 * 1、定义操作实体类数据的dao接口
 */
public interface StudentDao {

    /**
     * 2、定义接口抽象方法,dao中的方法是一个"操作"对应sql语句的执行"操作"
     *   而操作对应的sql语句编写在单独的sql映射配置文件中,配置文件的位置和dao接口在同一目录下
     *   且配置文件文件名建议和接口名保持一致
     */
    //定义 查询Student表中的所有数据 的方法
    public List<Student> selectStudents();
}

3. 配置文件

3.1. sql映射文件

创建sql映射文件 src/main/java/com/bipowernode/dao/StudentDao.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="org.mybatis.example.BlogMapper">
<!--    标签举例: <select>标签为例
        select: 表示查询操作,对应数据库操作select
        属性'id': 被执行的sql语句的唯一标识,mybatis会根据此id值执行sql语句
            可以自定义,但要求使用接口中的方法名
        属性'resultType': 是一个结果类型。表示执行sql语句后得到的ResultSet,然后遍历得到的java对象的类型
            这个类型对应的是实体类如Student的类型,这样数据库中数据就转换为java对象
            类型的表示是使用实体类的全限定名称"包名.类名",如 "com.bipowernode.domain.Student"
-->
    <select id="selectStudents" resultType="com.bipowernode.domain.Student">
            select id ,name email,age from  student order by id;
    </select>
</mapper>

<!--
    此文件是sql映射文件,用于编写sql语句,mybatis会自动执行里面的sql
    sql映射文件基本内容和格式
    1、指定约束文件(下面的约束内容是固定的)
    =====================================================
        <!DOCTYPE mapper
        PUBLIC "-//mybatis.org.//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    =====================================================
      其中: 'mybatis-3-mapper.dtd'是约束文件的名称,扩展名为'.dtd'
    2、约束文件的作用
        用于约束此文件中的内容符合mybatis文件的规则
        内容包括标签,属性等,不能随意书写

    3、mapper标签: 表示当前文件的根标签,是必要的
        属性 'namespace': 称为'名称空间',值是唯一的,值可以是自定义的字符串
            但是要求使用dao接口的[全限定名称]。全限定名称就是由"包名"+"类名"组成

    4、可以在当前文件中使特定的标签表示数据库的特定操作
        操作内容如数据库的查询,更新,插入,删除操作,这些操作
        对应<select>,<update>,<insert>,<delete>标签,标签中的内容就是对应操作的sql语句

-->

3.2. mybatis主配置文件

src目录下的resource目录下创建mybatis的主配置文件

src/main/resources/mybatis.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': 表示代表这个环境的唯一值,自定义
-->
        <environment id="development">
<!--           transactionManager: 表示mybatis的事务类型
                    属性'type': :JDBC:表示使用jdbc中Connnection对象的commit,rollback做事务处理
 -->
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
<!--                dataSource表示数据源-->
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
<!--    指定sql mapper 即sql映射文件的位置-->
    <mappers>
<!--        一个mapper标签指定一个文件的位置
                文件位置要求: 从类路径开始的路径信息
-->
        <mapper resource="com/bipowernode/dao/StudentDao.xml"/>
    </mappers>
</configuration>


<!--此文件是mybatis的主配置文件,主要定义了数据库的配置信息,sql映射文件的定义位置


此文件内容组成
- xml文件声明
- 约束文件
- configuration: 根标签
        - environments
            - environment: 环境配置,表示数据库的连接信息
                - transactionManager: 表示mybatis的事务类型
                - dataSource: 数据源
-->

1、添加maven插件

pom.xml中添加内容

<build>
    <resources>
        <!-- 表示指定src/main/java的 include表示的文件为资源文件 -->
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>false</filtering>
        </resource>
         <!-- 表示指定src/main/resources的 include表示的文件为资源文件 -->
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>false</filtering>
        </resource>
    </resources>
</build>
<plugins>
    <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
        </configuration>
    </plugin>
</plugins>

⚠️注: 其中plugins的内容可以不用添加到pom.xml中,默认提供.

⚠️注: 如果编译后的target中没有mybatis.xml注配置文件,也可以添加resource指定编译目录下的配置文件.xml,或.properties

2、为什么要添加build插件

默认情况下,位于java包下的.xml,.properties等配置文件不会被mybatis处理,如果mybatis不处理,则编译后的target目录会缺失配置文件内容(图),则导致程序出错。

image-20211119215631232

说明: 上图中classes就是类路径,此时类路径下有编译后的配置文件StudentDao.xml,这样mybatis就可以处理配置文件中的内容。

<configuration>
    ....
<mappers>
        <mapper resource="com/xxxxx/dao/StudentDao.xml"/>
    </mappers>
</configuration>

说明: resource的值应该是target/classes类路径下的路径名,如com/xxx/xxx/*.xml,注意使用/分隔而不是.。设置了正确的路径后,在mybatis主配置文件中会寻找这个文件,执行其中的sql语句。

创建完成后一个Idea+maven+mybatis项目的文件结构(图)

image

posted @ 2021-11-20 14:02  茶哩哩  阅读(138)  评论(0编辑  收藏  举报