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="${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();
                }
            }
        }

时间: 2024-12-15 06:36:40

ibatis-一个类中包含List集合配置方式的相关文章

一个类在另一个类中以集合形式声明为属性时应该注意的问题

标题:一个类在另一个类中以集合形式声明为属性时应该注意的问题,先解释一下,看下面的代码吧 [Serializable] public class MO_T_sj_quest { public List<MO_T_sj_answer> AnswerList { get; set; } public List<MO_T_sj_answer> IDList { get; set; } public List<MO_T_sj_quest_bind> BindList { get

Java反射机制demo(五)—获得并调用一个类中的方法

这个demo在使用反射机制操作属性之前,主要原因是因为在.class文件字节码中,方法排在属性的前面. 1,获得一个类中的方法 先看一下方法和运行结果.获取所有的方法使用Class类中getMethos()方法. 待获取的类: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 package

数据抓取的一个类,包含一些常用的方法

原文:数据抓取的一个类,包含一些常用的方法 using System;using System.Configuration;using System.IO;using System.Net;using System.Text;using System.Text.RegularExpressions; namespace XXX{    /// <summary>    /// Func 的摘要说明.    /// </summary>    public class Func   

【包容】一个类可以包含另一个类的对象

当一个类中出现了另一个类的对象,这种现象我们叫做包容! #include <iostream> using namespace std; class A { public: A(){x=0;} A(int i){x=i;} void get(){cout<<x<<endl;;} ~A(){} private: int x; }; class B { public: B(){y=0;} B(int i,int j,int k):a(i),b(j){y=k;}//初始化赋值

C#判断一个类中有无&quot;指定名称&quot;的方法

C#中可以通过反射分析元数据来解决这个问题,示例代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 using System; using System.Reflection; namespace Hello {     class Program     {  

黑马基础阶段测试题:创建Phone(手机)类,Phone类中包含以下内容:

package com.swift; public class Phone { private String pinpai; private int dianliang; public String getPinpai() { return pinpai; } public void setPinpai(String pinpai) { this.pinpai = pinpai; } public int getDianliang() { return dianliang; } public v

怎么编写可以把一个类中只能创建一个对象

static关键字可以限定一份: class Person{ String name; private Person(){};//私有化构造函数,禁止外部创建对个本类的对象 static Person p=new Person();//在本类中创建一个对象,因为下面一个普通方法在应用程序中直接类名.方法名:那么 //直接在上面添加static关键字,使之变成静态方法. public static Person getInstance(){  return p;//返回到上面的对象.具体就是把内存

struts中的action匹配一个类中多个方法

<action name="emp-*" class="employeeAction" method="{1}"> 这是利用Struts2里面的自动匹配特性.*代表通配符,可以匹配任何一个字符串[1]表示匹配的参数.举个例子来说,如果你在xml文件中做了这个配置,那么当你页面里面有一个form<form action="/emp-add" method="post"> 那么,*匹配到

关于一个类中方法的调用

大家都知道:对象是对客观事物的抽象,类是对对象的抽象,对象是类的实例. 在类中来调用方法.不过调用方法也有种种的情况.(如下几种情况) 情况一:同一个类中的两个方法相互调用 1.如果两个方法都是普通的方法,也就是非静态的方法的话,是可以直接调用的.例 ( public void a(){ system.out.println(“内容”): b(): } public void b(){ system.out.println(“内容2”): } ) 2.如果两个方法都是静态的方法,那么也是可以直接