iBATIS系统学习笔记一

来源:互联网 发布:linux tftp使用 编辑:程序博客网 时间:2024/05/05 14:41

该笔记是通过学习《iBATIS In Action》和《iBATIS实战》归纳而来。

iBATIS系统学习笔记一


相关链接:
学习笔记零 - 起源
学习笔记二 - 基础配置
学习笔记三 - 高级技巧与进阶
学习笔记四 - 技巧与实践


  • iBATIS系统学习笔记一
  • 1 iBATIS的SQL映射
  • 2 iBATIS的代码执行
  • 3 简单的例子
    • 31 数据库的创建
      • 32 代码的书写
      • 33 iBATIS的配置
    • 34 添加iBATIS依赖包
    • 35 尝试运行
  • 4 iBATIS的未来方向
    • 41 iBATIS已经加入了Apache软件基金会
    • 42 更简单更小且依赖性更小
    • 43 更多的扩展点与插件
    • 44 支持更多的平台和语言
  • 5 小结

2.1 iBATIS的SQL映射

一下是xml的映射:

<select id="getAddress" parameterClass="int" resultClass="Address">SELECT    ADR_ID as id,    ADR_DESCRIPTION as description,    ADR_STREET      as street,    ADR_CITY        as city,    ADR_PROVINCE    as province,    ADR_POSTAL_CODE as postalCodeFROM ADDRESSWHERE ADR_ID = #id#</select>

sql映射的输入输出关系:
iBATIS映射

2.2 iBATIS的代码执行:

java:

Address address = (Address) sqlMap.queryForObject("getAddress",new Integer(5));

2.3 简单的例子

这里来尝试一个简单的iBATIS的例子:

2.3.1 数据库的创建

## Table structure for table 'user'#CREATE TABLE USER_ACCOUNT (USERID INT(3) NOT NULL AUTO_INCREMENT,USERNAME VARCHAR(10) NOT NULL,PASSSWORD VARCHAR(30) NOT NULL,GROUPNAME VARCHAR(10),PRIMARY KEY (USERID));## Data for table 'user'#INSERT INTO USER_ACCOUNT (USERNAME, PASSSWORD, GROUPNAME)VALUES ('LMEADORS', 'PICKLE', 'EMPLOYEE');INSERT INTO USER_ACCOUNT (USERNAME, PASSSWORD, GROUPNAME)VALUES ('JDOE', 'TEST', 'EMPLOYEE');COMMIT;

2.3.2 代码的书写

import com.ibatis.sqlmap.client.*;import com.ibatis.common.resources.Resources;import java.io.Reader;import java.util.List;public class Main {    public static void main(String arg[]) throws Exception {        String resource = "SqlMapConfig.xml";        Reader reader = Resources.getResourceAsReader (resource);        SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);        List list = sqlMap.queryForList("getAllUsers", "EMPLOYEE");        System.out.println("Selected " + list.size() + " records.");        for(int i = 0; i < list.size(); i++)             System.out.println(list.get(i));    }}

2.3.3 iBATIS的配置

iBATIS链接数据库的配置文件:

<?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>    <transactionManager type="JDBC" >        <dataSource type="SIMPLE">        <property name="JDBC.Driver" value="com.mysql.jdbc.Driver"/>        <property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost/test"/>        <property name="JDBC.Username" value="root"/>        <property name="JDBC.Password" value="blah"/>        </dataSource>    </transactionManager>    <sqlMap resource="SqlMap.xml" /></sqlMapConfig>

SQL映射:

<?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>    <select id="getAllUsers" parameterClass="string"            resultClass="hashmap">        SELECT * FROM USER_ACCOUNT WHERE GROUPNAME = #groupName#    </select></sqlMap>

2.3.4 添加iBATIS依赖包

我使用了maven工具,添加以下代码:

        <dependency>            <groupId>org.apache.ibatis</groupId>            <artifactId>ibatis-sqlmap</artifactId>            <version>2.3.4.726</version>        </dependency>        <dependency>            <groupId>com.ibatis</groupId>            <artifactId>ibatis2-common</artifactId>            <version>2.1.7.597</version>        </dependency>

如果依赖中没有jdbc的依赖包,那需要添加。

2.3.5 尝试运行

运行main后结果:

Selected 2 records.{PASSSWORD=PICKLE, USERNAME=LMEADORS, GROUPNAME=EMPLOYEE, USERID=1}{PASSSWORD=TEST, USERNAME=JDOE, GROUPNAME=EMPLOYEE, USERID=2}

2.4 iBATIS的未来方向

由于该文章已经过去了很多年,iBATIS甚至已经改名为MyBATIS,许多概念已不适用,故简单归纳。

2.4.1 iBATIS已经加入了Apache软件基金会

2.4.2 更简单、更小且依赖性更小

iBATIS是个目标非常集中的项目,所以期望能更小、更简单、更少的依赖第三方库。
这些将在MyBATIS学习中得到体现

2.4.3 更多的扩展点与插件

2.4.4 支持更多的平台和语言

2.5 小结

  • iBATIS是一个独特的数据映射器,使用SQL映射而不是完全的O/RM映射。
  • iBATIS的代码简单清晰明了,相对于JDBC更容易编写。

iBATIS的有点:

  • 简单性
  • 生产效率
  • 性能
  • 关注点分离
  • 分工明确
  • 可移植性
0 0
原创粉丝点击