一:描述下:
使用2个表,book,user表。一对多关系,一本书有多个作者。
表语句:
二:对应的Pojo类
........一下是get set 注意在ibatis定义的pojo类中要有个空的构造函数哦~~,
.......get set 注意:必须定义个list ,ibatis在实现多表关联查询时。
配置文件:对应pojo的 book.xml
<!-- 通过book的oid实现的一对多关联,ibatis会使用getKeysByLockId(id)得到的List填充users属性 -->
在定义个配置文件调用上面的配置文件:如下:
三:测试类:
使用2个表,book,user表。一对多关系,一本书有多个作者。
表语句:
CREATE TABLE `book` ( `oid` int(10) NOT NULL , `name` varchar(50) DEFAULT NULL, PRIMARY KEY (`oid`) ) ; DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` int(10) unsigned NOT NULL, `name` varchar(50) DEFAULT NULL, `book_oid` int(10) DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK_user_1` (`book_oid`), CONSTRAINT `FK_user_1` FOREIGN KEY (`book_oid`) REFERENCES `book` (`oid`) ) ;
二:对应的Pojo类
package com.pojo; public class User { private Integer id; private String name; private Integer book_oid;
........一下是get set 注意在ibatis定义的pojo类中要有个空的构造函数哦~~,
package com.pojo; import java.util.List; public class Book { private Integer oid; private String name; private List users;
.......get set 注意:必须定义个list ,ibatis在实现多表关联查询时。
配置文件:对应pojo的 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 namespace="test"> <typeAlias alias="User" type="com.pojo.User"/> <typeAlias alias="Book" type="com.pojo.Book"/> <resultMap id="BookResult" class="Book"> <result property="oid" column="oid"/> <result property="name" column="name"/> <result property="users" column="oid" select="getUsersByBookId"/> </resultMap>
<!-- 通过book的oid实现的一对多关联,ibatis会使用getKeysByLockId(id)得到的List填充users属性 -->
<select id="selectAllBooks" resultMap="BookResult"> <![CDATA[ select oid,b.name from book b ]]> </select> <select id="getUsersByBookId" parameterClass="int" resultClass="User"> <![CDATA[ select id,book_oid,u.name from user u where book_oid = #value# ]]> </select> </sqlMap>
在定义个配置文件调用上面的配置文件:如下:
<?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> <settings cacheModelsEnabled="true" enhancementEnabled="true" lazyLoadingEnabled="true" errorTracingEnabled="true" maxRequests="132" maxSessions="110" maxTransactions="15" useStatementNamespaces="false" /> <transactionManager type="JDBC"> <dataSource type="DBCP"> <property name="JDBC.Driver" value="com.mysql.jdbc.Driver" /> <property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost:3306/test" /> <property name="JDBC.Username" value="root" /> <property name="JDBC.Password" value="root" /> </dataSource> </transactionManager> <sqlMap resource="com/crfss/book.xml" /> </sqlMapConfig>
三:测试类:
package com.test; import java.io.IOException; import java.io.Reader; import java.util.Iterator; import java.util.List; import com.crfss.MainDb; import com.crfss.Un; import com.ibatis.common.resources.Resources; import com.ibatis.sqlmap.client.SqlMapClient; import com.ibatis.sqlmap.client.SqlMapClientBuilder; import com.pojo.Book; import com.pojo.User; public class TestDB { public static void main(String[] args) { String resource = "sql-map-config.xml"; try { Reader reader = Resources.getResourceAsReader(resource); SqlMapClient mapClient = SqlMapClientBuilder.buildSqlMapClient(reader); reader.close(); List<Book> books=mapClient.queryForList("selectAllBooks"); Book book=(Book)books.get(0); //System.out.println(book.getName()); List users=(List) book.getUsers(); for (Iterator iterator = users.iterator(); iterator.hasNext();) { User user = (User) iterator.next(); System.out.println(user.getBook_oid()); System.out.println(user.getName()); System.out.println(user.getId()); } } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } }
发表评论
-
MyEclipse6.5配置Tomcat7.0
2014-11-26 10:26 779window>>Preferences>&g ... -
JSP 转换 mht java 代码
2013-11-22 10:31 1012import java.io.BufferedInputS ... -
JAVA实现FTP上传下载
2013-09-06 10:31 832import java.io.DataIn ... -
java的KVM在arm上的应用
2013-03-21 09:26 901http://wenku.baidu.com/view/162 ... -
JAVA在ARM的应用
2013-03-21 09:18 5706J2ME CDC(Connected Device Confi ... -
JAVA桌面截图
2013-03-20 15:07 753Robot robot = new Robo ... -
引用他人代码去掉前面行数
2013-03-19 11:01 837import java.io.*; public clas ... -
JAVA调用DLL文件
2012-11-25 16:02 9441 创建 TestDll.java public cla ... -
用java的反射清空对象属性的值
2012-10-25 16:09 7961@SuppressWarnings("unche ... -
用反射清空对象属性的的值
2012-10-25 16:06 0@SuppressWarnings("unche ... -
JMS实例,包括点对点和主题订阅
2012-07-11 10:58 2969三个Java文件: JMSTest.java ... -
Jmail收发邮件
2012-07-11 09:32 1068Jmail 接收邮件: import javax.mai ... -
MyEclipse6.0反编译插件jadclipse安装
2012-05-16 11:54 1002插件下载 反编译工具jad,地址:http://www.var ... -
MyEclipse6.0反编译插件jadclipse安装
2012-05-16 11:51 0插件下载 反编译工具ja ... -
把第一个对象中不为空的数据复制到第二个对象中
2012-04-09 10:31 1019/*** *实现两个实例对象之间的对拷, * ... -
velocity导出word模板
2012-02-29 13:11 1475public class VelocityExample { ... -
Jacob操作word
2012-02-29 13:02 1319package test; import com.jacob ... -
EJB3学习资料
2011-03-31 17:28 835http://wenku.baidu.com/view/6e2 ... -
Java和C#相互调用
2011-03-31 17:23 871http://developer.51cto.com/art/ ... -
java操作注册表方法
2011-02-23 16:57 836http://www.iteye.com/topic/8229 ...
相关推荐
在Ibatis中,多表查询是一项重要的功能,它允许我们处理复杂的数据库操作,例如一对多、多对一或一对一的关系。在这个例子中,我们将探讨如何使用Ibatis进行一对多的多表查询,以`book`和`user`两个表为例。 首先,...
当我们需要进行多表查询时,iBatis提供了一种高效且易于管理的方式。本文将深入探讨iBatis在处理多表查询时的具体步骤和技巧。 ### 1. iBatis简介 iBatis 是一个基于Java的持久层框架,它简化了数据库访问,并避免...
### iBatis 多表查询知识点详解 #### 一、iBatis简介 iBatis 是一款优秀的持久层框架,它将 SQL 映射到 Java 对象,简化了 JDBC 编程过程中的繁琐操作,提高了开发效率。iBatis 的核心功能包括 SQL 映射、动态 SQL...
本文将深入探讨如何在iBATIS中进行主子表查询,以及涉及到的相关技术如一对多关系、日志管理库log4j等。 首先,主子表查询是数据库设计中常见的场景,通常涉及到一个“父”表(主表)和一个或多个“子”表(从表)...
ibatis配置多表关联(一对一、一对多、多对多
### 操作数据库iBATIS查询详解 #### 一、iBATIS中的LIKE查询技巧 iBATIS是一款优秀的Java持久层框架,它简化了基于SQL的程序编写,避免了程序员手动处理结果集和手工编写SQL语句。在进行数据库查询时,LIKE查询是...
Source Database : ibatis_db Target Server Type : MYSQL Target Server Version : 50022 File Encoding : 65001 Date: 2013-05-02 22:49:28 */ SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- --...
iBatis多对多关系详解 iBatis是一种流行的持久层框架,用于简化Java应用程序...我们使用了三个数据库表来存储学生和教师之间的多对多关系,并使用iBatis来映射数据库表和Java对象。最后,我们实现了DAO来访问数据库。
首先,我们来看Mybatis或iBatis在XML配置文件中的多表映射。以学生、班级和班主任为例,学生与班级是一对多关系,班级与班主任是一对一关系。在`classInfo-mapper.xml`配置文件中,我们定义了三个`resultMap`:`...
综上所述,"spring+ibatis 多表"项目涉及了后端的Spring和iBatis框架,它们共同处理数据库交互,特别是涉及到多表关联查询的复杂操作。前端则利用jQuery进行交互设计,包括分页查询的实现。这样的组合提供了一种高效...
### ibatis多参数查询解析 #### 一、引言 在使用ibatis(现称为MyBatis)进行数据库操作时,经常会遇到需要处理多个输入参数的情况。然而,默认情况下ibatis只支持单个输入参数,这在实际开发中往往难以满足需求。...
ibatis动态多条件组合查询 实例 说明
本文将详细介绍如何使用iBatis进行连接查询。 首先,我们需要理解iBatis的工作原理。iBatis并不是像Hibernate那样完全自动管理数据库操作,而是将SQL语句的编写权交给开发者,这样可以更好地控制查询性能和复杂性。...
总结起来,这个Ibatis查询语句充分展示了Ibatis处理复杂查询的能力,包括动态SQL、子查询、多表联接、条件判断、数据类型映射和迭代处理等功能。在实际开发中,这种灵活性使得Ibatis能够适应各种复杂的业务场景,...
以上内容详细介绍了 ibatis 中动态查询的基本原理及具体实现方法,包括模糊查询、多条件组合查询以及使用 Map 作为参数的高级用法。这些知识点对于深入理解 ibatis 的动态查询机制非常重要,可以帮助开发者更高效地...
iBatis 动态查询条件详解 iBatis 是一个基于 Java 的持久层框架,它提供了动态查询条件的功能,可以根据不同的条件生成不同的 SQL 语句。在 iBatis 中,动态查询条件是通过 `<dynamic>` 元素来实现的,该元素可以...
例如,假设我们有一个部门表DEPARTMENTS,包含ID(主键)、PARENT_ID(父ID)和NAME(部门名称)字段,可以使用以下SQL语句进行树形查询: ```sql SELECT level, connect_by_root id AS root_id, id, name FROM ...
通过阅读博客全文,你可能会学习到更多关于如何有效地使用iBatis进行数据库操作和优化查询性能的知识。 综上所述,iBatis提供了一种简单、灵活的方式来处理数据库操作,特别是像模糊查询这样的复杂查询。通过将SQL...