Mybaits-xml配置开发流程
xml配置开发流程
-
在mybatis的全局配置文件中配置mapper.xml文件映射器
<!-- 加载 Mapper 文件 --> <mappers> <mapper resource="com/example/mapper/UserMapper.xml"/> </mappers> -
加载配置文件:通过
Resources.getResourceAsStream加载mybatis-config.xml。 -
创建 SqlSessionFactory:使用
SqlSessionFactoryBuilder构建SqlSessionFactory。 -
获取 SqlSession:通过
SqlSessionFactory.openSession()获取SqlSession。 -
获取 Mapper 实例:通过
sqlSession.getMapper(UserMapper.class)获取 Mapper 接口的代理对象。 -
调用方法:通过 Mapper 接口的方法执行 SQL 操作
import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import java.io.IOException; import java.io.InputStream; public class MyBatisExample { public static void main(String[] args) { // 1. 加载 MyBatis 配置文件 String resource = "mybatis-config.xml"; InputStream inputStream = null; try { inputStream = Resources.getResourceAsStream(resource); } catch (IOException e) { e.printStackTrace(); } // 2. 创建 SqlSessionFactory SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); // 3. 获取 SqlSession try (SqlSession sqlSession = sqlSessionFactory.openSession()) { // 4. 获取 Mapper 接口的实例 UserMapper userMapper = sqlSession.getMapper(UserMapper.class); // 5. 调用 Mapper 接口的方法 User user = userMapper.selectUserById(1); System.out.println(user); } } }
Resources 类
- inputStream = Resources.getResourceAsStream(resource); 是 Java 中用于从类路径(classpath)加载资源文件并返回一个 InputStream 的代码。
- resource:资源文件的路径,通常是相对于类路径的路径。
- 返回值:一个 InputStream 对象,用于读取资源文件的内容
事务管理
-
默认情况下,MyBatis 不会自动提交事务。如果需要提交事务,可以调用
sqlSession.commit()。 -
如果发生异常,可以调用
sqlSession.rollback()回滚事务 -
如果希望 MyBatis 自动提交事务,可以在创建 SqlSession 时设置 autoCommit 参数为 true
//SqlSession sqlSession = sqlSessionFactory.openSession(true)自动提交事务 try (SqlSession sqlSession = sqlSessionFactory.openSession()) { UserMapper userMapper = sqlSession.getMapper(UserMapper.class); User user = new User(); user.setName("Alice"); user.setAge(25); userMapper.insertUser(user); // 提交事务 sqlSession.commit(); } catch (Exception e) { // 回滚事务 sqlSession.rollback(); e.printStackTrace(); }
一些注意点
SqlSession实现了AutoCloseable接口,可以使用try-with-resources语法自动关闭。- 如果不使用
try-with-resources,需要手动调用sqlSession.close()

浙公网安备 33010602011771号