引言
MyBatis 是一个优秀的持久层框架,它消除了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的工作。MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
MyBatis 简介
MyBatis 的设计哲学是“半自动化”,它允许程序员在必要时手动编写 SQL 语句,同时也提供了强大的映射功能。这使得 MyBatis 在灵活性和性能之间取得了很好的平衡。
MyBatis 的核心组件
- SqlSession: MyBatis 的核心接口,它包含执行 SQL 命令所需的所有方法。
- Executor: MyBatis 的执行器接口,负责执行传入的 SQL 命令。
- Mapper: Mapper 接口,定义了数据库操作的 SQL 映射。
- SqlSource: SQL 源接口,用于加载和解析 SQL 语句。
- MappedStatement: 表示一个映射语句的映射器接口,包含了 SQL 语句和参数映射信息。
入门实践
环境搭建
- 添加依赖:在项目的
pom.xml文件中添加 MyBatis 的依赖。<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.6</version> </dependency> - 配置文件:创建
mybatis-config.xml文件,配置数据源、事务管理器等。<configuration> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mydb"/> <property name="username" value="root"/> <property name="password" value=""/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/example/mapper/UserMapper.xml"/> </mappers> </configuration> - 创建实体类:定义与数据库表对应的 Java 类。
public class User { private Integer id; private String name; // 省略 getter 和 setter } - 创建 Mapper 接口:定义数据库操作的方法。
public interface UserMapper { User getUserById(Integer id); } - 创建 Mapper 映射文件:定义 SQL 语句和参数映射。
<mapper namespace="com.example.mapper.UserMapper"> <select id="getUserById" resultType="User"> SELECT * FROM user WHERE id = #{id} </select> </mapper>
使用 MyBatis
- 创建 SqlSessionFactory:通过配置文件创建。
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml")); - 获取 SqlSession:通过 SqlSessionFactory 获取。
SqlSession sqlSession = sqlSessionFactory.openSession(); - 执行操作:通过 Mapper 接口执行数据库操作。
User user = sqlSession.selectOne("com.example.mapper.UserMapper.getUserById", 1); sqlSession.close();
总结
MyBatis 是一个功能强大且灵活的持久层框架,通过本文的介绍和实践指南,相信你已经对 MyBatis 有了一定的了解。在实际项目中,MyBatis 可以帮助你简化数据库操作,提高开发效率。祝你学习愉快!
