引言
MyBatis 是一款优秀的持久层框架,它消除了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程。在这个指南中,我们将从零开始,一步步搭建一个基于 MyBatis 的 Java 项目数据库框架,通过实战让你快速掌握 MyBatis 的使用。
一、准备工作
1.1 环境搭建
在开始之前,请确保你的计算机上已安装以下软件:
- Java Development Kit (JDK)
- Integrated Development Environment (IDE),如 IntelliJ IDEA 或 Eclipse
- MySQL 或其他数据库
1.2 创建项目
- 打开你的 IDE,创建一个新的 Java 项目。
- 选择合适的构建工具,如 Maven 或 Gradle,配置项目依赖。
二、添加 MyBatis 依赖
2.1 Maven 依赖
在项目的 pom.xml 文件中,添加以下依赖:
<dependencies>
<!-- MyBatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<!-- MySQL 驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
<!-- 添加数据库连接池依赖 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.21</version>
</dependency>
</dependencies>
2.2 Gradle 依赖
在项目的 build.gradle 文件中,添加以下依赖:
dependencies {
implementation 'org.mybatis:mybatis:3.5.6'
implementation 'mysql:mysql-connector-java:8.0.22'
implementation 'com.alibaba:druid:1.1.21'
}
三、配置 MyBatis
3.1 创建配置文件
在项目的 src/main/resources 目录下,创建一个名为 mybatis-config.xml 的配置文件。
<?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="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/your_database?useSSL=false"/>
<property name="username" value="your_username"/>
<property name="password" value="your_password"/>
</dataSource>
</environment>
</environments>
<!-- 配置映射器 -->
<mappers>
<mapper resource="com/your/package/YourMapper.xml"/>
</mappers>
</configuration>
3.2 配置文件说明
<environments>:配置数据库环境,包括事务管理和数据源。<dataSource>:配置数据源,包括数据库驱动、URL、用户名和密码。<mappers>:配置映射器,指定 Mapper 文件的位置。
四、编写 Mapper 文件
4.1 创建 Mapper 文件
在项目的 src/main/resources/com/your/package 目录下,创建一个名为 YourMapper.xml 的 Mapper 文件。
<?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.your.package.YourMapper">
<!-- 定义 SQL 语句 -->
<select id="selectById" resultType="com.your.package.YourEntity">
SELECT * FROM your_table WHERE id = #{id}
</select>
</mapper>
4.2 Mapper 文件说明
<mapper>:定义 Mapper 接口,指定命名空间。<select>:定义查询 SQL 语句,指定 ID、结果类型和 SQL 语句。
五、编写 Mapper 接口
在项目的 src/main/java/com/your/package 目录下,创建一个名为 YourMapper.java 的 Mapper 接口。
package com.your.package;
import java.util.List;
public interface YourMapper {
List<YourEntity> selectById(Integer id);
}
5.1 Mapper 接口说明
selectById:定义一个方法,用于执行查询 SQL 语句。
六、使用 MyBatis
6.1 创建 SqlSessionFactory
在项目的 src/main/java/com/your/package 目录下,创建一个名为 MyBatisUtil.java 的工具类。
package com.your.package;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
public class MyBatisUtil {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
String resource = "mybatis-config.xml";
sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream(resource));
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSessionFactory getSqlSessionFactory() {
return sqlSessionFactory;
}
}
6.2 使用 MyBatis
package com.your.package;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
public class Main {
public static void main(String[] args) {
SqlSessionFactory sqlSessionFactory = MyBatisUtil.getSqlSessionFactory();
try (SqlSession session = sqlSessionFactory.openSession()) {
YourMapper mapper = session.getMapper(YourMapper.class);
List<YourEntity> list = mapper.selectById(1);
for (YourEntity entity : list) {
System.out.println(entity);
}
}
}
}
6.3 运行结果
当你运行上述代码时,它将查询数据库中 ID 为 1 的记录,并打印到控制台。
结语
通过本指南,你已经学会了如何从零开始搭建一个基于 MyBatis 的 Java 项目数据库框架。在实际项目中,你可以根据需求对 MyBatis 进行扩展和优化。希望这篇指南对你有所帮助!
