iBATIS step by step (1)

转载 2004年07月16日 13:35:00
今天抽空写了step by step的 step 1,首先用了一个最简单的例子来说明iBATIS的灵活与方便.

  一些说明,

  1.例子使用eclipse进行开发,所以附件的包里有eclipse的.classpath和.project文件,为了简单清晰,我尽量简化了相关的配置

  2.附件带有所有需要的jar并在win2k+jdk1.4.2和fedora core 1 + jdk1.4.2上测试通过

  下面正式开始....

  首先建立一个简单的bean:Account
 

 private int id;
 private String firstName;
 private String lastName;
 private String emailAddress;
        ...
        getters & setters

  
  然后写一个xml文件,就是sql mapping的配置了,比如叫Account.xml

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

<!DOCTYPE sql-map
    PUBLIC "-//iBATIS.com//DTD SQL Map 1.0//EN"
    "http://www.ibatis.com/dtd/sql-map.dtd";>

<sql-map name="Account">
  <!--随便写了几个例子-->
<mapped-statement name="getAccountByName" result-class="man.argan.ibatis.domain.Account">
    select
      ACC_ID as id,
      ACC_FIRST_NAME as firstName,
      ACC_LAST_NAME as lastName,
      ACC_EMAIL as emailAddress
    from ACCOUNT
    where ACC_FIRST_NAME like #value# 
        OR ACC_LAST_NAME like #value#
  </mapped-statement>
....
</sql-map>


这样我们需要的和业务相关的 配置就这么多了,在程序里面,我们就可以进行使用了

 Account account = null;
   account = new Account();
   account = (Account) sqlMap.executeQueryForObject(
     "getAccountIdAndName", new Integer(1), account);
   println("getAccountIdAndName/t-->Account: " + account);
   account = (Account) sqlMap.executeQueryForObject("getAccountEmail",
     new Integer(4));
   println("getAccountEmail/t-->Account: " + account);
   List list = sqlMap.executeQueryForList("getAccountByName", "%阿%");
   println("getAccountByName/t-->list: " + list);
  
  当然,我们还需要一些关于数据库的配置,比较简单:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sql-map-config
    PUBLIC "-//iBATIS.com//DTD SQL Map Config 1.0//EN"
    "http://www.ibatis.com/dtd/sql-map-config.dtd";>

<sql-map-config>

  <properties resource="man/argan/ibatis/sqlmap/maps/SqlMapConfig.properties" />

  <datasource name="basic" default = "true"
              factory-class="com.ibatis.db.sqlmap.datasource.SimpleDataSourceFactory">
    <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>

  <sql-map resource="man/argan/ibatis/sqlmap/maps/Account.xml" />

</sql-map-config>

这个配置文件其实是相当于sql map的一个总控配置,我们读取配置的入口就在这里了,iBATIS提供了非常方便的读取方式:

public class SqlMapConfig {
 protected static final SqlMap sqlMap;
 static {
  try {
   // -- 取得配置信息
   Reader reader = Resources
     .getResourceAsReader("man/argan/ibatis/sqlmap/maps/SqlMapConfig.xml");
   // 从配置信息里构造出SQL Map
   sqlMap = XmlSqlMapBuilder.buildSqlMap(reader);
  } catch (Exception e) {
   // 如果读取配置信息出错,无法处理,只好抛出
   throw new NestedRuntimeException("初始化sql map config 错误:" + e, e);
  }
 }
 public static SqlMap getSqlMap() {
  return sqlMap;
 }
}

  基本上,我们需要做的就这些了,做好这些工作之后,我们就可以写一个方法来进行测试了,这时候,你可以试试改变一下配置文件里的sql语句,再运行一下,可以轻松体验一下iBATIS的强大与灵活了.
  点
这里下载全部程序.


 

iBATIS step by step 2

这一节里,使用了一个实际的例子来说明dynamic-mapped-statement 和 insert 的简单使用.   系统发布后一段时间,对系统留下的一些log,特别是所执行的sql语句进行分析,...
  • JasonSeaver
  • JasonSeaver
  • 2004年07月16日 13:37
  • 874

Safe Alert Request Error step 的解决办法

dedecms功能很强大,但总有些东西无法满足我们自己的需求,这就需要我们在设计模板时使用这个标记来编写程序,也总免不了要查询、更新、修改数据库。但是不是欣喜的编写完程序后运行程序系统却提示你Safe...
  • jodan179
  • jodan179
  • 2012年09月26日 16:59
  • 10032

【Caffe细致入微】Solver_Step

void Solver::Step(int iters) 简单的说,这个函数就是核心的优化方法,不断通过前向和反向传播来更新参数的过程。 【重要变量】 int average_loss...
  • u012816621
  • u012816621
  • 2016年12月30日 11:47
  • 2329

Web_PHP_DedeCMS_织梦DedeCMS出现Safe Alert: Request Error step 1 ! 或Safe Alert: Request Error step 2!解决方法

这是由于新版中使用SQL语句防注入功能引起的安全警告,在自定义模模型中使用下面名称 union|sleep|benchmark|load_file|outfile之一都会引起Safe Alert...
  • u011168154
  • u011168154
  • 2014年12月09日 11:23
  • 608

OpenCV Python calcOpticalFlowFarneback

import cv2 def draw_flow(im,flow,step=16): h,w = im.shape[:2] y,x = mgrid[step/2:h:step,step...
  • u014657795
  • u014657795
  • 2017年12月10日 12:52
  • 155

DEDE CMS安全警告:Safe Alert: Request Error step 2!

我的解决是取消部分安装模块   Safe Alert: Request Error step 2! DEDE CMS安全警告:Safe Alert: Request Error step 2...
  • yxwmzouzou
  • yxwmzouzou
  • 2015年01月24日 17:40
  • 4896

css3关于 animation -timing- function step()介绍

最近在学习遇到了这个问题,有点不懂,所以在网上寻找此笔记,以备学习之用! CSS3的Animation有八个属性animation-name animation-duration animati...
  • qq_35568483
  • qq_35568483
  • 2016年09月09日 21:31
  • 2485

Intellij IDEA调试功能使用总结(step over / step into / force step into/step out等)

Intellij IDEA调试功能使用总结(step over / step into / force step into/step out等)
  • theusProme
  • theusProme
  • 2016年11月03日 00:37
  • 3903

step into/step out/step over的区别

step into就是单步执行,遇到子函数就进入并且继续单步执行; step over是在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完再停止,也就是把子函...
  • Bristy_pu
  • Bristy_pu
  • 2013年01月16日 10:07
  • 1725

单步调试 step into/step out/step over 区别

step into:单步执行,遇到子函数就进入并且继续单步执行(简而言之,进入子函数);step over:在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完再停止,也...
  • huangfei711
  • huangfei711
  • 2016年04月22日 15:08
  • 16531
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iBATIS step by step (1)
举报原因:
原因补充:

(最多只允许输入30个字)