
每一个MyBatis的应用程序都以一个SqlSessionFactory 对象的实例为核心 。
SqlSessionFactory对象的实例可以通过SqlSessionFactoryBuilder对象来获得 。
SqlSessionFactoryBuilder对象可以从 XML 配置文件中构建 SqlSessionFactory对象。
- package org.example.utils;
-
- 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 MybatisUtil {
- private static SqlSessionFactory sqlSessionFactory;
- static {
- try {
- InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
- sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
- public static SqlSession getSqlSession() {
- return sqlSessionFactory.openSession();
- }
- }
通过SqlSessionFactory对象,可以获得SqlSession的实例。
SqlSession 对象完全包含以数据库为背景的所有执行 SQL 操作的方法。你可以用 SqlSession 实例来直接执行已映射的 SQL 语句 。
Mapper接口的全限定名为映射文件的namespace的值
Mapper接口的方法名称和映射文件中定义的每个sql的id相同
Mapper接口的方法参数和映射文件中定义每个sql的parameterType类型相同 Mapper接口的方法返回的单个对象类型和映射文件中定义的每个sql的resultType类型相同
创建MyBatis的主配置文件mybatis.xml 在工程中新建Source Folder命名为resources来专门存放MyBatis的主配置文件,在resources中新建XML File命名为mybatis.xml
创建MyBatis的SQL映射XML文件,并且映射文件要同刚才创建的映射器接口在同一包中,与映射器接口命名也相同,所以映射文件名为UserMapper.xml
注意:要将映射文件关联到主配置文件
- "1.0" encoding="UTF-8" ?>
- configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
- <configuration>
- <environments default="development">
-
- environments>
- <mappers>
- <mapper resource="org/mybatis/example/BlogMapper.xml"/>
- mappers>
- configuration>
映射器(mappers)用来配置多个映射文件的位置, 有多种配置方式。
-
- <mapper resource="org/mybatis/builder/AuthorMapper.xml"/>
-
-
- <mapper class="org.mybatis.builder.AuthorMapper"/>
-
-
- <package name="org.mybatis.builder"/>
- SqlSession session = MyBatisUtil.openSqlSession();
- List
users = session.selectList("com.mybatis.mapper.UserMapper.selectAllUsers"); - for(User u : users) {
- System.out.println(u);
- }
- session.close();