战斗伊始 - MyBatis框架入门学习(一)
发布日期:2021-05-11 00:06:04 浏览次数:19 分类:精选文章

本文共 3269 字,大约阅读时间需要 10 分钟。

MyBatis框架入门与实践教程

目录

  • 第一天:MyBatis入门
  • 第二天:MyBatis基本使用
  • 第三天:MyBatis深入与多表操作
  • 第四天:MyBatis缓存与注解开发

第一天:MyBatis入门

MyBatis概述

MyBatis是一个开源的持久层框架,专注于简化数据库操作。它通过抽象JDBC,封装了数据库 CRUD(插入、更新、删除、查询)操作,使开发者无需手动管理连接、事务等复杂细节。

持久层技术探讨

传统JDBC开发涉及大量的代码,如连接创建、语句执行等。为了简化这些操作,存在以下技术:

  • JDBC技术:提供了基本的数据库操作接口,如ConnectionPreparedStatementResultSet
  • Spring JdbcTemplate:Spring提供了一层封装,简化了JDBC的使用。
  • Apache DBUtils:提供了与JDBC类似的工具类。

但以上均不是框架,它们只是工具和接口层细节的封装。而MyBatis作为一个真正的持久层框架,为我们提供了更高层次的抽象。

ORM的概念

MyBatis采用Object-Relational Mapping(ORM)的思想,将数据库表与对象实体类一一对应。通过简单的数据库操作,可以对应用实体类进行操作,从而实现对数据库的交互。

数据库与实体类映射

以下是用户表的示例:

  • 数据库表: | id | username | birthdate | sex | address | |---|---|---|---|---| | 1 | 老王 | 2000-01-01 | 男 |北京 |
  • 实体类:
public class User implements Serializable {
private Long id;
private String username;
private Date birthdate;
private String sex;
private String address;
}

保持数据库字段与实体类属性一致。

今日目标

  • 确保实体类字段名与数据库表名一致。

第二天:MyBatis环境搭建

搭建步骤

  • 创建数据库表
  • CREATE TABLE user (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL,
    birthdate DATE NOT NULL,
    sex VARCHAR(20) NOT NULL,
    address VARCHAR(100) NOT NULL
    );
    1. 创建 Maven工程,并引入MyBatis坐标: 通过Maven仓库获取MyBatis依赖,建议访问MyBatis官方网站获取最新坐标。

    2. 创建实体类和DAO接口

      • 实体类 (User.java):
      public class User implements Serializable {
      private Long id;
      private String username;
      private Date birthdate;
      private String sex;
      private String address;
      // Getter and Setter方法需手动编写
      }
      • DAO接口 (IUserDao.java):
      public interface IUserDao {
      List
      findAll();
      }
      1. 配置MyBatis
        • 主配置文件 (SqlMapConfig.xml):
        • 映射文件 (IUserDao.xml):

        环境搭建注意事项

        • 目录结构
          • 项目目录:com/mybatis/
          • DAO接口位于 com/mybatis/dao,映射文件放在 resources/dao
        • 命名规范
          • mapper文件的namespace必须与DAO接口的全限定类名一致。
          • id属性指定为DAO方法名。

        第三天:MyBatis入门案例

        基于XML的入门案例

        以下是MyBatis的简单使用案例:

        public class MybatisTest {
        public static void main(String[] args) throws Exception {
        // 1. 加载配置文件
        InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
        // 2. 创建SqlSessionFactory工厂
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        SqlSessionFactory factory = builder.build(in);
        // 3. 获取SqlSession
        SqlSession session = factory.openSession();
        // 4. 获取DAO代理对象
        IUserDao userDao = session.getMapper(IUserDao.class);
        // 5.执行查询
        List
        users = userDao.findAll();
        for (User user : users) {
        System.out.println(user);
        }
        // 6. 资源释放
        session.close();
        in.close();
        }
        }

        常见错误处理

        • classpath错误
          • 可能是exec-maven-plugin缺失,需在pom.xml添加插件。
        • 中文乱码
          • 使用Junit测试以避免主方法中字节转换问题。

        第四天:自定义MyBatis分析

        核心知识点

        MyBatis基于反射、工厂模式、构造者模式、代理模式,提供灵活的配置选项。

        MyBatis的内在结构

        • 工厂模式:通过SqlSessionFactory创建SqlSession
        • 构造者模式SqlSessionFactoryBuilder负责读取配置文件并创建工厂。
        • 代理模式:通过动态代理实现DBObject操作,减少对数据库的直接操作。

        实现细节

        • SqlMapConfig.java:
        public class SqlMapConfig {
        private Map
        mappers = new HashMap<>();
        public void setMappers(Map
        mappers) {
        this.mappers.putAll(mappers);
        }
        }
        • Mapper接口:
        public interface Mapper {
        void update;
        void delete;
        // 其他CRUD方法
        }

        通过以上内容,我们完成了对MyBatis框架的基础理解与实践,准备进行更深入的学习与应用。

    上一篇:再下一城 - springMVC框架笔记(一)
    下一篇:Java 到底有几种IO流? IO流学习笔记(一)

    发表评论

    最新留言

    做的很好,不错不错
    [***.243.131.199]2025年04月16日 10时06分39秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章