`

ibatis连接查询

 
阅读更多
本例子连接tb_account,tb_order,tb_orderItem三张表进行连接查询。

Account.java代码如下:
package com.ibatis.chap6.test;

import java.util.List;

public class Account {
	
	/* 用户id */
	private int id ;
	/* 用户名*/
	private String name ;
	/* 和该用户关联的订单*/
	private List<Order> orderList;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public List<Order> getOrderList() {
		return orderList;
	}

	public void setOrderList(List<Order> orderList) {
		this.orderList = orderList;
	}
}



Order.java代码如下:
package com.ibatis.chap6.test;

import java.util.List;

public class Order {
	/*订单id*/
	private int id ;
	/*订单名字*/
	private String name ;
	/* 与订单相关联的订单项*/
	private List<OrderItem> orderItemList;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public List<OrderItem> getOrderItemList() {
		return orderItemList;
	}

	public void setOrderItemList(List<OrderItem> orderItemList) {
		this.orderItemList = orderItemList;
	}
	
}



OrderItem.java代码如下:
package com.ibatis.chap6.test;

public class OrderItem {
	
	/*订单项id*/
	private int id ;
	/*订单项的名字*/
	private String name ;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

}



SqlMap.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>
	<resultMap class="com.ibatis.chap6.test.Account" id="ResultAccountInfoNMap" >
		<result property="id" column="accountid"/>
		<result property="name" column="accountName"/>
		<result property="orderList" resultMap="ResultOrderInfoNmap" />
	</resultMap>

	<resultMap class="com.ibatis.chap6.test.Order" id="ResultOrderInfoNmap">
		<result property="id" column="orderid" />
		<result property="name" column="ordername"/>
		<result property="orderItemList" resultMap="ResultOrderItemNMap" />
	</resultMap>

	<resultMap class="com.ibatis.chap6.test.OrderItem" id="ResultOrderItemNMap">
		<result property="id" column="orderItemid" />
		<result property="name" column="orderItemname"/>
		<!-- <result property="order" column="orderId" /> -->
	</resultMap>
	
	<select id="getAccountInfoListN" resultMap="ResultAccountInfoNMap" parameterClass="int">
	 select
	   tb_account.accountid as accountId,
	   tb_account.accountname as accountName,
	   tb_order.orderid as orderId,
	   tb_order.ordername as ordername,
	   tb_orderItem.orderItemid as orderItemId,
	   tb_orderItem.orderItemname as orderItemname
	 from tb_account join tb_order on tb_account.accountid = tb_order.accountId
	 join tb_orderItem on tb_order.orderid = tb_orderItem.orderId
	 order by accountId,orderId,orderItemId
	</select>
</sqlMap>



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>
  <transactionManager type="JDBC">
    <dataSource type="SIMPLE">
       <property name="JDBC.Driver" value="com.mysql.jdbc.Driver"/>
       <property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost:3306/ibatis"/>
       <property name="JDBC.Username" value="root"/>
       <property name="JDBC.Password" value="admin"/>
    </dataSource>
  </transactionManager>
   <sqlMap resource="com//ibatis//chap6//test//SqlMap.xml"/>
</sqlMapConfig>



Test.java代码如下:
package com.ibatis.chap6.test;

import java.io.Reader;
import java.util.List;

import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;

public class Test {
	
	public static void main(String[] args) throws Exception{
		String resource = "com//ibatis//chap6//test//SqlMapConfig.xml";
		Reader reader = Resources.getResourceAsReader(resource);
		SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
		List<Account> accountList =  sqlMap.queryForList("getAccountInfoListN",null);
		System.out.println("===================查询数据如下===================");
		for(int i=0;i<accountList.size();i++){
		System.out.println("accountid : "+accountList.get(i).getId()+" , accountName : "+accountList.get(i).getName()+",orderId : "+
		accountList.get(i).getOrderList().get(0).getId()+",orderName : "+accountList.get(i).getOrderList().get(0).getName()+
		", orderItemId : "+accountList.get(i).getOrderList().get(0).getOrderItemList().get(0).getId()+",orderItemName : "+
		accountList.get(i).getOrderList().get(0).getOrderItemList().get(0).getName());	
		}
	}

}



数据库表记录如下:



程序运行结果如下:
===================查询数据如下===================
accountid : 1 , accountName : YANGJIANZHOU,orderId : 1,orderName : order1, orderItemId : 1,orderItemName : orderItem1
accountid : 1 , accountName : YANGJIANZHOU,orderId : 1,orderName : order1, orderItemId : 2,orderItemName : orderItem2
accountid : 1 , accountName : YANGJIANZHOU,orderId : 2,orderName : order2, orderItemId : 3,orderItemName : orderItem3
accountid : 1 , accountName : YANGJIANZHOU,orderId : 2,orderName : order2, orderItemId : 4,orderItemName : orderItem4
accountid : 2 , accountName : CTGU,orderId : 3,orderName : order3, orderItemId : 5,orderItemName : orderItem5
accountid : 2 , accountName : CTGU,orderId : 3,orderName : order3, orderItemId : 6,orderItemName : orderItem6
accountid : 2 , accountName : CTGU,orderId : 4,orderName : order4, orderItemId : 7,orderItemName : orderItem7
accountid : 2 , accountName : CTGU,orderId : 4,orderName : order4, orderItemId : 8,orderItemName : orderItem8
accountid : 2 , accountName : CTGU,orderId : 4,orderName : order4, orderItemId : 9,orderItemName : orderItem9


  • 大小: 59.4 KB
分享到:
评论

相关推荐

    ibatis做连接查询 .doc

    本文将详细介绍如何使用iBatis进行连接查询。 首先,我们需要理解iBatis的工作原理。iBatis并不是像Hibernate那样完全自动管理数据库操作,而是将SQL语句的编写权交给开发者,这样可以更好地控制查询性能和复杂性。...

    C#中iBatis连接mySQL使用的DLL

    C#中iBatis连接mySQL使用的DLL

    ibatis 连接字符串 SqlMapConfig.xml

    结合这些文件,我们可以推断该压缩包可能是为了演示如何配置iBATIS连接MySQL数据库,并可能涉及到使用不同数据库(如Oracle)的兼容性问题。用户可能需要将这些JDBC驱动添加到项目的类路径中,以便iBATIS能够识别并...

    Ibatis连接MySQL数据库实例

    首先,要实现Ibatis连接MySQL,我们需要以下组件: 1. **Ibatis框架**:下载并引入Ibatis的jar包到项目中,通常会包括`ibatis-3.x.x.jar`,以及其依赖的`slf4j-api-1.x.x.jar`和`log4j-1.x.x.jar`。 2. **MySQL JDBC...

    Ibatis连接数据库的小例子

    在这个小例子中,我们已经成功地用Ibatis连接上了ORACLE数据库,并执行了一个简单的查询操作。Ibatis允许我们灵活地编写SQL,同时提供了事务管理和结果映射等功能,使得数据库操作更加便捷和高效。 注意,为了运行...

    IBATIS连接多数据库参考文档

    在IT行业中,数据库连接是应用程序的核心部分,尤其是在使用ORM(对象关系映射)框架时,如IBATIS。本文档将深入探讨如何在IBATIS框架下连接和管理多个数据库,以便于在不同环境中灵活切换或同时操作多个数据源。 ...

    ibatis连接oracle所需的jar包

    当使用Ibatis进行Oracle数据库的连接时,需要依赖特定的jar包来实现两者之间的交互。下面我们将详细探讨这些关键的jar包以及它们在Ibatis与Oracle连接中的作用。 1. **ibatis-2.3.3.jar**: 这是Ibatis框架的核心库...

    操作数据库 iBATIS查询

    ### 操作数据库iBATIS查询详解 #### 一、iBATIS中的LIKE查询技巧 iBATIS是一款优秀的Java持久层框架,它简化了基于SQL的程序编写,避免了程序员手动处理结果集和手工编写SQL语句。在进行数据库查询时,LIKE查询是...

    Ibatis复杂查询语句.doc

    在Ibatis中,复杂查询通常涉及到多个表的联接、条件动态拼接、子查询以及各种数据类型的处理。文档"Ibatis复杂查询语句.doc"所展示的查询语句就是一个很好的例子,展示了Ibatis如何处理复杂的数据库操作。接下来,...

    IBATIS建立的数据库连接

    **IBATIS数据库连接详解** IBATIS,全称为"Ibatis - A Simple SQL Mapping Framework",是一个优秀的开源Java持久层框架。它简化了在Java应用中处理SQL的过程,提供了SQL Map配置文件,使得开发者能够将SQL语句与...

    ibatis下oracle树查询

    在本话题中,我们将探讨如何在使用iBatis框架与Oracle数据库时实现树形查询。 首先,iBatis是一个优秀的持久层框架,它允许开发者将SQL语句直接写在XML配置文件或者注解中,提供了比传统JDBC更高级的抽象层,使得...

    Ibatis多表查询

    ### Ibatis多表查询知识点详解 #### 一、数据库表结构设计 为了演示Ibatis的多表查询功能,本文档采用了一个简单的例子:一个图书 (`book`) 表和一个用户 (`user`) 表,其中图书表与用户表之间存在一对多的关系。...

    IBatis.net 配置各种数据库

    在使用IBatis.net时,首要任务是配置数据库连接。全局配置文件SqlMapConfig.xml是IBatis的入口,用于配置数据源、事务管理器等信息。例如,对于MySQL数据库,可以在SqlMapConfig.xml中添加如下配置: ```xml , ...

    ibatis and和or联合查询 .doc

    ### ibatis and和or联合查询知识点 #### 一、ibatis简介 ibatis是一个支持普通SQL查询、存储过程以及高级映射的优秀开源数据访问框架。ibatis消除了几乎所有的JDBC对象操作,提供了一个简单的基本API,它通过XML或...

    SSI整合,有ibatis连接oracle的分页,ajax等技术

    "Ibatis连接Oracle的分页"是指利用Ibatis作为数据访问层,与Oracle数据库进行交互,并实现了分页查询功能。Oracle数据库支持多种分页方式,如ROWNUM伪列、ROWNUM配合子查询、ROW_NUMBER()窗口函数等。在这个项目中,...

    ibatis多表查询过程

    当我们需要进行多表查询时,iBatis提供了一种高效且易于管理的方式。本文将深入探讨iBatis在处理多表查询时的具体步骤和技巧。 ### 1. iBatis简介 iBatis 是一个基于Java的持久层框架,它简化了数据库访问,并避免...

    Ibatis查询语句里,可以使用多表查询

    多表查询通常涉及到 JOIN 操作,例如内连接(INNER JOIN)、左连接(LEFT JOIN)等,这些操作可以帮助我们从多个相关联的表中获取所需的数据。 #### 三、多表查询示例分析 根据提供的部分代码,我们可以看到一个多...

    IBatis完成单表基本的数据库操作 模糊查询

    标题 "IBatis完成单表基本的数据库操作 模糊查询" 涉及到的是使用iBatis这个轻量级的持久层框架进行数据库的基本操作,特别是模糊查询。iBatis是一个优秀的SQL映射框架,它允许开发者将SQL语句与Java代码分离,提高...

    mysql,jdbc详解,与ibatis对比。批量查询,分页处理。

    - **建立连接**: 通过`DriverManager.getConnection()`方法获得数据库连接。 - **执行SQL**: 使用`Statement`或`PreparedStatement`执行SQL语句。 - **处理结果**: 读取`ResultSet`中的数据或检查`PreparedStatement...

    Ibatis的简单例子(增删改查,联合查询等)

    在这个"Ibatis的简单例子"中,我们将探讨如何使用Ibatis进行数据库的增删改查(CRUD)操作以及联合查询。 1. **安装与配置**: 在开始之前,你需要在项目中添加Ibatis的依赖,通常是通过Maven或Gradle。在Maven的`...

Global site tag (gtag.js) - Google Analytics