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">
<typeAlias alias="Account" type="Account"/>
<resultMap id="myResult" class="AccountResult">
<result property="id" column="ACC_ID"/>
<result property="firstName" column="ACC_FIRST_NAME"/>
</resultMap>
<select id="getByLike" resultClass="AccountResult" parameterClass="Account">
select ACC_ID as id,
ACC_FIRST_NAME as firstName
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: AccountResult.java
public class AccountResult {
private int id;
private String firstName;
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;
}
}
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(((AccountResult)list.get(0)).getFirstName());
}
}
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"/>
</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("");
}
}
}
分享到:
相关推荐
4. Result Maps:定义了查询结果如何映射到Java对象,包括字段与属性的对应关系,以及复杂的关联映射。 四、主要功能 1. 动态SQL:Ibatis-SqlMap支持在XML映射文件中编写动态SQL,使得SQL生成更加灵活。 2. 缓存...
3. 结果映射:`<resultMap>`元素是iBatis中非常关键的部分,它定义了如何将数据库查询结果映射到Java对象。例如,可以使用`<id>`, `<result>`, `<association>`和`<collection>`等子元素来指定主键、普通字段、关联...
1. **SQL Maps**: iBATIS 的核心是 SQL Maps,它们是 XML 文件,用于定义 SQL 查询和结果映射。开发者可以在这些文件中编写动态 SQL,使得 SQL 语句可以根据传入的参数灵活变化。 2. **Data Mapper API**: 这是 ...
- **Result Maps**:定义结果集映射规则,用于将查询结果转换为 Java 对象。 #### 动态 SQL 支持 iBATIS 支持动态 SQL,即根据运行时的条件动态构建 SQL 语句。这包括: - **二进制条件元素**:例如 `<if>` 和 `...
在XML描述文件中,SQL Maps定义了Java Bean、Map实现以及基本数据类型的包装类如何与数据库中的表和记录对应。这些映射文件通常包含SQL查询、存储过程以及事务管理等元素,使得开发者无需编写大量JDBC代码就能完成...
- **Result Maps**:定义了如何将数据库查询结果映射到Java对象的规则。 - **Implicit Result Maps**:隐式的结果映射,适用于简单的情况。 - **Primitive Results**:处理基本数据类型的查询结果。 - **Complex ...
5. Result Maps:Result Maps定义了如何将数据库查询结果映射到Java对象,包括处理一对一、一对多、多对多的关系。 6. Parameter Maps:Parameter Maps负责将Java对象的属性值绑定到SQL语句的参数,支持预编译参数...
- **探索映射的 SQL 语句**:iBATIS 通过在 XML 配置文件中定义 SQL 语句的方式来进行 SQL 映射,这些 SQL 语句可以通过 `SqlSession` 执行。 ```java List<User> users = sqlSession.selectList("namespace....
- iBATIS 支持通过 XML 配置文件来定义 SQL 语句及其结果映射。 - **选择查询** (`select`):定义如何从数据库中查询数据。 - **插入、更新、删除操作** (`insert`, `update`, `delete`):定义对数据库表的操作。 ...
- **id**, **result**:定义列到属性的基本映射。 - **association**:用于处理一对多关系。 - **collection**:用于处理多对多关系。 - **discriminator**:用于判断不同类型的子结果集。 #### 七、缓存机制 ...
2. 映射缓存:在具体的SQL映射语句(如`<select>`, `<insert>`, `<update>`, `<delete>`)中,通过`@CacheResult`或`@CacheEvict`注解来声明哪些操作需要缓存,哪些操作会导致缓存失效。 3. 使用缓存:在Java代码中...
7. **src**:源代码目录,可能包含了 Ibatis 框架的核心类和接口,可供学习和参考。 8. **doc**:文档目录,包含官方的开发指南和入门教程,是学习 Ibatis 必不可少的资料。 9. **lib**:库文件夹,可能包含了 ...
4. **结果映射(Result Maps)**:Ibatis提供了结果映射机制,可以将查询结果自动映射到Java对象。在XML映射文件中定义ResultMap元素,指定列名与Java字段的对应关系,以及处理复杂关联关系的方法。 5. **参数映射...
3. **参数映射**:Ibatis通过`@Param`注解和`@Results`、`@Result`注解处理输入参数和输出结果,实现Java对象与数据库字段之间的映射。在2.3版本中,还可以使用`<parameterMap>`和`<resultMap>`标签进行配置。 4. *...
SqlMap是iBatis的核心配置文件,用于定义数据库交互的各种操作。以下是关于iBatis_SqlMap配置的一些关键知识点: 1. **命名空间(Namespace)**: 命名空间是SqlMap配置中的一个重要概念,用于区分不同的SqlMap...
在application-context.xml文件中配置SqlMapClient,需要使用org.springframework.orm.ibatis.SqlMapClientFactoryBean类。这个类中import了多个包,包括com.ibatis.common.xml.NodeletException、...
通过以上步骤,我们成功地使用IBatis实现了基本的CRUD操作,包括创建数据库表、配置数据库连接、定义SQL映射规则等。IBatis的优势在于其灵活性和对SQL的直接控制能力,这使得开发者能够更高效地处理复杂的数据访问...
- SQL Map:SQL Map是iBatis的主要配置文件,其中包含了SQL查询、存储过程和其他数据库交互的定义。 - Mapper:Mapper接口是Java代码中与SQL Map对应的接口,通过MyBatis的注解或XML配置文件将SQL与接口方法绑定。...
- 创建 Service 接口和实现类,如 UserService 和 UserServiceImpl,定义业务逻辑方法。 - 在 Service 实现类中,通过 SqlSession 执行 Mapper 方法。 7. **DAO 层封装**: - 可选地,可以创建 DAO 接口和实现类...
- **其他工具类**:classes12.jar、ognl-2.6.11.jar ##### 3. 编写实体Bean 实体Bean是ibatis与数据库交互的核心对象,用于封装数据。例如,这里定义了`Student`、`User`和`Page`三个实体Bean。 - **Student.java...