- 浏览: 1182203 次
- 性别:
- 来自: 成都
最新评论
-
see1di:
你的這個function只能支持IE
js格式化显示xml -
away5678:
强烈推荐你学习ibatis,易学,灵活,易查错,效率高,以上都 ...
ibatis的点点心得 -
liuwei8728:
恩 说的也有道理
ibatis没学过 hibernate ...
ibatis的点点心得
一:描述下:
使用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();
}
}
}
包自己导入吧~~~~~~~~
努力中~~~~~~~~~
转载的学习呀,望见谅呀
使用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();
}
}
}
包自己导入吧~~~~~~~~
努力中~~~~~~~~~
转载的学习呀,望见谅呀
发表评论
-
弥补ExtJs CheckboxSelectionModel不能级联的自定义控件
2012-04-07 09:58 1581由于 ExtJS 在做CheckboxSelectionMod ... -
linux 安装python,设置环境变量
2011-06-15 00:10 3660linux下python开发环境之一——安装python :h ... -
jad 反编译jar
2011-06-01 12:18 16291、解压到任意目录 2、确保安装了winrar 3、点击反编译 ... -
eclipse中TOMCAT配置
2011-05-24 21:23 82741.在servers中新建的SERVER上右击——属性的Gen ... -
JRebel 热插件使用手记
2011-05-19 20:24 43651.1 安装IDE-rebel插件 1. Ecl ... -
VC++ 添加外部库文件lib和dll的步骤
2011-04-13 00:17 11686总结 连接数据库的步骤过程: 1.将文件sqlapi.lib ... -
自定义Dao,反射实现
2011-04-11 09:55 978自定义dao实现 -
javascript获取指定时间函数
2011-03-16 14:03 1458function WeekDate() { ... -
没有找到mfc90ud.dll,因此这个应用程序未能启动 解决方案
2011-01-20 22:44 17061.没有找到mfc90ud.dll,因此这个应用程序未能启动. ... -
VS 与IE兼容性问题
2011-01-08 18:47 1312今天用VS08,对话框控件添加变量时候出错, 变量类型无法选择 ... -
IBM MQ 资料
2010-10-10 20:02 3997MQ介绍 消息队列技术是 ... -
java 获取操作系统收集
2010-09-07 00:37 984判断当前java程序是运行在windows平台还是运行在lin ... -
集群学习一
2010-09-01 00:40 1087一、高可用性集群系统 ... -
Apache 的11大贡献
2010-08-29 13:09 861据国外媒体报道,转眼 ... -
学习过程问题总结
2010-08-08 23:57 839starUML 启动报错:system error code: ... -
RCP 在同一个透视图中同时打开多个同一个view
2010-07-27 15:09 5697扩展 org.eclipse.ui.views 来创建 vie ... -
一些好的文章收集
2010-07-04 21:45 840ibatis dynamic sql 语句拼接:http:// ... -
webservice 部署服务的几种方式总结
2010-05-09 00:39 3495java 调用webservice的各种方法总结 现 ... -
groovy的点点滴滴01(转)
2010-05-07 00:53 826一、 groovy 是什么 简单地说, Groovy 是下 ... -
ibatis 模糊查询
2010-05-07 00:07 1241<!-- 在ibatis中使用安全的拼接语句,动态查询 ...
相关推荐
在Ibatis中,多表查询是一项重要的功能,它允许我们处理复杂的数据库操作,例如一对多、多对一或一对一的关系。在这个例子中,我们将探讨如何使用Ibatis进行一对多的多表查询,以`book`和`user`两个表为例。 首先,...
### 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...