
Mybatis解析(一)
数据库连接频繁创建与释放,影响系统性能 SQL语句硬编码,难以维护 预编译语句中的占位符硬编码 结果集解析存在硬编码,维护困难 使用数据库连接池优化资源管理 将SQL语句抽取到XML配置文件中 动态映射实体与数据库表 模板化代码重复问题 代理模式解决DAO接口实现
添加MyBatis坐标 创建用户数据表 编写User实体类 编写UserMapper映射文件 编写核心配置文件 编写测试类
4.1 核心配置文件
4.2 映射文件
发布日期:2021-05-08 01:51:20
浏览次数:22
分类:精选文章
本文共 1858 字,大约阅读时间需要 6 分钟。
Mybatis解析
1.1 JDBC操作问题
JDBC开发存在以下问题:
1.2 问题解决思路
1.3 自定义框架设计
- 核心配置文件:
sqlMapConfig.xml
: 数据库配置和映射文件引入mapper.xml
: SQL语句映射
- 框架功能:
- 解析配置文件
- 创建SQL会话接口
- 执行数据库操作
- 设计模式:
- Builder构建者模式
- 工厂模式
- 代理模式
1.4 框架实现
- Maven项目创建
- 核心类实现:
Configuration
: 数据库配置MappedStatement
: SQL语句映射SqlSessionFactoryBuilder
: 配置解析DefaultSqlSession
: 会话接口实现
- 依赖管理:
- MySQL驱动、MyBatis、Junit等
1.5 框架优化
Mybatis基本应用
3.1 快速上手
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语句:
select
、insert
、update
、delete
- SQL拼接、结果映射
- ResultMap:结果集字段映射
- XML标签:
mapper
、select
、update
、insert
、delete
result
、resultMap
、collection
、association
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的核心配置、基本使用、复杂映射以及注解开发。