`
starbhhc
  • 浏览: 660773 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

iBatis-在SQL里硬编码的例子

阅读更多
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开发文档

    通过深入学习这些文档,开发者可以熟练掌握iBATIS.NET,实现高效、灵活的数据访问,同时减少因为SQL语句硬编码在代码中而带来的维护难题。iBATIS的易用性和强大的功能使其成为.NET平台上的流行选择,对于任何处理...

    ibatis开发指南 ibatis教程

    8. **最佳实践**:了解如何有效地组织DAO层,避免硬编码SQL,提高代码可维护性。 通过深入学习这些资料,你将能熟练掌握iBATIS的使用,并将其应用到实际的项目开发中,提升数据访问层的开发效率和代码质量。同时,...

    .net中使用iBATIS的小例子

    这样可以避免硬编码SQL,提高代码的可读性和可维护性。 在.NET中使用iBATIS时,首先需要安装iBATIS.NET库。可以通过NuGet包管理器或者直接下载源码编译来获取。在VS2008项目中,添加对iBATIS.NET的引用,这样就可以...

    自己写的iBATIS的例子

    这在处理复杂的查询条件或者避免硬编码SQL时非常有用。例如,根据用户的不同权限动态生成查询条件。 4. **事务管理**:在账户密码管理中,事务管理至关重要,以确保数据的一致性和完整性。iBATIS支持JDBC的事务管理...

    struts2+ibatis+spring的小例子

    与传统的ORM框架不同,iBatis强调将SQL写在XML配置文件或注解中,避免了对SQL的硬编码,同时保持了SQL的高性能。在本例子中,iBatis将作为数据库操作的主要工具,通过SQL映射文件与Java对象进行交互。 Spring则是一...

    ibatis例子,很好的

    这种方式可以避免硬编码SQL,提高代码可维护性。 2. 动态SQL:Ibatis支持动态SQL,这意味着可以在SQL语句中使用条件判断,使得SQL更具灵活性和可扩展性。 3. 映射配置:Ibatis的映射配置包括了结果映射(Result ...

    Spring与iBATIS的集成

    这种方式可以避免硬编码,提高代码的灵活性。 2. **事务管理**:Spring提供的事务管理功能可以与iBATIS完美结合。通过Spring的声明式事务管理,可以在不改变业务逻辑代码的情况下实现事务控制。 3. **异常处理**...

    最简单的iBatis入门例子

    这样既避免了硬编码SQL,又实现了数据访问的解耦合。 在开始使用iBatis之前,你需要准备以下组件: 1. 添加iBatis的依赖库:在Maven或Gradle的构建文件中,引入iBatis的相关依赖,包括核心库和数据库驱动。 2. 创建...

    iBatis条件查询

    这种方式既避免了硬编码SQL,又保持了SQL的灵活性。 例如,对于一个简单的用户查询场景,我们可能有一个如下的XML配置: ```xml SELECT * FROM users WHERE name = #{name} AND age &gt; #{minAge} ``` 在Java...

    ibatis简单实例

    通过Mapper XML文件,SQL语句被封装,使得数据库操作更加直观,同时避免了硬编码SQL的风险。而通过SqlSession,我们可以方便地管理数据库连接和事务,使得代码更加简洁。总的来说,Ibatis提供了一个轻量级、灵活的...

    spring ibatis struts2搭建例子

    iBatis提供了动态SQL的功能,允许开发者在XML配置文件或注解中编写复杂的查询逻辑,而不必在DAO层硬编码SQL。 Struts2是基于Model-View-Controller(MVC)设计模式的Web应用框架,它继承了Struts1的优点并吸取了...

    struts2+spring+ibatis做的增删改查的小例子

    这个小例子可以帮助初学者理解三大框架之间的交互,例如如何在Struts2的Action中调用Spring管理的Service,Service如何通过iBatis执行SQL,以及如何通过Struts2将结果返回到前端。通过实践这样的案例,学习者可以...

    ibatis.net Demo

    - 避免硬编码SQL,尽量使用参数化查询以防止SQL注入攻击。 - 使用`TransactionScope`进行事务控制,确保数据一致性。 - 适当地使用缓存机制,提高系统性能。 - 对复杂查询,考虑使用存储过程,然后在`ibatis.net...

    iBatis教程ppt及实例源代码

    这种动态SQL功能让开发者能够避免硬编码,提高了代码的可读性和可维护性。 其次,iBatis提供了Mapper接口,这是一种更高级的编程方式。通过继承自定义的Mapper接口,你可以直接在Java代码中调用方法来执行SQL,而...

    iBatis入门例子

    此外,iBatis还支持动态SQL,可以避免大量硬编码的条件判断。例如,我们可以根据传入的参数动态构建WHERE子句: ```xml SELECT * FROM users WHERE name LIKE #{name} ``` 在使用过程中,还可以通过ResultMap来...

    IbatisDemo03

    动态SQL是IbatisNet的一个重要特性,它允许我们在运行时根据特定条件构建SQL查询,从而避免了硬编码大量条件判断的麻烦。动态SQL使得代码更加灵活,易于维护,同时也提高了程序的可读性和可扩展性。 在"IbatisDemo...

    JSF2 + WELD 1.0 + ibatis 例子(个人日志系统)

    3. **依赖注入(DI)**:WELD 1.0实现了CDI 1.0,使得对象可以通过注解(@Inject)进行依赖注入,减少了硬编码和单例模式的使用。 4. **CDI上下文**:WELD管理不同的上下文,如请求上下文、会话上下文和应用上下文,...

    ibatis 学习教程

    例如,你可以使用`if`、`choose`、`when`、`otherwise`等元素实现条件拼接,避免硬编码复杂的SQL语句。 总的来说,iBatis的优势在于它的灵活性和简洁性。开发者可以自由地编写SQL,同时享受到ORM带来的便利。尽管它...

    基于struts+spring+ibatis的 J2EE 开发.rar

    iBatis将SQL语句写在配置文件中,避免了将数据库操作硬编码到Java代码中,从而实现了数据访问层(DAO)与业务逻辑层的分离。它可以方便地与各种数据库进行交互,提供了灵活的数据映射机制。 结合这三个框架,开发者...

    在idea8上用DWR+ibatis+Ext +mysql 开发的小程序

    使用`&lt;if&gt;`标签进行条件判断,可以动态地根据对象的属性是否为空决定SQL语句中的字段是否插入,这是一种灵活的SQL构造方式,减少了硬编码。 总的来说,这个小程序利用DWR实现实时的前后端通信,iBatis作为持久层...

Global site tag (gtag.js) - Google Analytics