mybatis的概述#
- mybatis是一个持久层框架,用java编写的。
- 它封装了jdbc操作的很多细节,使开发者只需要关注sql语句本身,而无需关注注册驱动,创建连接等繁杂过程
- 它使用了ORM思想实现了结果集的封装。
ORM#
- Object Relational Mappging 对象关系映射
- 就是把数据库表和实体类及实体类的属性对应起来
mybatis的环境搭建#
1. 创建maven工程并导入坐标#
Copy
| <dependencies> |
| <dependency> |
| <groupId>org.mybatis</groupId> |
| <artifactId>mybatis</artifactId> |
| <version>3.4.5</version> |
| </dependency> |
| <dependency> |
| <groupId>junit</groupId> |
| <artifactId>junit</artifactId> |
| <version>4.10</version> |
| <scope>test</scope> |
| </dependency> |
| <dependency> |
| <groupId>mysql</groupId> |
| <artifactId>mysql-connector-java</artifactId> |
| <version>5.1.6</version> |
| <scope>runtime</scope> |
| </dependency> |
| <dependency> |
| <groupId>log4j</groupId> |
| <artifactId>log4j</artifactId> |
| <version>1.2.12</version> |
| </dependency> |
| </dependencies> |
2. 创建实体类和dao的接口#
3. 创建Mybatis的主配置文件#
Copy
| <?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="mysql"> |
| |
| <environment id="mysql"> |
| |
| <transactionManager type="JDBC"></transactionManager> |
| |
| <dataSource type="POOLED"> |
| <property name="driver" value="com.mysql.jdbc.Driver"/> |
| <property name="url" value="jdbc:mysql://localhost:3306/ee50"/> |
| <property name="username" value="root"/> |
| <property name="password" value="1234"/> |
| </dataSource> |
| </environment> |
| </environments> |
| |
| <mappers> |
| <mapper resource="com/itheima/dao/UserMapper.xml"/> |
| </mappers> |
| </configuration> |
| |
4. 创建映射配置文件#
- mybatis的映射配置文件位置必须和dao接口的包结构相同
- 映射配置文件的mapper标签namespace属性的取值必须是dao接口的全限定类名
- 映射配置文件的操作配置(select),id属性的取值必须是dao接口的方法名
Copy
| <?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="com.itheima.dao.IUserDao"> |
| |
| <select id="findAll" resultType="com.itheima.domain.User"> |
| select * from user |
| </select> |
| </mapper> |
5. 测试类#
Copy
| |
| InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml"); |
| |
| SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); |
| |
| SqlSessionFactory factory = builder.build(in); |
| |
| SqlSession session = factory.openSession(); |
| |
| IUserDao userDao = session.getMapper(IUserDao.class); |
| |
| List<User> users = userDao.findAll(); |
| for(User user : users) { |
| System.out.println(user); |
| } |
| |
| session.close(); |
| in.close(); |
基于注解的入门案例#
- 移除映射配置文件,在dao接口的方法上使用@Select注解,并且指定SQL语句
- 在SqlMapConfig.xml中的mapper配置时,使用class属性指定dao接口的全限定
Mybatis分析#

查询所有的分析#

入门案例分析#

自定义Mybatis分析#

基于 XML 的自定义 Mybatis 框架#
- 编写读取配置文件 Resources类
- 编写 Mapper 类: 用于封装查询时的必要信息:要执行的 SQL 语句和实体类的全限定类名
- 编写 Configuration 配置类:1.数据库信息 2.sql 的 map 集合
- 编写构建者 SqlSessionFactory类
- 编写 SqlSessionFactory 接口和DefaultSqlSessionFactory 实现类 #openSession
- 编写 SqlSession 接口和 DefaultSqlSession 实现类 #getMapper
- 编写用于创建 Dao 接口代理对象的类
基于注解方式定义 Mybatis 框架#
自定义mybatis开发流程图#

【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· 对象命名为何需要避免'-er'和'-or'后缀
· 编程神器Trae:当我用上后,才知道自己的创造力被低估了多少
· 开发的设计和重构,为开发效率服务
· 从零开始开发一个 MCP Server!
· Ai满嘴顺口溜,想考研?浪费我几个小时
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密