Mybatis解析(一)
发布日期:2021-05-08 01:51:20 浏览次数:22 分类:精选文章

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

Mybatis解析

1.1 JDBC操作问题

JDBC开发存在以下问题:

  • 数据库连接频繁创建与释放,影响系统性能
  • SQL语句硬编码,难以维护
  • 预编译语句中的占位符硬编码
  • 结果集解析存在硬编码,维护困难
  • 1.2 问题解决思路

  • 使用数据库连接池优化资源管理
  • 将SQL语句抽取到XML配置文件中
  • 动态映射实体与数据库表
  • 1.3 自定义框架设计

    • 核心配置文件:
      • sqlMapConfig.xml: 数据库配置和映射文件引入
      • mapper.xml: SQL语句映射
    • 框架功能:
      • 解析配置文件
      • 创建SQL会话接口
      • 执行数据库操作
    • 设计模式:
      • Builder构建者模式
      • 工厂模式
      • 代理模式

    1.4 框架实现

    • Maven项目创建
    • 核心类实现:
      • Configuration: 数据库配置
      • MappedStatement: SQL语句映射
      • SqlSessionFactoryBuilder: 配置解析
      • DefaultSqlSession: 会话接口实现
    • 依赖管理:
      • MySQL驱动、MyBatis、Junit等

    1.5 框架优化

  • 模板化代码重复问题
  • 代理模式解决DAO接口实现

  • Mybatis基本应用

    3.1 快速上手

  • 添加MyBatis坐标
  • 创建用户数据表
  • 编写User实体类
  • 编写UserMapper映射文件
  • 编写核心配置文件
  • 编写测试类
  • 3.2 MyBatis增删改查操作

    • 插入操作:
      • 编写UserMapper映射文件
      • 调用sqlSession.insert()方法
    • 修改操作:
      • 编写Update映射文件
      • 调用sqlSession.update()方法
    • 删除操作:
      • 编写Delete映射文件
      • 调用sqlSession.delete()方法

    MyBatis配置文件深入解析

    4.1 核心配置文件SqlMapConfig.xml

    • 环境配置:
      • 多环境支持(如开发、测试、生产)
      • 数据源类型:UNPOOLED、POOLED、JNDI
    • 数据源配置:
      • 驱动类、JDBC URL、用户名、密码
    • 映射器配置:
      • 包资源加载、文件加载、类加载
      • 嵌套映射器实现

    4.2 映射文件mapper.xml

    • 动态SQL语句:
      • selectinsertupdatedelete
    • SQL拼接、结果映射
    • ResultMap:结果集字段映射
    • XML标签:
      • mapperselectupdateinsertdelete
      • resultresultMapcollectionassociation

    MyBatis复杂映射开发

    5.1 一对一查询

    • 模型:
      • 用户表与订单表一对一
    • SQL语句:
      • select * from orders o, user u where o.uid = u.id
    • 实体:
      • Order类包含User对象
    • 映射文件:
      • 使用ResultMap映射字段
    • 测试:
      • 查询订单及所属用户

    5.2 一对多查询

    • 模型:
      • 用户表与订单表一对多
    • SQL语句:
      • select *, o.id oid from user u left join orders o on u.id = o.uid
    • 实体:
      • User类包含Order列表
    • 映射文件:
      • 使用ResultMap和Collection映射
    • 测试:
      • 查询用户及其所有订单

    5.3 多对多查询

    • 模型:
      • 用户表与角色表多对多
    • SQL语句:
      • select * from user u, user_role ur, role r where u.id = ur.user_id and ur.role_id = r.id
    • 实体:
      • User类包含Role列表
    • 映射文件:
      • 使用ResultMap和Collection映射
    • 测试:
      • 查询用户及其所有角色

    MyBatis注解开发

    6.1 常用注解

    • @Select:定义查询方法
    • @Update@Delete@Insert:定义增删改方法
    • @Result@Results:结果集映射
    • @One@Many:一对一、一对多关系映射

    6.2 简单CRUD操作

    • 编写UserMapper接口:
      • 获取用户列表
      • 根据ID获取用户
      • 插入新用户
      • 更新用户信息
      • 删除用户

    6.3 复杂映射开发

    • 使用注解简化Mapper文件配置
    • 使用@Results注解封装多结果集
    • 使用@One@Many注解实现复杂关系映射
    • 示例:
      • 一对一查询订单及用户
      • 一对多查询用户及其订单
      • 多对多查询用户及其角色

    通过以上内容,可以清晰地了解Mybatis的核心配置、基本使用、复杂映射以及注解开发。

    上一篇:Mybatis解析(二)
    下一篇:Spring Cloud 微服务实践(二)

    发表评论

    最新留言

    哈哈,博客排版真的漂亮呢~
    [***.90.31.176]2025年03月30日 18时16分26秒