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">
<typeAlias alias="Account" type="Account"/>
<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>
<cacheModel id="categoryCache" type="LRU">
<flushInterval hours="24"/>
<property name="size" value="100"/>
</cacheModel>
<select id="getByLike" resultClass="Account" parameterClass="Account" cacheModel="categoryCache">
select ACC_ID as id,
ACC_FIRST_NAME as firstName,
ACC_LAST_NAME as lastName,
ACC_EMAIL as emailAddress
from ACCOUNT
where ACC_EMAIL = #emailAddress# and ACC_LAST_NAME = #lastName#
</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>
</sqlMap>
File: Main.java
import java.util.List;
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);");
util.executeSQLCommand("create table Message(Message_ID int, content 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");
List list = sqlMapper.queryForList("getByLike", account);
System.out.println(((Account)list.get(0)).getLastName());
}
}
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: 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("");
}
}
}
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;
}
}
分享到:
相关推荐
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd"> <sqlMap namespace="Account"> <typeAlias alias="Account" type="Account"/> ...
通过SqlMapConfig,开发者可以全局配置Ibatis的行为,如数据库连接信息、SQL语句的缓存策略等。 2. **TypeHandler**:TypeHandler是Ibatis处理Java类型和数据库类型之间转换的关键接口。每个数据库字段类型都可能...
总之,iBATIS缓存是提升系统效率的关键技术之一,理解其工作机制并恰当运用,对于构建高效、稳定的应用至关重要。通过"ibatis-缓存使用示例"的学习,开发者能更好地掌握这一技巧,从而在实际项目中发挥出更大的价值...
4. **事务管理**:Ibatis支持手动和自动两种事务管理模式,可以根据业务需求灵活控制事务的边界。 5. **缓存机制**:内置了本地缓存和二级缓存机制,可以有效提升数据读取速度,降低数据库负载。 6. **插件支持**...
8. 支持多种数据库:Ibatis并不依赖特定的数据库,它提供了适配器模式,支持Oracle、MySQL、PostgreSQL等多种数据库。 总结起来,`ibatis-2.3.2.715.jar`作为Ibatis框架的一个版本,具备了完善的数据库操作功能,...
iBatis提供了一级缓存(SqlSession级别)和二级缓存(Mapper级别),可以提高数据读取速度,减少数据库压力。 8. **异常处理** iBatis的异常体系主要由SqlException和DataAccessException组成,方便捕获和处理...
- **缓存机制**:介绍iBATIS中的缓存机制,包括一级缓存和二级缓存的区别及使用方法。 - **调优技巧**:提供一系列性能优化建议,如合理使用缓存、优化SQL语句等。 #### 3.2 数据访问对象 - **DAO模式**:阐述DAO...
Hibernate3版本包含了实体管理、会话管理、缓存机制、查询语言HQL等特性,极大地简化了数据库操作,提高了开发效率。 3. **Struts.jar**:这是Struts 1框架的库,一个基于MVC(Model-View-Controller)设计模式的...
Read/Write**:读取模式和读写模式下的缓存行为。 - **Serializable Read/Write Caches**:支持序列化的读写缓存。 - **Cache Types**:不同类型的缓存机制,如LRU缓存、FIFO缓存等。 - **Dynamic Mapped ...
### iBATIS Data Access Objects (DAO):一种强大的持久层抽象技术 在深入探讨iBATIS Data Access Objects(DAO)的细节之前,我们先来理解一下这个概念的重要性以及它如何改变Java应用程序的开发方式。 #### 引言...
7. **缓存机制**:了解 iBATIS 的缓存模型,以及如何使用缓存提高数据访问性能。 8. **DAO设计模式**:学习如何结合iBATIS构建数据访问对象,以实现与业务逻辑的松耦合。 9. **案例分析**:可能包含实际的项目案例...
标题 "ibatis--dao的应用" 暗示...总结起来,"ibatis--dao的应用"主要涉及iBatis框架的使用,包括其核心组件、DAO模式的实现、SQL映射以及事务、缓存等特性。掌握这些知识点,可以有效地进行Java应用程序的数据库操作。
- `<settings>`:允许调整iBATIS的行为,例如设置缓存策略、日志级别等。 - `<resultObjectFactory>`:指定结果对象工厂类,用于创建查询结果的对象实例。 - `<typeAlias>`:为复杂类型提供别名,简化XML中的类型...
6. **事务管理**:iBATIS支持手动和自动两种事务管理模式,可以根据应用场景选择合适的事务边界,确保数据的一致性。 7. **缓存机制**:iBATIS提供了一级和二级缓存,可以提高数据访问速度,减少对数据库的压力。...
3. 缓存机制:iBatis内置了本地缓存和二级缓存,有助于减少对数据库的访问频率,提升系统性能。 总结,iBatis 2.3.5以其简洁的设计和强大的功能,在Java世界中占据了一席之地。通过深入学习其源码,不仅可以提升对...
4. **Executor**:执行器接口,负责SQL语句的真正执行,它根据不同的策略实现如简单执行、批处理执行、缓存等不同模式。 5. **ParameterHandler**:参数处理器,将Java对象的参数转换为SQL语句所需的参数值。 6. *...
### iBATIS缓存的使用方法 在数据库访问框架iBATIS中,缓存机制是一项重要的功能,它能够显著提高应用程序的性能。本文将详细介绍iBATIS中的缓存使用方法,包括缓存模型的配置、不同类型的缓存控制器以及如何在SQL...
在IT领域,尤其是在Java开发中,iBATIS与DAO(Data Access Object)模式的结合为开发者提供了一种高效、灵活且可扩展的数据访问方案。本文将深入探讨iBATIS实现DAO的相关知识点,包括其背景、原理、优势以及具体实现...
**3.4 设置高速缓存模式实现的特性** 不同的缓存模式具有不同的特性,如只读、序列化等。 **3.5 常见问题** - **3.5.1 如何选择iBATIS高速缓存模型类型** - 选择合适的缓存类型需根据具体的应用场景和需求。 - *...