本例子连接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进行连接查询。 首先,我们需要理解iBatis的工作原理。iBatis并不是像Hibernate那样完全自动管理数据库操作,而是将SQL语句的编写权交给开发者,这样可以更好地控制查询性能和复杂性。...
C#中iBatis连接mySQL使用的DLL
结合这些文件,我们可以推断该压缩包可能是为了演示如何配置iBATIS连接MySQL数据库,并可能涉及到使用不同数据库(如Oracle)的兼容性问题。用户可能需要将这些JDBC驱动添加到项目的类路径中,以便iBATIS能够识别并...
首先,要实现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连接上了ORACLE数据库,并执行了一个简单的查询操作。Ibatis允许我们灵活地编写SQL,同时提供了事务管理和结果映射等功能,使得数据库操作更加便捷和高效。 注意,为了运行...
在IT行业中,数据库连接是应用程序的核心部分,尤其是在使用ORM(对象关系映射)框架时,如IBATIS。本文档将深入探讨如何在IBATIS框架下连接和管理多个数据库,以便于在不同环境中灵活切换或同时操作多个数据源。 ...
当使用Ibatis进行Oracle数据库的连接时,需要依赖特定的jar包来实现两者之间的交互。下面我们将详细探讨这些关键的jar包以及它们在Ibatis与Oracle连接中的作用。 1. **ibatis-2.3.3.jar**: 这是Ibatis框架的核心库...
### 操作数据库iBATIS查询详解 #### 一、iBATIS中的LIKE查询技巧 iBATIS是一款优秀的Java持久层框架,它简化了基于SQL的程序编写,避免了程序员手动处理结果集和手工编写SQL语句。在进行数据库查询时,LIKE查询是...
在Ibatis中,复杂查询通常涉及到多个表的联接、条件动态拼接、子查询以及各种数据类型的处理。文档"Ibatis复杂查询语句.doc"所展示的查询语句就是一个很好的例子,展示了Ibatis如何处理复杂的数据库操作。接下来,...
**IBATIS数据库连接详解** IBATIS,全称为"Ibatis - A Simple SQL Mapping Framework",是一个优秀的开源Java持久层框架。它简化了在Java应用中处理SQL的过程,提供了SQL Map配置文件,使得开发者能够将SQL语句与...
在本话题中,我们将探讨如何在使用iBatis框架与Oracle数据库时实现树形查询。 首先,iBatis是一个优秀的持久层框架,它允许开发者将SQL语句直接写在XML配置文件或者注解中,提供了比传统JDBC更高级的抽象层,使得...
### Ibatis多表查询知识点详解 #### 一、数据库表结构设计 为了演示Ibatis的多表查询功能,本文档采用了一个简单的例子:一个图书 (`book`) 表和一个用户 (`user`) 表,其中图书表与用户表之间存在一对多的关系。...
在使用IBatis.net时,首要任务是配置数据库连接。全局配置文件SqlMapConfig.xml是IBatis的入口,用于配置数据源、事务管理器等信息。例如,对于MySQL数据库,可以在SqlMapConfig.xml中添加如下配置: ```xml , ...
### ibatis and和or联合查询知识点 #### 一、ibatis简介 ibatis是一个支持普通SQL查询、存储过程以及高级映射的优秀开源数据访问框架。ibatis消除了几乎所有的JDBC对象操作,提供了一个简单的基本API,它通过XML或...
"Ibatis连接Oracle的分页"是指利用Ibatis作为数据访问层,与Oracle数据库进行交互,并实现了分页查询功能。Oracle数据库支持多种分页方式,如ROWNUM伪列、ROWNUM配合子查询、ROW_NUMBER()窗口函数等。在这个项目中,...
当我们需要进行多表查询时,iBatis提供了一种高效且易于管理的方式。本文将深入探讨iBatis在处理多表查询时的具体步骤和技巧。 ### 1. iBatis简介 iBatis 是一个基于Java的持久层框架,它简化了数据库访问,并避免...
多表查询通常涉及到 JOIN 操作,例如内连接(INNER JOIN)、左连接(LEFT JOIN)等,这些操作可以帮助我们从多个相关联的表中获取所需的数据。 #### 三、多表查询示例分析 根据提供的部分代码,我们可以看到一个多...
标题 "IBatis完成单表基本的数据库操作 模糊查询" 涉及到的是使用iBatis这个轻量级的持久层框架进行数据库的基本操作,特别是模糊查询。iBatis是一个优秀的SQL映射框架,它允许开发者将SQL语句与Java代码分离,提高...
- **建立连接**: 通过`DriverManager.getConnection()`方法获得数据库连接。 - **执行SQL**: 使用`Statement`或`PreparedStatement`执行SQL语句。 - **处理结果**: 读取`ResultSet`中的数据或检查`PreparedStatement...
在这个"Ibatis的简单例子"中,我们将探讨如何使用Ibatis进行数据库的增删改查(CRUD)操作以及联合查询。 1. **安装与配置**: 在开始之前,你需要在项目中添加Ibatis的依赖,通常是通过Maven或Gradle。在Maven的`...