Mybaits-xml配置开发流程

xml配置开发流程

  1. 在mybatis的全局配置文件中配置mapper.xml文件映射器

    <!-- 加载 Mapper 文件 -->
    <mappers>
    	<mapper resource="com/example/mapper/UserMapper.xml"/>
    </mappers>
    
  2. 加载配置文件:通过 Resources.getResourceAsStream 加载 mybatis-config.xml

  3. 创建 SqlSessionFactory:使用 SqlSessionFactoryBuilder 构建 SqlSessionFactory

  4. 获取 SqlSession:通过 SqlSessionFactory.openSession() 获取 SqlSession

  5. 获取 Mapper 实例:通过 sqlSession.getMapper(UserMapper.class) 获取 Mapper 接口的代理对象。

  6. 调用方法:通过 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()

注解开发流程

posted @ 2025-03-17 22:12  QAQ001  阅读(21)  评论(0)    收藏  举报