
战斗伊始 - MyBatis框架入门学习(一)
创建数据库表:
发布日期:2021-05-11 00:06:04
浏览次数:19
分类:精选文章
本文共 3269 字,大约阅读时间需要 10 分钟。
MyBatis框架入门与实践教程
目录
- 第一天:MyBatis入门
- 第二天:MyBatis基本使用
- 第三天:MyBatis深入与多表操作
- 第四天:MyBatis缓存与注解开发
第一天:MyBatis入门
MyBatis概述
MyBatis是一个开源的持久层框架,专注于简化数据库操作。它通过抽象JDBC,封装了数据库 CRUD(插入、更新、删除、查询)操作,使开发者无需手动管理连接、事务等复杂细节。
持久层技术探讨
传统JDBC开发涉及大量的代码,如连接创建、语句执行等。为了简化这些操作,存在以下技术:
- JDBC技术:提供了基本的数据库操作接口,如
Connection
、PreparedStatement
和ResultSet
。 - 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);
-
创建 Maven工程,并引入MyBatis坐标: 通过Maven仓库获取MyBatis依赖,建议访问MyBatis官方网站获取最新坐标。
-
创建实体类和DAO接口:
- 实体类 (
User.java
): - DAO接口 (
IUserDao.java
): - 配置MyBatis:
- 主配置文件 (
SqlMapConfig.xml
): - 映射文件 (
IUserDao.xml
): - 目录结构:
- 项目目录:
com/mybatis/
- DAO接口位于
com/mybatis/dao
,映射文件放在resources/dao
。
- 项目目录:
- 命名规范:
- mapper文件的
namespace
必须与DAO接口的全限定类名一致。 id
属性指定为DAO方法名。
- mapper文件的
- classpath错误:
- 可能是
exec-maven-plugin
缺失,需在pom.xml
添加插件。
- 可能是
- 中文乱码:
- 使用Junit测试以避免主方法中字节转换问题。
- 工厂模式:通过
SqlSessionFactory
创建SqlSession
。 - 构造者模式:
SqlSessionFactoryBuilder
负责读取配置文件并创建工厂。 - 代理模式:通过动态代理实现DBObject操作,减少对数据库的直接操作。
- SqlMapConfig.java:
- Mapper接口:
public class User implements Serializable { private Long id; private String username; private Date birthdate; private String sex; private String address; // Getter and Setter方法需手动编写}
public interface IUserDao { ListfindAll();}
环境搭建注意事项
第三天: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.执行查询 Listusers = userDao.findAll(); for (User user : users) { System.out.println(user); } // 6. 资源释放 session.close(); in.close(); }}
常见错误处理
第四天:自定义MyBatis分析
核心知识点
MyBatis基于反射、工厂模式、构造者模式、代理模式,提供灵活的配置选项。
MyBatis的内在结构
实现细节
public class SqlMapConfig { private Mapmappers = new HashMap<>(); public void setMappers(Map mappers) { this.mappers.putAll(mappers); }}
public interface Mapper { void update; void delete; // 其他CRUD方法}
通过以上内容,我们完成了对MyBatis框架的基础理解与实践,准备进行更深入的学习与应用。
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2025年04月16日 10时06分39秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Nginx配置文件编写(基础配置)
2019-03-16
matlab simulink的constant模块
2019-03-16
对抗机器学习简介
2019-03-16
python里面读取文件和保存文件的路径
2019-03-16
对汇编中一些基础知识的理解
2019-03-16
对总线的一些认识
2019-03-16