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");
}
}
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("");
}
}
}
分享到:
相关推荐
10. **实战案例**:通过实际项目中的例子,如用户管理、订单处理等,深入体验iBATIS在实际开发中的应用。 11. **源码分析**:对于进阶读者,可以进一步研究iBATIS的源码,了解其实现原理,有助于更深入地理解框架。...
- **核心理念**:iBATIS的核心理念是提供一种轻量级的数据访问框架,使得开发者能够更高效地与数据库进行交互。它主张将SQL语句与Java代码分离,简化开发过程中的数据访问逻辑。 - **适用场景**:适用于那些希望保持...
本工程以“银行账号转账”为例子演示了 如何处理Ibatis结合MySQL数据库使用时的事务操作 本工程编码方式:UTF-8 须执行的SQL语句: CREATE DATABASE `test`; USE `test`; CREATE TABLE `lm_bank_card` ( `id` ...
在IT行业中,数据库操作是应用程序开发中的重要环节,而Ibatis作为一款轻量级的Java持久层框架,为开发者提供了方便的数据访问接口。本篇将深入探讨如何在Ibatis中实现批量插入数据的DAO(Data Access Object)实例...
第二个例子会教你如何通过Ibatis向数据库添加新数据。这通常涉及到`insert`标签的使用,你需要定义一个插入记录的SQL语句,并提供相应的Java方法来执行。 第三个例子则涉及删除数据,这将使用`delete`标签,同样...
这个入门例子通过一步步的指导,帮助初学者理解如何使用iBatis进行简单的数据库操作。通过学习和实践,你可以逐渐掌握更复杂的查询、动态SQL以及事务管理等高级特性,进一步提升你的Java开发能力。
3. **映射机制**:通过XML配置或者注解,Ibatis可以将数据库的查询结果映射到Java对象,实现数据对象与数据库表之间的转换。 4. **事务管理**:Ibatis支持Spring等容器的事务管理,也可以独立进行事务控制。 5. **...
这个入门小例子将带你逐步了解如何使用Ibatis进行数据库操作。 首先,Ibatis 的核心组件包括SqlMapConfig.xml配置文件、映射文件(如:UserMapper.xml)以及对应的Mapper接口(如:UserMapper.java)。SqlMapConfig...
在Java Web开发中,iBatis(现在称为MyBatis)是一个流行的持久层框架,它提供了灵活的SQL映射机制,使得数据库操作更加便捷。在iBatis中,`<iterate>`标签是一个非常实用的功能,它允许我们处理集合数据,如数组、...
总结起来,通过Apache POI读取Excel数据和MyBatis插入数据库的流程如下: 1. 引入Apache POI和MyBatis相关依赖。 2. 使用POI读取Excel文件,获取数据并转换为目标对象。 3. 创建MyBatis的Mapper接口,定义插入数据的...
在这个例子中,有两个操作:一个`select`元素用于根据`id`获取`Student`对象,另一个`insert`元素用于插入新的`Student`记录。`resultClass`属性指定了返回对象的类,`parameterClass`属性则指定了参数的类型。 在...
**Ibatis简介** Ibatis,一个优秀的开源Java持久层框架,由Clinton Begin创建,最初是作为MyBatis的前身...通过实践这两个小例子,可以深入理解Ibatis如何将数据库操作与业务逻辑解耦,以及如何方便地处理数据库交互。
通过这个例子,你可以了解到iBatis的基本用法,包括插入、查询、更新和删除数据。 `ibatis 延迟加载、对多关系、缓存的测试.mht`涉及到iBatis的高级特性。延迟加载(Lazy Loading)是iBatis的一种优化策略,只在...
**iBatis** 是一个持久层框架,它简化了Java与数据库的交互,通过XML或注解方式配置SQL语句,将SQL与Java代码分离。在整合中,iBatis作为数据访问层,处理与数据库的CRUD操作。 在"Struts2+Spring+iBatis整合的小...
本小例子将帮助你理解并实践如何使用Ibatis进行数据库的增、删、改、查(CRUD)操作。 首先,我们需要在项目中引入Ibatis的相关依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml <groupId>...
Ibatis,全名MyBatis,是一个优秀的Java持久层框架,它主要负责处理SQL与Java对象之间的映射,简化了数据库操作。Ibatis的核心概念包括动态SQL、映射文件、SqlSession以及Mapper接口等,这些元素共同构建了一个灵活...
这个"ibatis小例子Demo"是为了帮助初学者快速理解和掌握Ibatis的核心功能和基本用法。 Ibatis的主要特点包括: 1. **XML配置文件**:Ibatis通过XML配置文件来定义SQL语句、参数映射和结果映射,使得SQL与Java代码...
【标题】:“ibatis的一个小例子...开发者可以通过调用这些接口方法来执行查询、插入、更新和删除等数据库操作。同时,`.classpath`和`.project`文件揭示了项目是如何组织和构建的,这对于理解和复现这个例子至关重要。