ibatis基础应用

 

之所以把这个放在最前面... 是因为这两天参考网上文章, 还有文档教程时, 由于忽略版本问题, 吃了不少亏. 

之前, iBATIS的官网一直进不去, 都是到网上乱找的文档.下载来参考, 或者是看别人的博客. 照着敲代码练习, 

一边敲着, 就一边郁闷着...  怎么照上面打的...  还是报错呢... 

都是版本惹的祸... 还有自己瞎眼没有认真看...  才白白浪费了 一个晚上+一个上午 的时间查错...

同时也对iBATIS表示汗颜... 怎么第一版. 第二版. 还有新出的第三版, 里面语法格式差这么多呢???

 

OK, 正题>>>

 

概念:

 

iBATIS , 又是一个O/R Mapping的解决方案(例如 hibernate的ORM 也是解决方案之一.)

网上很多人便将其称为ORM , 但是用过的人, 应该都会觉得并不恰当.

与其称之为一个OR Mapping , 倒不如叫它SQL Mapping...

 

iBATIS 的特点是小巧, 简单. 但是要求需要熟悉SQL , 不像hibernate那样, 可以让你一句sql 都不用写

同时, 我觉得要写挺多的配置文件的. 可能会比较繁琐.

 

sample

 

还是拿最简单的 User 类来测试. User.java

 

  1. public   class  User {  
  2.   
  3.     private   int  id;  
  4.     private  String username;  
  5.     private  String userpwd;  
  6.     private  String userdesc;  
  7.   
  8.         //Sets and Gets...   
  9. }  
 

 

接下来... 马上看看... dao里面的一个方法有多简单~~ UserDao.java

 

 

  1. public   static  List getAllUsers()  throws  SQLException {  
  2.                   
  3.                SqlMapClient sqlMap = Utils.getSqlmap();  
  4.         try  {  
  5.             List li = sqlMap.queryForList("getAllUsers" );  
  6.               
  7.         } catch  (SQLException e) {  
  8.                 e.printStackTrace();  
  9.         }  
  10.         return  li;  
  11. }  
 

 

 

是的, dao里面的一个方法只需要这么几句话. 

看看怎么实现的吧...

 

首先, 我们需要一个跟 User 类对应的 配置文件 User.xml (名字相同并不是硬性规定, 只是方便管理)


            
  1. <? xml   version = "1.0"   encoding = "UTF-8"   ?>  
  2.    <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" 
  3.   "http://ibatis.apache.org/dtd/sql-map-2.dtd">   
  4. < sqlMap   namespace = "User" >   
  5.   
  6.         < typeAlias   alias = "user"   type = "pojo.User" />   
  7.   
  8.     < select   id = "getAllUsers"   resultClass = "user" >   
  9.         select * from user order by id;   
  10.     </ select >   
  11.   
  12. </ sqlMap >   

 

接下来, 需要一个另一个配置文件, 将User.xml 加入 其中, 同时还要在里面配置数据源---- 即数据库的连接等等...   SqlMapConfig.xml 

 

  1. <? xml   version = "1.0"   encoding = "UTF-8" ?>   
  2.   
  3. <!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"  
  4.     "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">   
  5.   
  6. < sqlMapConfig >   
  7.       
  8.     < properties   resource = "sqlmap.properties" />   
  9.           
  10.     < transactionManager   type = "JDBC" >   
  11.         < dataSource   type = "SIMPLE" >       
  12.             < property   name = "JDBC.Driver"   value = "${jdbc.driverClassName}"   />   
  13.             < property   name = "JDBC.ConnectionURL"   value = "${jdbc.url}"   />   
  14.             < property   name = "JDBC.Username"   value = "${jdbc.username}"   />   
  15.             < property   name = "JDBC.Password"   value = "${jdbc.password}"   />   
  16.         </ dataSource >   
  17.     </ transactionManager >   
  18.     < sqlMap   resource = "sql/User.xml"   />   
  19.   
  20. </ sqlMapConfig >   

 

 

在这里, 我们把数据库的相关参数保存在了另一个文件中, sqlmap.properties

 

  1. jdbc.driverClassName=com.mysql.jdbc.Driver  
  2. jdbc.url=jdbc:mysql://localhost:3306/myblog   
  3. jdbc.username=root  
  4. jdbc.password=netjava  

 

 这样做的好处, 相信大家也明白..  下次我们再写一个项目的时候, 只需要把这个文件copy 过去, 改掉其中的数据库连接就ok啦 ,  也算是资源的充分利用吧..

 

至此, 所有的配置文件 都已经上场, 当然上面写的都是最简单的测试, 看起来比较没有那么繁琐, 实际应用时候, 可能最麻烦的地方就是在 配置文件的 sqlmap 的编写... 

前面 UserDao.java 的方法中, 有这么一句 

 

  1. SqlMapClient sqlMap = Utils.getSqlmap();  

 

 Utils 类 就是我们抽取其中的初始化的代码, 单独写成一个类, 当然还是方便重用哈.同时采用的是单实例模式, 相当环保.

  Utils.java

  1. public   class  Utils{  
  2.       
  3.     private   static  SqlMapClient sqlMapper;   
  4.     public   static   synchronized  SqlMapClient getSqlmap()   
  5.     {     
  6.           if (sqlMapper== null )   
  7.           {   
  8.               try  {   
  9.                   Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml" );   
  10.                   sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader);   
  11.                   reader.close();   
  12.                 } catch  (IOException e) {   
  13.                     e.printStackTrace();   
  14.                 }   
  15.           }   
  16.             return  sqlMapper;   
  17.     }   
  18. }  

 

 

好了,  所有的相关文件都已经上场..  当然, 加上 iBATIS的 jar包是前提 , 还是提醒下, 要注意版本问题...

项目的结构如下图所示:


 

最后 整理一下思路吧!


UserDao 是怎样操作数据库的???

首先 , Utils 通过SqlMapConfig.xml里面的配置, 连接到数据库, 取得SqlMap , 同时User.xml 将Sql查询映射成java中可以调用的bean, 通过SqlMap 调用这些bean 就是在执行想对应的sql语句...

你可能感兴趣的:(ibatis基础应用)