1. 创建项目和数据库
        项目名称:ibatisdemo2
        数据库名:ibatis
        表:author
            CREATE TABLE `author` (
              `id` int(11) DEFAULT NULL,
              `name` varchar(30) DEFAULT NULL,
              `oid` int(11) DEFAULT NULL
            ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
        表:book
            CREATE TABLE `book` (
              `oid` int(11) DEFAULT NULL,
              `name` varchar(30) DEFAULT NULL
            ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    2.添加jar包
        --ibaties核心jar 包
        ibatis-2.3.3.720.jar
        --单元测试包
        junit-4.4.jar
        --数据库连接驱动包
        mysql-connector-java.jar
    3.添加配置文件
        1.在项目中创建conf目录
        2.在conf目录下创建属性文件 SqlMap.properties
            driver=com.mysql.jdbc.Driver
            url=jdbc:mysql://localhost:3306/mybatis
            username=root
            password=root
        3.在conf目录下添加SqlMapConfig.xml配置文件
            <?xml version="1.0" encoding="UTF-8" ?>   
            <!DOCTYPE sqlMapConfig         
                PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"         
                "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">   
              
            <sqlMapConfig>  
                <!-- 加载连接数据属性文件 -->
                  <properties resource="SqlMap.properties"/>
                  <!-- 配置事务 -->
                  <transactionManager type="JDBC" commitRequired="false">
                  <!-- 配置数据源 -->   
                      <!--
                          SIMPLE:
                              SIMPLE 是ibatis 内置的dataSource 实现,其中实现了一个简单的
                            数据库连接池机制,对应ibatis 实现类为
                            com.ibatis.sqlmap.engine.datasource.SimpleDataSourceFactory 。
                        DBCP:
                            基于Apache DBCP 连接池组件实现的DataSource 封装,当无容器提
                            供DataSource 服务时,建议使用该选项,对应ibatis 实现类为
                            com.ibatis.sqlmap.engine.datasource.DbcpDataSourceFactory 。
                        JNDI:
                            使用J2EE 容器提供的DataSource 实现,DataSource 将通过指定
                            的JNDI Name 从容器中获取。对应ibatis 实现类为
                            com.ibatis.sqlmap.engine.datasource.JndiDataSourceFacto
                            ry。
                       -->
                    <dataSource type="SIMPLE">   
                      <property name="JDBC.Driver" value="${driver}"/>   
                      <property name="JDBC.ConnectionURL" value="${url}"/>   
                      <property name="JDBC.Username" value="${username}"/>   
                      <property name="JDBC.Password" value="${password}"/>   
                    </dataSource>   
                  </transactionManager>   
            </sqlMapConfig>   
    4.创建实体类与映射文件
        1.在src目录下创建包
            包名:cn.jbit.domain
        2.在包下创建实体类与映射文件
            类名:Author.java
            public class Author {
                private Integer id;//作者编号
                private String name;//作者名称
                private int oid;//图书编号
                //省略get 和 set
            }
            类名:Book.java
            public class Book {
                private Integer oid;//图书编号
                private String name;//图书名称
                private List users;//作者
                //省略get 和 set
            }
            映射文件名:Book.xml
            <?xml version="1.0" encoding="UTF-8" ?>   
            <!DOCTYPE sqlMap         
                PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"         
                "http://ibatis.apache.org/dtd/sql-map-2.dtd">   
            <sqlMap>   
                <!-- 图书别名 -->
              <typeAlias alias="Book" type="cn.jbit.domain.Book"/>
              <!-- 作者别名 -->
              <typeAlias alias="Author" type="cn.jbit.domain.Author"/>
              <!-- 查询后封装的结果 -->
              <resultMap class="Book" id="bookResult">
                  <result property="oid" column="oid"/>
                  <result property="name" column="name"/>
                  <result property="users" column="oid" select="getUsersByBookId"/>
              </resultMap>
              <!-- 查询图书信息 -->
              <select id="selectAllBooks" resultMap="bookResult">
                  SELECT
                      oid,
                      b.name
                  FROM
                      book b
              </select>
              <!-- 根据图书编号查询作者 -->
              <select id="getUsersByBookId" parameterClass="int" resultClass="Author">
                  SELECT
                      *
                  FROM
                      author
                  WHERE
                      author.oid=#oid#
              </select>
            </sqlMap>  
        3.在核心配置文件SqlMapConfig.xml中添加映射文件引用
            <!-- 加载映射文件 -->
              <sqlMap resource="cn/jbit/domain/Book.xml"/>
    5.测试配置
        1.在项目中创建test目录
            /test
        2.在test目录下创建包
            包名:cn.jbit.junit
        3.在包下创建测试类
            类名:TestJoinSearch.java
            public class TestJoinSearch {
                private Reader reader;
                private SqlMapClient sqlMapClient;
                @Test
                public void testSearch() throws SQLException{
                    try {
                        //加载配置文件
                        reader = Resources.getResourceAsReader("SqlMapConfig.xml");
                        //创建SqlMapClient对象配置对象
                        sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
                        //关闭输入流
                        reader.close();
                        
                        //selectAllBooks:配置文件中id名称
                        List<Book> books = sqlMapClient.queryForList("selectAllBooks");
                        //获取集合中的第一个元素
                        System.out.println(books.get(0));
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }   

QQ截图20181014143201.jpg