ibatis新手上路

概念:

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

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

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

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

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

sample

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

public class User {  

 

    private int id;  

    private String username;  

    private String userpwd;  

    private String userdesc;  

 

        //Sets and Gets…  



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;  



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> 

< 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> 

< 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.Driver  

jdbc.url=jdbc:mysql://localhost:3306/myblog  

jdbc.username=root  

jdbc.password=netjava 

jdbc.driverClassName=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://localhost:3306/myblog

jdbc.username=root

jdbc.password=ipanel

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

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

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

Java代码 

1.SqlMapClient sqlMap = Utils.getSqlmap(); 

SqlMapClient sqlMap = Utils.getSqlmap();

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

  Utils.java

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.} 

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语句…

  • 大小: 23.1 KB

发表评论

电子邮件地址不会被公开。 必填项已用*标注