基于 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 {@Testpublic 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();}@Testpublic 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 映射” 的解耦思想,多练几遍👍