通过java编程 不使用 XML 构建 SqlSessionFactory

如果你更愿意直接从 Java 代码而不是 XML 文件中创建配置,或者想要创建你自己的配置构建器,MyBatis 也提供了完整的配置类,提供所有和 XML 文件相同功能的配置项。

考虑到官网所写的不是很详细,踩了挺多坑,所以特写此文章记录下来。

@Test
    public void testMamin() throws Exception {
        //创建连接池
        DataSource dataSource = new PooledDataSource("com.mysql.jdbc.Driver", "jdbc:mysql://15.134.120.5:3305/shvcxdfow?serverTimezone=Hongkong", "pafdsu", "pddadsfa");
        //事务
        TransactionFactory transactionFactory = new JdbcTransactionFactory();
        //创建环境
        Environment environment = new Environment("development", transactionFactory, dataSource);
        //创建配置
        Configuration configuration = new Configuration(environment);
        //开启驼峰规则
        configuration.setMapUnderscoreToCamelCase(true);
        //加入资源(Mapper接口)
        configuration.addMapper(UserMapper.class);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
        SqlSession session = sqlSessionFactory.openSession();
        try {
          //statement:sql唯一标识(mapper.xml映射文件中的id标识)
          //parament:参数
            User user = session.selectOne("mapper.UserMapper.findById", 1);
            System.out.println(user);
            //操作数据时,需要有提交操作
            session.commit();
        } finally {
            session.close();
        }
    }

注意该例中,configuration 添加了一个映射器类(mapper class)。映射器类是 Java 类,它们包含 SQL 映射语句的注解从而避免依赖 XML 文件。不过,由于 Java 注解的一些限制以及某些 MyBatis 映射的复杂性,要使用大多数高级映射(比如:嵌套联合映射),仍然需要使用 XML 配置。有鉴于此,如果存在一个同名 XML 配置文件,MyBatis 会自动查找并加载它(在这个例子中,基于类路径和 UserMapper.class 的类名,会加载 UserMapper.xml)。

此处必须要把UserMapper.class 和 UserMapper.xml 放在同一个目录下,因为在源码中写死了读同一路径xml,通过java编程 不使用 XML 构建 SqlSessionFactory

所以,代码目录如下:

通过java编程 不使用 XML 构建 SqlSessionFactory

并且,需要在pom.xml中将src/main/java 下的xml文件打包进来,否则编译时无法把xml文件引入的,如下为pom.xml的配置通过java编程 不使用 XML 构建 SqlSessionFactory

上一篇:07-Spring5-整合Mybatis


下一篇:Mybatis入门