ibatis作为半自动的ORM实现,上手简单,易于学习。现将一个简单的demo展示如下:
ibatis主要有两种配置文件:配置文件和映射文件。
配置文件主要有以下内容:sqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<transactionManager type="JDBC">
<dataSource type="SIMPLE">
<property name="JDBC.Driver"
value="oracle.jdbc.driver.OracleDriver" />
<property name="JDBC.ConnectionURL"
value="jdbc:oracle:thin:@localhost:1521:orcl" />
<property name="JDBC.Username" value="madeyu" />
<property name="JDBC.Password" value="madeyu" />
</dataSource>
</transactionManager>
<sqlMap resource="com/yzj/sqlmap/bookInfo-Mapping.xml" />
</sqlMapConfig>
映射文件主要有以下几种情况:增删改查 bookInfo-Mapping.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-2.dtd">
<sqlMap>
<select id="FIND_BY_BOOK_ID" resultClass="java.util.HashMap"
parameterClass="java.util.HashMap">
SELECT BOOK_NAME FROM BOOK_INFO WHERE BOOK_ID=#BOOK_ID#
</select>
<insert id="SAVE_BOOK_INFO" parameterClass="java.util.HashMap">
INSERT INTO BOOK_INFO
(ID,BOOK_ID,BOOK_NAME,BOOK_TEXT,BOOK_PRESS,BOOK_DATE,PRICE,STATE,OPERATE_DATE)
VALUES
(#ID#,#BOOK_ID#,#BOOK_NAME#,#BOOK_TEXT#,#BOOK_PRESS#,
#BOOK_DATE#,#PRICE#,#STATE#,#OPERATE_DATE#)
</insert>
<update id="UPDATE_BY_BOOK_ID" parameterClass="java.util.HashMap">
UPDATE BOOK_INFO SET STATE=#STATE# WHERE BOOK_ID=#BOOK_ID#
</update>
<delete id="DELETE_BY_BOOK_ID" parameterClass="java.util.HashMap">
DELETE FROM BOOK_INFO WHERE BOOK_ID=#BOOK_ID#
</delete>
</sqlMap>
配置完ibatis的这两种文件之后,加入ibatis的开发包,例如:ibatis-2.3.0.677.jar。
继续编写ibatis的公共访问文件,代码如下:BaseDao.java
package com.yzj.dao;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
public class BaseDao {
protected static SqlMapClient sqlMapClient;
static {
try {
if (sqlMapClient == null) {
sqlMapClient = SqlMapClientBuilder
.buildSqlMapClient(Resources
.getResourceAsReader("com/yzj/sqlmap/sqlMapConfig.xml"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
通过sqlMapClient对象就可以访问数据资源了。例子如下:BookInfoDao.java
package com.yzj.dao;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
public class BookInfoDao extends BaseDao {
public static void main(String[] args) throws Exception {
Map<String, Object> map = new HashMap<String, Object>();
map.put("ID", createUuidKey());
map.put("BOOK_ID", "10002");
map.put("BOOK_NAME", "西游记");
map.put("BOOK_TEXT", "西天取经的故事");
map.put("BOOK_PRESS", "50");
map.put("BOOK_DATE", "20130808");
map.put("PRICE", "30");
map.put("STATE", "1");
map.put("OPERATE_DATE", "20130909");
sqlMapClient.insert("SAVE_BOOK_INFO", map);
Map<String, Object> mapBookId = new HashMap<String, Object>();
mapBookId.put("BOOK_ID", "10002");
List<Map<String, Object>> list = sqlMapClient.queryForList(
"FIND_BY_BOOK_ID", mapBookId);
System.out.println(list.get(0).get("BOOK_NAME"));
}
public static String createUuidKey() {
UUID uuid = UUID.randomUUID();
return uuid.toString().replace("-", "");
}
}
到此,一个简单的demo就完成了,运行程序时不要忘了要导入数据库的jar包,并且在数据库中要先完成数据表的创建。