| iBATIS , 又是一个O/R Mapping的解决方案(例如 hibernate的ORM 也是解决方案之一.) 网上很多人便将其称为ORM , 但是用过的人, 应该都会觉得并不恰当. 与其称之为一个OR Mapping , 倒不如叫它SQL Mapping... iBATIS 的特点是小巧, 简单. 但是要求需要熟悉SQL , 不像hibernate那样, 可以让你一句sql 都不用写 同时, 我觉得要写挺多的配置文件的. 可能会比较繁琐. Java代码
public class User { private int id; private String username; private String userpwd; private String userdesc; //Sets and Gets...} 接下来... 马上看看... dao里面的一个方法有多简单~~ UserDao.java Java代码
public static List getAllUsers() throws SQLException { SqlMapClient sqlMap = Utils.getSqlmap(); try { List li = sqlMap.queryForList("getAllUsers"); } catch (SQLException e) { e.printStackTrace(); } return li;} 是的, dao里面的一个方法只需要这么几句话. 看看怎么实现的吧... 首先, 我们需要一个跟 User 类对应的 配置文件 User.xml(名字相同并不是硬性规定, 只是方便管理) 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="User"> <typeAlias alias="user" type="pojo.User"/> <select id="getAllUsers" resultClass="user"> select * from user order by id; </select></sqlMap> 接下来, 需要一个另一个配置文件, 将User.xml 加入 其中, 同时还要在里面配置数据源---- 即数据库的连接等等... SqlMapConfig.xml 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> <properties resource="sqlmap.properties"/> <transactionManager type="JDBC"> <dataSource type="SIMPLE"> <property name="JDBC.Driver" value="${jdbc.driverClassName}" /> <property name="JDBC.ConnectionURL" value="${jdbc.url}" /> <property name="JDBC.Username" value="${jdbc.username}" /> <property name="JDBC.Password" value="${jdbc.password}" /> </dataSource> </transactionManager> <sqlMap resource="sql/User.xml" /></sqlMapConfig> 在这里, 我们把数据库的相关参数保存在了另一个文件中, sqlmap.properties Java代码
jdbc.driverClassName=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/myblogjdbc.username=rootjdbc.password=netjava 这样做的好处, 相信大家也明白.. 下次我们再写一个项目的时候, 只需要把这个文件copy 过去, 改掉其中的数据库连接就ok啦 , 也算是资源的充分利用吧.. 至此, 所有的配置文件 都已经上场, 当然上面写的都是最简单的测试, 看起来比较没有那么繁琐, 实际应用时候, 可能最麻烦的地方就是在 配置文件的 sqlmap 的编写... 前面 UserDao.java 的方法中, 有这么一句 Java代码
SqlMapClient sqlMap = Utils.getSqlmap(); Utils 类 就是我们抽取其中的初始化的代码, 单独写成一个类, 当然还是方便重用哈.同时采用的是单实例模式, 相当环保. Utils.java Java代码
public class Utils{ private static SqlMapClient sqlMapper; public static synchronized SqlMapClient getSqlmap() { if(sqlMapper==null) { try { Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml"); sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader); reader.close(); } catch (IOException e) { e.printStackTrace(); } } return sqlMapper; } } 好了, 所有的相关文件都已经上场.. 当然, 加上 iBATIS的 jar包是前提 , 还是提醒下, 要注意版本问题... 项目的结构如下图所示: ![]() 最后, 整理一下思路吧! ![]() UserDao 是怎样操作数据库的??? 首先 , Utils 通过SqlMapConfig.xml里面的配置, 连接到数据库, 取得SqlMap , 同时User.xml 将Sql查询映射成java中可以调用的bean, 通过SqlMap 调用这些bean 就是在执行想对应的sql语句... |
本文转自www.35java.com



浙公网安备 33010602011771号