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="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 id="getByLike" 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_EMAIL like '%$value$%'
</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: 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 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", "e");
System.out.println(((Account)list.get(0)).getLastName());
}
}
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.NET,实现高效、灵活的数据访问,同时减少因为SQL语句硬编码在代码中而带来的维护难题。iBATIS的易用性和强大的功能使其成为.NET平台上的流行选择,对于任何处理...
8. **最佳实践**:了解如何有效地组织DAO层,避免硬编码SQL,提高代码可维护性。 通过深入学习这些资料,你将能熟练掌握iBATIS的使用,并将其应用到实际的项目开发中,提升数据访问层的开发效率和代码质量。同时,...
这样可以避免硬编码SQL,提高代码的可读性和可维护性。 在.NET中使用iBATIS时,首先需要安装iBATIS.NET库。可以通过NuGet包管理器或者直接下载源码编译来获取。在VS2008项目中,添加对iBATIS.NET的引用,这样就可以...
这在处理复杂的查询条件或者避免硬编码SQL时非常有用。例如,根据用户的不同权限动态生成查询条件。 4. **事务管理**:在账户密码管理中,事务管理至关重要,以确保数据的一致性和完整性。iBATIS支持JDBC的事务管理...
与传统的ORM框架不同,iBatis强调将SQL写在XML配置文件或注解中,避免了对SQL的硬编码,同时保持了SQL的高性能。在本例子中,iBatis将作为数据库操作的主要工具,通过SQL映射文件与Java对象进行交互。 Spring则是一...
这种方式可以避免硬编码SQL,提高代码可维护性。 2. 动态SQL:Ibatis支持动态SQL,这意味着可以在SQL语句中使用条件判断,使得SQL更具灵活性和可扩展性。 3. 映射配置:Ibatis的映射配置包括了结果映射(Result ...
这种方式可以避免硬编码,提高代码的灵活性。 2. **事务管理**:Spring提供的事务管理功能可以与iBATIS完美结合。通过Spring的声明式事务管理,可以在不改变业务逻辑代码的情况下实现事务控制。 3. **异常处理**...
这样既避免了硬编码SQL,又实现了数据访问的解耦合。 在开始使用iBatis之前,你需要准备以下组件: 1. 添加iBatis的依赖库:在Maven或Gradle的构建文件中,引入iBatis的相关依赖,包括核心库和数据库驱动。 2. 创建...
这种方式既避免了硬编码SQL,又保持了SQL的灵活性。 例如,对于一个简单的用户查询场景,我们可能有一个如下的XML配置: ```xml SELECT * FROM users WHERE name = #{name} AND age > #{minAge} ``` 在Java...
通过Mapper XML文件,SQL语句被封装,使得数据库操作更加直观,同时避免了硬编码SQL的风险。而通过SqlSession,我们可以方便地管理数据库连接和事务,使得代码更加简洁。总的来说,Ibatis提供了一个轻量级、灵活的...
iBatis提供了动态SQL的功能,允许开发者在XML配置文件或注解中编写复杂的查询逻辑,而不必在DAO层硬编码SQL。 Struts2是基于Model-View-Controller(MVC)设计模式的Web应用框架,它继承了Struts1的优点并吸取了...
这个小例子可以帮助初学者理解三大框架之间的交互,例如如何在Struts2的Action中调用Spring管理的Service,Service如何通过iBatis执行SQL,以及如何通过Struts2将结果返回到前端。通过实践这样的案例,学习者可以...
- 避免硬编码SQL,尽量使用参数化查询以防止SQL注入攻击。 - 使用`TransactionScope`进行事务控制,确保数据一致性。 - 适当地使用缓存机制,提高系统性能。 - 对复杂查询,考虑使用存储过程,然后在`ibatis.net...
这种动态SQL功能让开发者能够避免硬编码,提高了代码的可读性和可维护性。 其次,iBatis提供了Mapper接口,这是一种更高级的编程方式。通过继承自定义的Mapper接口,你可以直接在Java代码中调用方法来执行SQL,而...
此外,iBatis还支持动态SQL,可以避免大量硬编码的条件判断。例如,我们可以根据传入的参数动态构建WHERE子句: ```xml SELECT * FROM users WHERE name LIKE #{name} ``` 在使用过程中,还可以通过ResultMap来...
动态SQL是IbatisNet的一个重要特性,它允许我们在运行时根据特定条件构建SQL查询,从而避免了硬编码大量条件判断的麻烦。动态SQL使得代码更加灵活,易于维护,同时也提高了程序的可读性和可扩展性。 在"IbatisDemo...
3. **依赖注入(DI)**:WELD 1.0实现了CDI 1.0,使得对象可以通过注解(@Inject)进行依赖注入,减少了硬编码和单例模式的使用。 4. **CDI上下文**:WELD管理不同的上下文,如请求上下文、会话上下文和应用上下文,...
例如,你可以使用`if`、`choose`、`when`、`otherwise`等元素实现条件拼接,避免硬编码复杂的SQL语句。 总的来说,iBatis的优势在于它的灵活性和简洁性。开发者可以自由地编写SQL,同时享受到ORM带来的便利。尽管它...
iBatis将SQL语句写在配置文件中,避免了将数据库操作硬编码到Java代码中,从而实现了数据访问层(DAO)与业务逻辑层的分离。它可以方便地与各种数据库进行交互,提供了灵活的数据映射机制。 结合这三个框架,开发者...
使用`<if>`标签进行条件判断,可以动态地根据对象的属性是否为空决定SQL语句中的字段是否插入,这是一种灵活的SQL构造方式,减少了硬编码。 总的来说,这个小程序利用DWR实现实时的前后端通信,iBatis作为持久层...