MyBatis学习笔记(二):入门程序

本文详细介绍了如何在IntelliJIDEA环境下配置MyBatis环境,包括添加依赖、编写核心配置文件、执行SQL语句以及整合logback日志框架。通过实例展示了从新项目创建到完整MyBatis程序的开发流程。
摘要由CSDN通过智能技术生成

二、MyBatis 入门程序

2.1 环境

  • 软件

    • intelliJ IDEA:2023.2.1
    • Navicat for MySQL:16.0.14
    • MySQL 数据库:8.0.33
  • 组件

    • MySQL 驱动:8.0.33
    • MyBatis:3.5.13
    • JDK:Java 17
    • JUnit
    • Logback

2.2 入门程序开发步骤

  • 准备数据库表

  • IDEA --> new project,配置 JDK

  • 新建一个 Maven 模块

    • ① 引入 mybatis 依赖和 mysql 依赖

      <dependencies>
          <dependency>
              <groupId>org.mybatis</groupId>
              <artifactId>mybatis</artifactId>
              <version>3.5.13</version>
          </dependency>
      
          <dependency>
              <groupId>com.mysql</groupId>
              <artifactId>mysql-connector-j</artifactId>
              <version>8.0.33</version>
          </dependency>
      </dependencies>
      
    • ② 在 src/main/resources 中编写 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>
        <environments default="development">
          <environment id="development">
            <transactionManager type="JDBC"/> // 事务管理
            <dataSource type="POOLED">
              <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
              <property name="url" value="jdbc:mysql://localhost:3306/formybatis"/>
              <property name="username" value="root"/>
              <property name="password" value="123456"/>
            </dataSource>
          </environment>
        </environments>
        <mappers>
          <!-- 指定 XxxMapper.xml 的路径 -->
          <mapper resource="XxxMapper.xml"/>
        </mappers>
      </configuration>
      
    • ③ 在 src/main/resources 中编写 SQL 语句的配置文件,XxxMapper.xml(一张表对应一个),以 insert 语句为例

      <?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">
          <insert id="xxx">
          	<!-- insert 语句 -->
          </insert>
      </mapper>
      
    • ④ 编写 MyBatis 程序

      • SqlSessionFactoryBuilder --> SqlSessionFactory --> SqlSession

        // 获取 SqlSessionFactoryBuilder 对象
        SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
        
        // 获取 SqlSessionFactory 对象
        // 一个数据库对应一个 SqlSessionFactory 对象,通常一个该对象对应一个数据库
        InputStream is = Resources.getResourceAsStream("mybatis 核心配置文件的路径"); // 默认从类的根路径下开始查找
        SqlSessionFactory ssf = ssfb.build(is);
        
        // 获取 SqlSession 对象
        SqlSession sqlSession = ssf.openSession();
        
        // 执行 SQL 语句
        sqlSession.insert("SQL 语句的配置文件中对应的 id"); // 返回值:影响数据库表中的记录条数
        
        // 手动提交
        sqlSession.commit();
        

2.3 完整的 Mybatis 程序

public class FirstMybatis {
    public static void main(String[] args) {
        SqlSession sqlSession = null;
        try {
            SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
            SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(Resources.getResourceAsStream("mybatis-config.xml"));
            // 开启会话(底层开启事务机制)
            sqlSession = sqlSessionFactory.openSession();
            // 执行 SQL 语句,处理相关业务
            int count = sqlSession.insert("insertStu");
            System.out.println(count);
            // 没有发生异常时提交事务
            sqlSession.commit();
        } catch (IOException e) {
            if (sqlSession != null) {
                sqlSession.rollback();
            }
        } finally {
            if (sqlSession != null) {
                sqlSession.close();
            }
        }
    }
}

2.4 引入日志框架 logback

引入日志框架可以看清楚 mybatis 执行的具体 sql

  • 在配置文件 <configuration> 中添加 <settings>,参考 Maven 手册

    • STDOUT_LOGGING 是标准日志,mybatis 已经实现了这种标准日志
    • 在使用其他日志时,需要引入相应的依赖
    <configuration>
        <settings>
    		<setting name="logImpl" value="STDOUT_LOGGING"></setting>
    	</settings>
    </configuration>
    
  • ① 核心配置文件中添加 <settings>

    <settings>
        <setting name="logImpl" value="SLF4J"/>
    </settings>
    
  • ② 引入 logback 依赖,这个日志框架实现了 slf4j 规范

    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.11</version>
        <scope>test</scope> <!-- 注意这里的范围 -->
    </dependency>
    
  • ③ 引入 logback 配置文件

    • 该文件必须放在类的根路径下,即 src/main/resources 目录下
    • 配置文件名必须为 logback-test 或 logback
    <?xml version="1.0" encoding="UTF-8"?>
    
    <!-- 配置文件修改时重新加载,默认true -->
    <configuration scan="false">
        <!-- 控制台输出 -->
        <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <!-- 日志输出格式 -->
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
            </encoder>
        </appender>
    
        <!-- mybatis log configure -->
        <logger name="com.apache.ibatis" level="TRACE"/>
        <logger name="java.sql.Connection" level="DEBUG"/>
        <logger name="java.sql.Statement" level="DEBUG"/>
        <logger name="java.sql.PreparedStatement" level="DEBUG"/>
    
        <!-- 日志输出级别,TRACE < DEBUG < INFO < WARN < ERROR -->
        <root level="DEBUG">
            <appender-ref ref="STDOUT"/>
            <appender-ref ref="FILE"/>
        </root>
    </configuration>
    

2.5 封装 mybatis 工具类

public class SqlSessionUtil {
    private static SqlSessionFactory sqlSessionFactory;

    static {
        try {
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml"));
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    private SqlSessionUtil() {
    }

    /**
     * 获取会话对象
     * @return 会话对象
     */
    public static SqlSession openSession() {
        return sqlSessionFactory.openSession();
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值