基于 MyBatis 框架 的完整开发流程与顺序
一、环境准备阶段
1. 新建 Maven 项目(或普通 Java 项目)
-
作用:用 Maven 统一管理依赖,自动下载 MyBatis、MySQL 驱动等 Jar 包
-
操作
:
-
IDE(如 IDEA)选
Maven Archetype
(或直接建空项目),填groupId
、artifactId
(如Mybatis1
) -
若手动建项目,需自己整理目录结构
-
2. 配置 pom.xml
(Maven 依赖)
-
作用:引入 MyBatis 核心库、MySQL 驱动、JUnit(测试用)
-
关键依赖
<!-- MyBatis 核心 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.19</version> </dependency> <!-- MySQL 驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> </dependency> <!-- JUnit 测试 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency>
-
注意
:
-
解决资源导出问题(如
src/main/java
里的 XML 映射文件),需在pom.xml
里配置<build>
资源过滤
-
3. 编写 MyBatis 核心配置(mybatis-config.xml
)
-
作用:全局配置 MyBatis(数据源、事务、Mapper 扫描等)
-
关键内容
<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/mybatis?useSSL=false&serverTimezone=UTC"/> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> </environment> </environments> <!-- 注册 Mapper 映射文件 --> <mappers> <mapper resource="com/lyj/dao/UserMapper.xml"/> </mappers> </configuration>
-
注意
:
-
url
里的数据库名(mybatis
)、用户名、密码要和实际一致 -
mappers
里的resource
路径要和 XML 映射文件位置对应
-
二、业务功能开发阶段
1. 定义实体类(POJO):User.java
-
作用:映射数据库表字段,封装查询结果
-
示例
public class User { private int id; private String name; private String pwd; // 构造方法、Getter/Setter、toString() }
-
注意:属性名尽量和数据库字段名一致(或用
resultMap
处理映射)
2. 编写 Mapper 接口:UserDao.java
-
作用:定义数据库操作方法(面向接口编程)
-
示例
public interface UserDao { List<User> getUserList(); // 查询所有用户 User getUserById(int id); // 按 ID 查询 int addUser(User user); // 新增用户 int updateUser(User user); // 修改用户 }
-
注意:方法名要和 XML 映射文件里的
id
一致
3. 编写 SQL 映射文件:UserMapper.xml
-
作用:编写具体 SQL,绑定 Mapper 接口方法
-
示例
<mapper namespace="com.lyj.dao.UserDao"> <!-- 查询所有 --> <select id="getUserList" resultType="com.lyj.pojo.User"> select * from mybatis.user </select> <!-- 按 ID 查询 --> <select id="getUserById" parameterType="int" resultType="com.lyj.pojo.User"> select * from mybatis.user where id = #{id} </select> <!-- 新增 --> <insert id="addUser" parameterType="com.lyj.pojo.User"> insert into mybatis.user(id,name,pwd) values(#{id},#{name},#{pwd}) </insert> <!-- 修改 --> <update id="updateUser" parameterType="com.lyj.pojo.User"> update mybatis.user set name=#{name}, pwd=#{pwd} where id=#{id} </update> </mapper>
-
注意
:
-
namespace
必须是 Mapper 接口的全限定名 -
id
必须和接口方法名一致 -
parameterType
、resultType
要和实际类型对应
-
4. 编写工具类:MybatisUtils.java
-
作用:简化
SqlSession
获取,避免重复代码 -
示例
public class MybatisUtils { private static SqlSessionFactory sqlSessionFactory; static { try { // 加载核心配置 String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { e.printStackTrace(); } } // 获取 SqlSession(手动提交事务) public static SqlSession getSqlSession() { return sqlSessionFactory.openSession(); } }
-
注意:
openSession(true)
可开启自动提交(根据需求选)
三、测试阶段
1. 编写 JUnit 测试类:UserDaoTest.java
-
作用:验证 Mapper 接口方法是否正确
-
示例
public class UserDaoTest { @Test public void testGetUserList() { SqlSession sqlSession = MybatisUtils.getSqlSession(); UserDao userDao = sqlSession.getMapper(UserDao.class); List<User> userList = userDao.getUserList(); for (User user : userList) { System.out.println(user); } sqlSession.close(); } @Test public void testAddUser() { SqlSession sqlSession = MybatisUtils.getSqlSession(); UserDao userDao = sqlSession.getMapper(UserDao.class); int result = userDao.addUser(new User(5, "测试用户", "123456")); if (result > 0) { System.out.println("插入成功!"); sqlSession.commit(); // 手动提交事务 } sqlSession.close(); } }
-
注意
:
-
增删改操作需手动提交事务(
sqlSession.commit()
) -
测试完及时关闭
SqlSession
-
四、常见问题排查顺序
如果运行报错,按以下顺序排查:
-
检查依赖:
pom.xml
里的依赖是否下载成功(看External Libraries
里有没有 MyBatis、MySQL 驱动) -
检查配置:
mybatis-config.xml
的数据库连接是否正确(能连上网、用户名密码对) -
检查映射:
UserMapper.xml
的namespace
、id
是否和接口对应,SQL 语法是否正确 -
检查测试:测试类里的
SqlSession
是否正确获取,事务是否提交 -
看日志 / 报错:MyBatis 报错信息很详细(如
Invalid bound statement
就是映射没找到)
完整开发顺序总结
按这个流程走,从环境搭建到功能实现、测试,就能完整开发一个 MyBatis 项目核心是 “接口 + XML 映射” 的解耦思想,多练几遍👍