iBatis-通过ID进行删除操作
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: 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);");
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");
sqlMapper.delete("deleteAccountById", 1);
util.checkData("select * from account");
}
}
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("");
}
}
}
分享到:
相关推荐
映射文件中的每个元素都对应一个数据库操作,并可以通过Java接口进行调用。这种设计使得SQL语句能够根据业务需求动态改变,而无需修改Java代码。 1. **SqlMapConfig.xml配置文件**:这是iBATIS的全局配置文件,用于...
- **插入、更新、删除操作** (`insert`, `update`, `delete`):定义对数据库表的操作。 - **动态 SQL**:支持条件判断等动态 SQL 构建。 - **参数处理**:允许传递参数到 SQL 语句中,并自动进行类型转换。 - **...
iBATIS SQL Maps的核心概念在于SQL映射文件,这些文件使用XML格式定义了数据库操作,如SQL查询、插入、更新和删除。SQL映射文件包含多个元素,如`<properties>`、`<setting>`、`<typeAlias>`等,这些元素帮助配置和...
Ibatis提供了一种灵活的方式来控制SQL的执行,同时保持了SQL与业务逻辑的分离,使得数据库操作更加简单、易维护。 Memcached则是一种高性能的分布式内存对象缓存系统,广泛应用于Web应用中,用于减少数据库负载,...
3. 缓存数据的操作:插入、更新和删除操作会影响缓存,因此在执行这些操作后,你需要清除对应缓存,以保证数据的一致性。可以通过`<update>`标签的`flushCache="true"`属性来实现。 4. 注意,虽然二级缓存可以提高...
创建与XML映射文件对应的Java接口,如`UserMapper.java`,接口中的方法名应与XML文件中的 `<select>`、`<insert>`、`<update>`、`<delete>` 标签的id属性一致,这样Ibatis才能自动进行方法匹配。 6. **SqlSession...
ibatis的灵活性使得开发者能够通过简单的XML或注解配置来实现对数据库的操作,这不仅提高了开发效率,同时也让代码更加简洁易懂。 #### 关键知识点 1. **ibatis的基本概念与特点** - **持久层框架**:ibatis属于...
Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责SQL映射,使得开发者能够将SQL语句与Java代码分离,从而更好地管理数据库操作。在Ibatis中,`sql-map`和`sql-map-config`是两个重要的XML配置文件,...
它涵盖了iBATIS的基本使用方法,包括插入、更新、删除和查询等操作。此外,文档还特别强调了如何通过iBATIS来调用存储过程,这是数据库操作中的一个重要特性,尤其是在处理复杂逻辑或批量操作时。 **iBATIS-SqlMaps...
总之,Ibatis提供的SQL映射功能使得开发者可以灵活地处理各种数据库操作,包括删除指定ID的单个对象。在实际开发中,结合Spring等框架,我们可以构建出高效、稳定的业务系统。理解并熟练掌握Ibatis的这些基本操作,...
`IBATISDAO`库类是基于IBATIS框架设计的一组用于简化数据库操作的类,它封装了与数据库交互的基本方法,让开发者能够更加高效地进行CRUD(创建、读取、更新、删除)操作。 **1. IBATIS框架基础** IBATIS的核心概念...
比如,创建一个`UserMapper.xml`,编写SQL查询、插入、更新和删除操作。每个SQL语句对应一个XML元素,如`select`、`insert`、`update`和`delete`。 4. **创建Mapper接口**:在Java源码目录下,创建一个名为`...
本篇文章将详细介绍Ibatis的简单操作,并结合实际的Java测试代码进行解析。 Ibatis是由Clinton Begin创建的开源项目,它并非是一个完整的ORM框架,而是一个SQL映射框架,主要负责SQL语句的编写与执行。Ibatis的主要...
Ibatis通过XML或注解方式定义和配置SQL映射,将Java对象和数据库记录进行映射,实现了数据的CRUD操作。 在实现CRUD操作时,Ibatis有以下核心组件: 1. SQL Map配置文件:这是Ibatis的核心,用于存放SQL语句及其...
这个入门例子通过一步步的指导,帮助初学者理解如何使用iBatis进行简单的数据库操作。通过学习和实践,你可以逐渐掌握更复杂的查询、动态SQL以及事务管理等高级特性,进一步提升你的Java开发能力。
本篇文章将详细讲解如何利用Ibatis实现数据的连接、增加、查询、删除和修改(CRUD)操作,以及.xml文件在SQL映射中的作用。 首先,Ibatis是一个轻量级的Java ORM(对象关系映射)框架,它的核心理念是将SQL语句与...
与Hibernate等其他ORM框架相比,ibatis更加轻量级,对于那些只需要简单CRUD(创建、读取、更新、删除)操作的应用来说非常合适。ibatis的核心组件是`SqlMapClient`,它类似于Hibernate中的Session,用于执行SQL语句...
通过这些文件,新手可以学习如何配置Ibatis,以及如何在Java代码中使用Ibatis进行数据操作,从而理解Ibatis的工作原理和使用方法。 总结起来,Ibatis作为一个轻量级的持久层框架,其简单易用的特性使其成为许多项目...