(一)Mybatis持久化框架原理之项目搭建

本文详细介绍了MyBatis框架的基本使用方法,包括项目搭建、实体类定义、Mapper接口及XML映射文件的创建,以及配置文件解析。通过一个简单的运行实例,展示了如何使用MyBatis进行数据库操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

进行源码分析前的项目准备

实体类

Mapper接口

XML文件Mapper

Mybatis的配置XML文件

Mybatis的简单运行实例


注:本篇搭建的是Mybatis最简单的一种运行方式,目的是为了分析Mybatis原始的运行逻辑和方式,至于集成Spring和Springboot框架的本篇不做说明。

传送门:

进行源码分析前的项目准备

此次的Mybatis的源码分析是基于3.4.1。maven pom.xml文件配置如下:

<properties>
    <!-- mybatis版本号 -->
    <mybatis.version>3.4.1</mybatis.version>
</properties>

<dependencies>
    <!-- mybatis核心包 -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>${mybatis.version}</version>
    </dependency>
    <!-- lombok -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.16.20</version>
    </dependency>
</dependencies>

实体类

@Data
public class DemoEntity {

    /**
     * 学号
     */
    private String sno;

    /**
     * 姓名
     */
    private String name;

    /**
     * 性别
     */
    private String sex;

    /**
     * 生日
     */
    private Date birth;

    /**
     * 班级
     */
    private String grade;

}

Mapper接口

public interface DemoMapper {

    /**
     * 查询信息
     *
     * @param test
     * @param test2
     * @param test3
     * @return
     */
    List<DemoEntity> select(String test, Integer test2, Character test3);

}

XML文件Mapper

<?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.iboxpay.mapper.DemoMapper">

    <resultMap id="demo" type="com.iboxpay.entity.DemoEntity">
        <result property="sno" column="SNO"/>
        <result property="name" column="SNAME"/>
        <result property="sex" column="SSEX"/>
        <result property="birth" column="SBIRTHDAY"/>
        <result property="grade" column="SCLASS"/>
    </resultMap>

    <select id="select" resultMap="demo">
        select t.* from student t
    </select>

</mapper>

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>

    <properties resource="database.properties"/>

    <typeAliases>
        <!-- package和typeAlias只能存在一种 -->
        <!-- package name="com.iboxpay.entity"/ -->
        <typeAlias type="com.iboxpay.entity.DemoEntity" alias="student"/>
    </typeAliases>

    <environments default="demo">
        <environment id="demo">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${connection.driver}"/>
                <property name="url" value="${connection.url}"/>
                <property name="username" value="${connection.username}"/>
                <property name="password" value="${connection.password}"/>
            </dataSource>
        </environment>
        <environment id="demo1">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${connection.driver}"/>
                <property name="url" value="${connection.url}"/>
                <property name="username" value="${connection.username}"/>
                <property name="password" value="${connection.password}"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <!-- package和mapper只能存在一种,且mapper只能使用一种属性去指定mapper类 -->
        <!-- package name="com.iboxpay.entity"/ -->
        <mapper resource="DemoMapper.xml"/>
    </mappers>

</configuration>

Mybatis的简单运行实例

public class Main {

    private static final String RESOURCE_URL = "mybatis-config.xml";

    public static void main(String[] args) {
        try {
            InputStream inputStream = 
                    Resources.getResourceAsStream(RESOURCE_URL);
            SqlSessionFactory sqlSessionFactory = 
                    new SqlSessionFactoryBuilder()
                    .build(inputStream);
            SqlSession sqlSession = sqlSessionFactory.openSession();

            DemoMapper demoMapper = sqlSession.getMapper(DemoMapper.class);
            List<DemoEntity> demoEntity = demoMapper.select("1", 2, '3');

            System.out.println(demoEntity);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

/**********************************************/
/**
运行结果为:
[DemoEntity(sno=4444, name=test1, sex=男, birth=null, grade=123456), 
DemoEntity(sno=5555, name=test2, sex=男, birth=null, grade=123456)]
*/
/**********************************************/

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值