习惯了Hibernate 一到公司,居然是Hibernate和Ibatis都在用..
没办法,开始学了...从最简单的一对一关系的映射开始(奉劝初学JavaEE的朋友,不要太依赖MyEclipse,我的教训啊..)
Ibatis 是一种java的持久层框架,映射文件的配置是基于Sql语句的,虽然配置比Hibernate复杂,但是会更灵活一些,效率也会高
1.创建实体类,跟Hibernate是一样的,相互做一对一的成员对象
public class User {
private int userid;
private String username;
private String password;
private UserInfo info;
}
public class UserInfo {
private int userinfoid;
private String email;
private String qq;
private User user;
private int userid;
}
记得添加setter 和 getter
2.创建Ibatis的配置文件
之前还要引入Ibatis的jar包 这里采用的是2.3.4版本的,3.0以上的跟2.x的区别很大
配置文件的DTD
<!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//E "http://www.ibatis.com/dtd/sql-map-config-2.dtd">
一个简单的配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig
PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<!-- 常用属性的配置 -->
<settings cacheModelsEnabled="true" enhancementEnabled="true"
lazyLoadingEnabled="true" maxRequests="32" maxSessions="10"
maxTransactions="5" useStatementNamespaces="false" />
<transactionManager type="JDBC">
<!-- 配置数据源 -->
<dataSource type="SIMPLE">
<!-- 驱动的设置 -->
<property name="JDBC.Driver" value="com.mysql.jdbc.Driver" />
<!-- 数据库url的设置 -->
<property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost:3306/test" />
<!-- 数据库用户名的设置 -->
<property name="JDBC.Username" value="root" />
<!-- 数据库密码的设置 -->
<property name="JDBC.Password" value="" />
</dataSource>
</transactionManager>
<!-- 映射文件的列表 -->
<sqlMap resource="jpo/ibatis/test/o2o/user.sqlmap.xml" />
</sqlMapConfig>
映射文件的配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap
PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-2.dtd">
<sqlMap namespace="test">
<!--为两个类设置映射文件-->
<typeAlias alias="user" type="jpo.ibatis.test.o2o.User" />
<typeAlias alias="userinfo" type="jpo.ibatis.test.o2o.UserInfo" />
<!--针对结果集的结果映射-->
<resultMap id="iuser" class="user">
<result property="userid" column="userid" />
<result property="username" column="username" />
<result property="password" column="password" />
<!--得到User的时候,希望Ibatis为我同时取得UserInfo对象,并设置好 -->
<result property="info" column="userid" select="getUserInfoByUserId" />
</resultMap>
<resultMap id="iuserinfo" class="userinfo">
<result property="userinfoid" column="userinfoid" />
<result property="userid" column="userid" />
<result property="email" column="email" />
<result property="qq" column="qq" />
</resultMap>
<!--一个查询,也可以是insert update 只需设置好对应的sql语句即可-->
<select id="getUserInfoByUserId" parameterClass="int" resultMap="iuserinfo">
select * from
userinfo
where userid=#userid#
</select>
<select id="getUserByUserId" parameterClass="int" resultMap="iuser">
select * from
user
where userid=#userid#
</select>
</sqlMap>
测试类:
public static void main(String[] args) throws SQLException {
Reader reader = null;
try {
reader = new InputStreamReader(new FileInputStream("src/jpo/ibatis/test/o2o/ibatis-config.xml"));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
SqlMapClient client = SqlMapClientBuilder.buildSqlMapClient(reader);
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
User user = (User) client.queryForObject("getUserByUserId", 1);
System.out.println(user.getUsername());
UserInfo info = user.getInfo();
System.out.println(info.getEmail());
System.out.println("done...");
}
这是一个ibatis的HelloWorld程序
分享到:
相关推荐
ibatis配置多表关联(一对一、一对多、多对多
本篇将深入讲解iBATIS一对一映射的概念、配置及应用,帮助你更好地理解和运用这个功能。 一对一映射在数据库设计中是指两个表之间存在一对一的关系,例如,一个员工可能只有一个部门,一个部门也只对应一个员工。在...
在IT领域,特别是Java开发中,iBatis是一个非常受欢迎的...以上是关于iBatis一对多关联映射的实战介绍,希望对您在开发过程中有所帮助。更多关于iBatis的高级用法和最佳实践,可以通过文章链接中的资源进行深入学习。
本文将深入探讨如何在iBATIS中实现一对多和多对多的关系映射,并提供相关的源码分析和工具使用技巧。 **一对多关系映射** 在数据库设计中,一对多关系是指一个父记录可以与多个子记录关联,例如,一个用户可以有多...
在SQL查询中,可以使用嵌套选择(`<select>`标签)或者联合主键(`<join>`标签)来关联一对一的表。 2. **一对多关系**:在一个实体类中,可能存在与多个其他实体类的关系,如一个用户有多个订单。同样,使用`...
`CollectionHandler` 类则专门负责处理一对多和一对一的集合映射。 在实际应用中,我们还可以通过动态SQL来灵活控制一对多的加载,例如延迟加载(lazy loading)或按需加载。`<if>` 和 `<choose>` 等标签可以用来...
首先,我们需要在映射文件中定义主表(一对一端)和从表(多对一端)的映射。假设我们有一个`User`类对应`users`表,一个`Order`类对应`orders`表,其中`orders`表有一个`user_id`字段作为外键关联到`users`表。 在...
在IT行业中,Ibatis是一个非常流行的轻量级持久层框架,尤其在Java开发中被广泛应用。这个名为“ibatis实现的学生信息管理示例”的项目,旨在帮助初学者理解并掌握如何利用Ibatis来处理数据库操作,如CRUD(创建、...
本文将深入探讨如何利用Ibatis实现一对多关系、批处理、事务管理和与Spring及Struts2的集成。 首先,让我们来看一下“一对多”关系。在数据库设计中,一对多关系很常见,比如一个用户可以有多个订单。在Ibatis中,...
在本文档中,我们将详细介绍iBatis在处理多对多关系时的配置和实现。 多对多关系 多对多关系是一种常见的关系数据库设计模式,用于描述两个实体之间的多对多关系。在本例中,我们将使用学生(Student)和教师...
`association`用于表示一对一关系,这里是班级与班主任的关联,通过`teacherId`字段引用`resultTeacherInfo`。而`collection`则用于表示一对多关系,即班级与学生的关联,通过`classId`字段引用`resultStudentInfo`...
- `applicationContext.xml`是Spring的主配置文件,它定义了Spring容器中的bean,包括对Struts、Ibatis等其他框架的配置,实现各组件间的依赖注入。 - `codelist.xml`则可能包含了全局共享的bean,如`...
在处理两个有关系的表时,Ibatis提供了多种策略,如一对一、一对多、多对一、多对多等映射关系。 1. **一对一映射**:当两个表之间存在一对一关系时,例如用户表和用户详细信息表,一个用户对应一条详细信息。在...
在Ibatis中,你可以使用`<association>`标签来处理一对多或多对一的关系,或者使用`<collection>`处理多对多关系。以下是一个简单的例子,展示如何查询用户及其关联的订单: ```xml SELECT u.*, o.* FROM User ...
Ibatis提供了多种方式来实现映射,如自动类型匹配、自定义类型处理器、复杂关联映射等。 7. **缓存机制**:Ibatis内置了本地缓存和二级缓存,可以提高数据读取速度。本地缓存作用于单个SqlSession,而二级缓存则...
ibatis支持多种ORM映射策略,包括一对多关联和一对一关联。这些关联可以使用嵌套查询或嵌套结果的方式实现,允许开发者在多个表之间建立复杂的关系。此外,ibatis还支持延迟加载,即只有在真正需要时才加载关联对象...
3. `ibatis配置多表关联(一对一、一对多、多对多).htm` - 这个文件涵盖了多种关联映射,包括一对一、一对多和多对多,可能是全面的关联配置教程。 4. `ibatis多对多映射.htm` - 又一份多对多映射的详细说明。 5. `...
iBatis支持复杂的数据关联,包括一对多、一对一关联。通过`collection`和`association`元素,你可以轻松地处理嵌套的结果集。 #### 一对多关联 在XML映射文件中,定义一个`collection`元素来表示一对多关系,例如:...
一对多关联可以通过collection元素实现,一对一关联则通过resultMap元素配合association元素完成。延迟加载(Lazy Loading)是一种优化策略,当对象属性被访问时,才去数据库查询相关联的数据,以提高性能。动态映射...