File: Account.java
public class Account {
private int id;
private String firstName;
private String lastName;
private String emailAddress;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmailAddress() {
return emailAddress;
}
public void setEmailAddress(String emailAddress) {
this.emailAddress = emailAddress;
}
}
File: Account.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="Account">
<!-- Use type aliases to avoid typing the full classname every time. -->
<typeAlias alias="Account" type="Account"/>
<!-- Result maps describe the mapping between the columns returned
from a query, and the class properties. A result map isn't
necessary if the columns (or aliases) match to the properties
exactly. -->
<resultMap id="AccountResult" class="Account">
<result property="id" column="ACC_ID"/>
<result property="firstName" column="ACC_FIRST_NAME"/>
<result property="lastName" column="ACC_LAST_NAME"/>
<result property="emailAddress" column="ACC_EMAIL"/>
</resultMap>
<!-- Select with no parameters using the result map for Account class. -->
<select id="selectAllAccounts" resultMap="AccountResult">
select * from ACCOUNT
</select>
<!-- A simpler select example without the result map. Note the
aliases to match the properties of the target result class. -->
<select id="selectAccountById" parameterClass="int" resultClass="Account">
select
ACC_ID as id,
ACC_FIRST_NAME as firstName,
ACC_LAST_NAME as lastName,
ACC_EMAIL as emailAddress
from ACCOUNT
where ACC_ID = #id#
</select>
<!-- Insert example, using the Account parameter class -->
<insert id="insertAccount" parameterClass="Account">
insert into ACCOUNT (
ACC_ID,
ACC_FIRST_NAME,
ACC_LAST_NAME,
ACC_EMAIL
)values (
#id#, #firstName#, #lastName#, #emailAddress#
)
</insert>
<!-- Update example, using the Account parameter class -->
<update id="updateAccount" parameterClass="Account">
update ACCOUNT set
ACC_FIRST_NAME = #firstName#,
ACC_LAST_NAME = #lastName#,
ACC_EMAIL = #emailAddress#
where
ACC_ID = #id#
</update>
<!-- Delete example, using an integer as the parameter class -->
<delete id="deleteAccountById" parameterClass="int">
delete from ACCOUNT where ACC_ID = #id#
</delete>
</sqlMap>
File: 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>
<!-- Configure a built-in transaction manager. If you're using an
app server, you probably want to use its transaction manager
and a managed datasource -->
<transactionManager type="JDBC" commitRequired="false">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="org.hsqldb.jdbcDriver"/>
<property name="JDBC.ConnectionURL" value="jdbc:hsqldb:data/tutorial"/>
<property name="JDBC.Username" value="sa"/>
<property name="JDBC.Password" value=""/>
</dataSource>
</transactionManager>
<!-- List the SQL Map XML files. They can be loaded from the
classpath, as they are here (com.domain.data...) -->
<sqlMap resource="Account.xml"/>
<!-- List more here...
<sqlMap resource="com/mydomain/data/Order.xml"/>
<sqlMap resource="com/mydomain/data/Documents.xml"/>
-->
</sqlMapConfig>
File: Main.java
import com.ibatis.sqlmap.client.SqlMapClient;
public class Main{
public static void main(String[] a) throws Exception{
Util util = new Util();
util.executeSQLCommand("create table ACCOUNT(ACC_ID int, ACC_FIRST_NAME varchar,ACC_LAST_NAME varchar,ACC_EMAIL varchar);");
SqlMapClient sqlMapper = util.getSqlMapClient();
Account account = new Account();
account.setId(1);
account.setEmailAddress("e");
account.setFirstName("first");
account.setLastName("last");
sqlMapper.insert("insertAccount", account);
util.checkData("select * from account");
Account acc = (Account) sqlMapper.queryForObject("selectAccountById", 1);
System.out.println(acc.getFirstName());
}
}
File: Util.java
import java.io.Reader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
public class Util {
Statement st;
public Util() throws Exception{
// Load the JDBC driver.
Class.forName("org.hsqldb.jdbcDriver");
System.out.println("Driver Loaded.");
// Establish the connection to the database.
String url = "jdbc:hsqldb:data/tutorial";
Connection conn = DriverManager.getConnection(url, "sa", "");
System.out.println("Got Connection.");
st = conn.createStatement();
}
public SqlMapClient getSqlMapClient() throws Exception{
Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");
SqlMapClient sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader);
reader.close();
return sqlMapper;
}
public void executeSQLCommand(String sql) throws Exception {
st.executeUpdate(sql);
}
public void checkData(String sql) throws Exception {
ResultSet rs = st.executeQuery(sql);
ResultSetMetaData metadata = rs.getMetaData();
for (int i = 0; i < metadata.getColumnCount(); i++) {
System.out.print("\t"+ metadata.getColumnLabel(i + 1));
}
System.out.println("\n----------------------------------");
while (rs.next()) {
for (int i = 0; i < metadata.getColumnCount(); i++) {
Object value = rs.getObject(i + 1);
if (value == null) {
System.out.print("\t ");
} else {
System.out.print("\t"+value.toString().trim());
}
}
System.out.println("");
}
}
}
分享到:
相关推荐
在这个“使用的iBatis简单例子”中,我们将深入探讨如何配置和使用iBatis进行数据库交互。 首先,iBatis的核心组件包括XML配置文件、SQL映射文件以及SqlSessionFactory。XML配置文件用于定义数据源、事务管理器等...
本书详细介绍了iBATIS这一流行开源框架的核心概念、工作原理以及在实际项目中的应用技巧,是iBATIS学习者和使用者不可或缺的参考资料。 ### IBATIS哲学 iBATIS的哲学强调简洁性与灵活性,它旨在提供一个轻量级的...
iBatis.Net提供了灵活的数据访问层解决方案,它允许开发者手动编写SQL语句以获得更好的性能,同时通过映射文件减少了重复代码。通过集成日志记录框架和使用其API,可以简化事务管理和其他高级特性。无论是对于初学者...
- **iBATIS v2**:使用`SqlMapClientBuilder`构建`SqlMapClient`对象。 - **iBATIS v3**:通过`SqlSessionFactory`创建`SqlSession`对象。 这种变化使得iBATIS v3在对象管理上更加简洁高效。 - **执行方法:**...
它主要用于简化JDBC编程,提供一种“半自动化”的ORM(对象关系映射)实现,与Hibernate等“一站式”ORM解决方案相比,iBATIS强调的是SQL的灵活性和可控性。 在理论体系中,iBATIS的核心价值在于SQL Maps。SQL Maps...
在业务代码中,通过SqlSession调用这个方法,即可得到查询结果并转换为User对象。 总结,iBatis以其简单易用、灵活高效的特点,成为Java持久层框架的热门选择。通过对ibatis-2.3.0.677.jar的深入了解,开发者可以更...
总的来说,Ibatis的DTD文件是其核心配置语言的基石,它定义了所有可用的标签和它们的属性,是理解并有效使用Ibatis的关键。通过深入研究这两个DTD文件,开发者可以更全面地掌握Ibatis的配置语法,从而在实际项目中...
- **性能敏感的应用**:在某些高性能要求的应用场景下,ibatis的高效性得到了很好的体现。 通过上述知识点的介绍,我们可以看到ibatis作为一款经典的开源插件,在数据库操作方面具有独特的优势,尤其是在那些需要...
- 当开发团队仅能获得有限的SQL查询权限或存储过程时,iBatis可以通过直接映射这些查询结果到Java对象,从而避免了ORM工具可能存在的兼容性问题。 ##### 3.2 存储过程使用 - 在某些行业或项目规范中,为了保证安全...
3. 使用iBatis的SqlSession执行查询,得到XML结果,然后使用jDom解析这个XML。jDom的DocumentBuilder类可以用来构建DOM树,Element类代表XML的元素节点,可以通过getElementsByTagName等方法找到特定的节点。 4. ...
iBatis,作为一款轻量级的Java持久层框架,以其灵活、高效的特点,在许多项目中得到了广泛应用。本文将针对iBatis 2.3.0.677版本的源码进行深入剖析,旨在帮助开发者更好地理解和运用这一强大的数据访问工具。 首先...
尽管IBatis.Net的官方开发在一定程度上已经停滞,但其强大的功能和灵活性仍然使其在许多项目中得到应用。标题提到的"IBatis.Net for .NET Framework 4.0"是指一个特别适配.NET Framework 4.0及更高版本的版本,确保...
3.1 获得一份iBATIS发布 45 3.1.1 二进制发布 45 3.1.2 从源代码构建 45 3.2 发布中包含的内容 47 3.3 依赖性 48 3.3.1 针对延迟加载的字节码增强 48 3.3.2 Jakarta Commons数据库连接池 49 3.3.3 分布式高速缓存 49...
在这个"最新的ibatis 3.0(包含源码)"压缩包中,我们得到了Ibatis 3.0版本的核心库文件`ibatis-core-3.0`,这个版本是官方发布的,但需要注意的是,它与Spring 3.0.1存在兼容性问题。 Ibatis 3.0的主要改进和特性...
Ibatis-2.3.0.677是Ibatis的一个较早版本,它提供了一种不同于传统的Hibernate等ORM(对象关系映射)框架的解决方案。Ibatis的核心思想是SQL Map,它允许开发者直接编写SQL语句,然后将这些SQL语句与Java代码集成,...
本文将深入解析ibatis的核心概念、配置流程及开发要点,帮助读者在两天内迅速掌握ibatis的使用技巧,为项目开发注入强大的数据处理能力。 ### ibatis的核心概念 ibatis是一种半自动化的ORM框架,它允许开发者直接...
iBATIS,作为Java开发中的一个著名持久层框架,由Clinton Begin在2001年创建,其名称融合了“Internet”和“Abatis”,起初是致力于密码软件的开发,随着时间的发展,它逐渐演变为专注于数据库操作的工具,并在开源...
***是iBATIS框架在.NET环境下的实现,它为开发人员在使用.NET进行应用程序开发时提供了一种便捷的方式来操作数据库。iBATIS原本是Java领域中用于简化数据库访问的一个流行框架,后来移植到了.NET平台,为C#开发者...
然而,在设计数据库和对象模型时,仍建议遵循最佳实践以获得更好的性能和更清晰的设计。 - **开始设计**:设计通常从分析应用的业务逻辑入手,明确业务对象、数据模型及其之间的关系。例如,本教程中使用了一个简单...
**MyBatis** 是IBatis的后续项目,它在Java平台上获得了广泛的应用,并且也推出了.NET版本。MyBatis相比IBatis,提供了更现代的API,支持注解,以及更丰富的映射和配置选项,是未来升级和转型的方向。 总结来说,...