Mybatis入门程序基础配置

数据库准备

create database experiment1;
use experiment1;
create table employee(
    id int primary key auto_increment,
    name varchar(20) not null,
    age int not null,
    posotion varchar(20) not null
);
insert into employee(id, name, age, posotion) values(1, '张三', 20, '员工'),
  (2, '李四', 18, '员工'), (3, '王五', 35, '经理')

创建pojo实体(封装数据库表属性)

在src/main/Java(包)/com.itheima.pojo(包)/User类

package com.itheima.pojo;
//封装User对象的属性
public class User {
    private int id;
    private String name;
    private int age;
    private String posotion;

    // 无参数构造函数
    //通过添加无参数构造函数,MyBatis 就能够实例化 User 类了
    //此无参构造函数虽然看起来没用,但是没有它会一在返回User类时会一直报莫名其妙的错
    public User() {
    }
    // 构造函数
    public User(int id, String name, int age, String posotion) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.posotion = posotion;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getPosotion() {
        return posotion;
    }

    public void setPosotion(String posotion) {
        this.posotion = posotion;
    }

}

创建数据库映射配置文件

在src/main/resources(资源包)/mapper(包)UserMapper.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为映射的根节点-->
<!-- mapper为映射的根节点,namespace指定Dao接口的完整类名
mybatis会依据这个接口动态创建一个实现类去实现这个接口,
而这个实现类是一个Mapper对象-->
<mapper namespace="com.itheima.pojo.User">
    <!--id ="接口中的方法名"
  parameterType="传入的参数类型"
  resultType = "返回实体类对象,使用包.类名"-->
    <select id="findById" parameterType="int"
            resultType="com.itheima.pojo.User">
        select * from users where uid = #{id}
    </select>
</mapper>

对其中的代码做个解析

<select id="findById" parameterType="int"
            resultType="com.itheima.pojo.User">
        select * from users where uid = #{id}
  1. <select> 标签:用于定义 SQL 查询。它是 MyBatis XML 映射文件的一部分,用于将数据库查询映射到 Java 方法。
  2. id="findById":这是特定 SQL 查询的标识符。在 Java 代码中,您将通过引用此标识符来调用此查询。
  3. parameterType="int":这指定了此查询所需的参数类型。在此情况下,它期望一个整数参数,该参数将作为查询的 id
  4. resultType="com.itheima.pojo.User":这指定了查询的结果类型。在此情况下,它是位于 com.itheima.pojo 包中的自定义 Java 对象 User
  5. select * from users where uid = #{id}:这是实际执行的 SQL 查询。它从 users 表中选择所有列(``),其中 uid 列与提供的参数匹配(#{id})。#{id} 语法是 MyBatis 指定参数占位符的方式。当执行查询时,MyBatis 将用参数传递的实际值替换 #{id}

项目配置文件中引入相关依赖

在根目录的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>org.example</groupId>
    <artifactId>experiment1</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>10</maven.compiler.source>
        <maven.compiler.target>10</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <!-- 引入相关依赖,分别是mysql,junit,mybatis-->
    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.11</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.2.2</version>
        </dependency>
    </dependencies>
		<!-- 构建部分,它指定了哪些资源应该包含在项目的构建过程中,以及如何处理这些资源-->
    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>

</project>

对其中的代码做个解析

<build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>

这段代码是一个 Maven 项目中的 pom.xml 文件中的一部分,用于配置项目的构建过程。具体来说,它定义了项目构建时需要包含的资源,并指定了如何处理这些资源。

  • <build>: 这是 Maven POM 文件中的 <build> 标签,用于配置项目的构建过程。
  • <resources>: 这是 <build> 标签下的 <resources> 子标签,用于指定项目构建时需要包含的资源。
  • <resource>: 这是 <resources> 标签下的 <resource> 子标签,用于定义一个资源目录。
  • <directory>src/main/java</directory>: 这行指定了资源目录的路径,即 src/main/java。这意味着在构建项目时,该目录下的资源文件会被包含在内。
  • <includes>: 这是 <resource> 标签下的 <includes> 子标签,用于指定哪些文件会被包含在构建中。
  • <include>**/*.properties</include>: 这行指定了哪些 .properties 文件会被包含在构建中。*/*.properties 表示匹配所有子目录中的 .properties 文件。
  • <include>**/*.xml</include>: 这行指定了哪些 .xml 文件会被包含在构建中。同样地,*/*.xml 表示匹配所有子目录中的 .xml 文件。
  • <filtering>true</filtering>: 这行指定了是否对资源进行过滤。当设置为 true 时,Maven 会在构建过程中处理资源文件,将其中的变量占位符替换为实际值。这通常用于处理配置文件中的变量。

