MyBatis详解

        MyBatis是一个基于Java的持久层ORM(对象关系映射)框架。它的主要作用是将Java程序中的数据对象映射到关系数据库中,实现数据的交互。MyBatis支持定制化SQL、存储过程以及高级映射,通过MyBatis,开发者可以免除大部分的JDBC代码以及设置参数和获取结果集的工作,极大地简化了数据库操作。

运行原理:

  • 加载配置并初始化

    当MyBatis启动时,它会加载配置文件(如mybatis-config.xml),这些配置文件包含了数据库连接信息、插件设置、类型别名等。同时,MyBatis还会加载映射文件(如mapper.xml),这些文件定义了SQL语句、参数映射和结果映射。这些配置和映射信息会被解析并生成MappedStatement对象,存储在内存中。
  • 创建SqlSession

    MyBatis应用程序会根据这些配置信息创建SqlSessionFactory工厂,进而获取SqlSession对象。SqlSession是MyBatis的核心,它包含了执行SQL所需要的所有方法。
  • SQL解析与执行

    通过SqlSession,应用程序可以直接运行映射的SQL语句。这些SQL语句会被解析并执行,完成对数据的增删改查操作。
  • 结果映射

    执行完SQL语句后,MyBatis会将操作结果按照映射配置进行转换。这通常涉及到将数据库的记录转换为Java对象(如JavaBean),或者是将查询结果转换为HashMap等数据结构。
  • 事务处理与关闭

    在完成数据操作后,如果需要,MyBatis会进行事务提交。之后,SqlSession会被关闭,返回操作结果。

MyBatis 的基本使用方法:

  • 配置数据源:

    首先,在 MyBatis 中需要配置数据源,包括数据库连接信息、用户名、密码等。这通常在 XML 格式的配置文件中完成。
  • 定义 SQL 映射文件:

    在 MyBatis 中,需要编写 SQL 映射文件来定义 SQL 查询、更新、插入和删除操作。这些映射文件通常包含 SQL 语句以及映射到 Java 对象的结果集处理方式。
  • 创建 DAO 接口:

    为每个数据访问对象(DAO)定义一个 Java 接口,接口中定义的方法对应 SQL 映射文件中的 SQL 操作。
  • 编写 SQL 映射配置:

    将 SQL 映射文件和 DAO 接口进行关联配置,通常也是在 XML 格式的配置文件中完成。
  • 使用 MyBatis API 进行数据库交互:

    在应用程序中,通过获取 MyBatis 的 SqlSession 实例,调用其中的方法执行 SQL 操作,例如查询、插入、更新和删除等。
  • 处理结果:

    根据需要,处理从数据库中返回的结果集,并将其转换为 Java 对象进行进一步处理或展示。

        总体来说,MyBatis 的使用方法主要包括配置数据源、定义 SQL 映射文件、创建 DAO 接口、编写 SQL 映射配置以及通过 MyBatis API 进行数据库交互。

示例代码:

  • 配置数据源(mybatis-config.xml):

<configuration>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC" />
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/mydatabase" />
        <property name="username" value="root" />
        <property name="password" value="password" />
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="com/example/mapper/UserMapper.xml" />
  </mappers>
</configuration>
  • 定义 SQL 映射文件(UserMapper.xml):

<mapper namespace="com.example.mapper.UserMapper">
  <!-- 根据用户ID查询用户信息 -->
  <select id="getUserById" resultType="User">
    SELECT * FROM users WHERE id = #{id}
  </select>
</mapper>
  • 创建 DAO 接口(UserMapper.java):

package com.example.mapper;

import com.example.model.User;

public interface UserMapper {
    // 根据用户ID查询用户信息
    User getUserById(int id);
}
  • 使用 MyBatis API 进行数据库交互:

import java.io.InputStream;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import com.example.mapper.UserMapper;
import com.example.model.User;

public class MyBatisExample {

    public static void main(String[] args) {
        String resource = "mybatis-config.xml";
        try (InputStream inputStream = Resources.getResourceAsStream(resource)) {
            // 创建 SqlSessionFactory 实例
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

            try (SqlSession session = sqlSessionFactory.openSession()) {
                // 获取 UserMapper 接口实例
                UserMapper userMapper = session.getMapper(UserMapper.class);
                
                // 调用接口方法查询用户信息
                User user = userMapper.getUserById(1);
                
                // 打印查询结果
                System.out.println(user);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

        这个示例代码包含了配置数据源、定义 SQL 映射文件、创建 DAO 接口以及使用 MyBatis API 进行数据库交互的全部步骤,

 

 

  • 42
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值