首页 > 代码库 > ibatis-一个类中包含List集合配置方式

ibatis-一个类中包含List集合配置方式

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="http://www.mamicode.com/${driver}"/>   
                  <property name="JDBC.ConnectionURL" value="http://www.mamicode.com/${url}"/>   
                  <property name="JDBC.Username" value="http://www.mamicode.com/${username}"/>   
                  <property name="JDBC.Password" value="http://www.mamicode.com/${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();
                }
            }
        }   

本文出自 “素颜” 博客,请务必保留此出处http://suyanzhu.blog.51cto.com/8050189/1558712

ibatis-一个类中包含List集合配置方式