创建数据库连接信息配置文件

在src/main/resources(资源包)dp.properties配置文件中

mysql.driver=com.mysql.cj.jdbc.Driver
mysql.url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&\\
  characterEncoding=utf8&useUnicode=true&useSSL=false
mysql.username=bge
mysql.password=123456

创建Mybatis核心配置文件

在src/main/resources/mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!-- mybatis核心配置文件,用于项目的数据库连接配置-->
<!DOCTYPE configuration
    PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    "<http://mybatis.org/dtd/mybatis-3-config.dtd>">
<configuration>
    <!-- 环境配置 -->
    <!-- 加载数据库连接信息配置文件 -->
    <properties resource="dp.properties"/>
    <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC"/>
                <!-- 数据库连接参数相关配置,dp.properties文件中的内容-->
                <dataSource type="POOLED">
                    <property name="driver" value="${mysql.driver}"/>
                    <property name="url" value="${mysql.url}"/>
                    <property name="username" value="${mysql.username}"/>
                    <property name="password" value="${mysql.password}"/>
                </dataSource>
            </environment>
    </environments>

    <!-- mapping映射文件路径配置-->
    <mappers>
        <mapper resource="mapper/UserMapper.xml"/>
    </mappers>
</configuration>
  • <configuration>: 这是 MyBatis 配置文件的根元素。
  • <properties resource="dp.properties"/>: 这行配置指定了加载数据库连接信息的配置文件,即 dp.properties。这个文件包含了数据库连接相关的信息,如数据库驱动、URL、用户名和密码等。
  • <environments default="development">: 这个部分配置了 MyBatis 的环境。在这个例子中,只配置了一个名为 development 的环境,并且将其设为默认环境。在 development 环境中,配置了数据库连接参数和事务管理器。
  • <dataSource type="POOLED">: 这行指定了数据源类型为 POOLED,表示使用连接池来管理数据库连接。
  • <property name="driver" value="${mysql.driver}"/>: 这些行配置了数据库连接参数,如驱动类、URL、用户名和密码。这些参数的值是从加载的 dp.properties 文件中获取的,通过 ${} 语法表示。
  • <mappers>: 这个部分用于配置 MyBatis 映射器(Mapper)。在这个例子中,只配置了一个映射文件,即 mapper/UserMapper.xml
  • <mapper resource="mapper/UserMapper.xml"/>: 这行指定了映射文件的路径,即 mapper/UserMapper.xml。这个文件包含了 SQL 映射语句,用于将数据库操作映射到 Java 方法。

编写测试类

在src/test/java/Test/UserTest.java

package Test;
import com.itheima.pojo.User;
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.Test;
import java.io.IOException;
import java.io.Reader;
public class UserTest {
    @Test
    public void userFindByIdTest() {
        String resources = "mybatis-config.xml";
        //创建流
        Reader reader = null;
        try {
            //读取mybat1s-config.xm1文件内容到reader对象中
            reader = Resources.getResourceAsReader(resources);
        } catch (IOException e) {
            e.printStackTrace();
        }
        //初始化MyBatis数据库,创建SqlsessionFactory类的实例
        SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder().build(reader);
        //创建SqlSession实例
        SqlSession session = sqlMapper.openSession();
        //传入参数查询,返回结果
        User user = session.selectOne("findById", 1);
        //输出结果
        System.out.println(user.getUname());
        //关闭session
        session.close();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值