first sight of ibatis

iBATIS SQL Maps

         今天从头到尾的把 Ibatis 配置了一遍,就写一写一些体会!

         Ibatis 就是把底层的 JDBC 的封装,提供了更为方便的方法来访问数据库!它建立了 bean 对象与 sql 语句的一个映射,或者说一个 sql 语句成了一个对象,所以他也叫 SqlMap !对于这些 sql 语句也变得更强大灵活了,因为他里面添加了变量,动态元素!在 Java 的原始 JDBC 中,有个 prepared statement ,他就是对这个的扩展!后面来看看具体的一个配置!

        

配置 XML

<? xml version = "1.0" encoding = "UTF-8" standalone = "no" ?>

<! DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd" >

< sqlMapConfig >

    < properties resource = "connect.properties" />

    < settings cacheModelsEnabled = "true" enhancementEnabled = "true" lazyLoadingEnabled = "true"

    maxRequests = "3000" maxSessions = "3000" maxTransactions = "3000" useStatementNamespaces = "true" />

    < transactionManager type = "JDBC" >

       < dataSource type = "SIMPLE" >

           < property name = "JDBC.Driver" value = "${driver}" />

           < property name = "JDBC.ConnectionURL" value = "${url}" />

           < property name = "JDBC.Username" value = "${username}" />

           < property name = "JDBC.Password" value = "${password}" />

       </ dataSource >

    </ transactionManager >

    < sqlMap resource = "baseOperation.xml" />

</ sqlMapConfig >

属性文件:

driver= com.mysql.jdbc.Driver

url= jdbc : mysql://localhost:3306/mysql

username= root

password= gyang

sqlmap 定义:

    <? 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 = "BASE_OPERATION" >

    < select id = "getAllRecords" resultClass = "java.util.HashMap" >

       select *

       from test

    </ select >

</ sqlMap >

说明:

         根节点: sqlMapConfig ;其下有子节点: properties settings typeAlias transactionManager sqlMap

         Properties :属性 resource 指定这个属性文件的路径,这个属性文件里面定义了一些“变量”(我的理解是变量),然后可以在后续文件 ${valueNamel} 使用这些变量;(像不像定义环境变量?)

         Settings :设置一些全局的设定,期间的一些属性我也不清楚,待后研究!

         TransactionManager :对具体的数据源的链接的设置!

         SqlMap :这里仅仅是引用一个文件!注意这里是核心内容,在那个文件中就是 bean sql 定义语句的映射关系!

 

< sqlMap namespace = "BASE_OPERATION" >

    < select id = "getAllRecords" resultClass = "java.util.HashMap" >

       select *

       from test

    </ select >

</ sqlMap >

这里定义了一个名为 getAllRecords bean ,他就代表这个 sql 语句!这个语句很简单,在这个语句中也没有体现 sqlMap 的很多属性!实际上这里的语句可以很复杂!

         这就是一个映射!现在来看看在 Java 源代码中如何使用它!

import java.io.IOException;

import java.io.Reader;

import java.sql.SQLException;

import java.util.HashMap;

import java.util.List;

import com.ibatis.common.resources.Resources; 

import com.ibatis.sqlmap.client.SqlMapClient;

import com.ibatis.sqlmap.client.SqlMapClientBuilder;

public class TestSqlMapApp {

    public static void main(String[] args) throws IOException, SQLException {

                 String str= "sqlMapConfigure.xml" ;

        Reader reader=Resources.getResourceAsReader (str);

        SqlMapClient sqlMapClient=SqlMapClientBuilder.buildSqlMapClient (reader);

        List<HashMap > ls=(List<HashMap>)sqlMapClient.queryForList(

"BASE_OPERATION.getAllRecords" ) ;

        for (HashMap m : ls){

            System. out .println(m);

        }

    }

}

 

所用到的 jar 包: ibatis-sqlmap-2.3.4.726.jar, mysql-connector-java-5.1.13-bin.jar

当时在这里遇到一个问题,开始 ibatis-sqlmap.jar 过低导致出了个莫名奇妙的错误,折腾了一个下午,后面换了就 OK !郁闷之极!

 

(List<HashMap>)sqlMapClient.queryForList(

"BASE_OPERATION.getAllRecords" ) ; 在这里的调用就进行了一次数据库的访问,他会返回一个结果集,是一个 HashMap List

    这些就是今天配置所涉及的内容了!

其实在实际写后台代码时遇到了很多问题,这些后续在写!

    Ibatis 有兴趣的推荐看下面的参考!

   

参考: Ibatis 官网的 iBATIS SQL Maps 开发指南

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值