ibatis和Spring整合的詳細例子

openkk 15年前發布 | 2K 次閱讀

ibatis和Spring整合的詳細例子

ibatis和Spring整合的詳細例子,數據庫用的是mysql,開發環境是Eclipse3.2:

        1.首先把用到的包導入進來,此例用的是spring-framework-1.2.7,iBATIS_DBL-2.1.7.597,mysql的數
  據庫連接包用的是mysql-connector-java-5.0.3-bin.jar.

        2.建POJO類,在此我們用的是一個Student類.
 

  1. package cn.itcast;   
  2.     
  3.  public class Student {   
  4.   private Integer id;   
  5.     
  6.   private String firstname;   
  7.     
  8.   private String lastname;   
  9.     
  10.   public String getFirstname() {   
  11.    return firstname;   
  12.   }   
  13.     
  14.   public void setFirstname(String firstname) {   
  15.    this.firstname = firstname;   
  16.   }   
  17.     
  18.   public Integer getId() {   
  19.    return id;   
  20.   }   
  21.     
  22.   public void setId(Integer id) {   
  23.    this.id = id;   
  24.   }   
  25.     
  26.   public String getLastname() {   
  27.    return lastname;   
  28.   }   
  29.     
  30.   public void setLastname(String lastname) {   
  31.    this.lastname = lastname;   
  32.   }   
  33.  }  

 

        3.POJO的映射文件Student.xml,在這里面只有兩個功能,即根據student的id檢索出一個Student對象,另一
  個就是向數據庫插入一條記錄(一個Student對象),注意:此應用程序中所有的配置文件(xml文件和properties文件都放在configfile包下面).

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd">  
  3. <!--這是POJO映射文件的根元素-->  
  4. <sqlMap namespace="Student">  
  5.  <!--select元素的id屬性用來標識此元素,resultClass屬性的值是Java類的全限定名(即包括類的包名)。   
  6.  resultClass屬性可以讓您指定一個Java類,根據ResultSetMetaData將其自動映射到JDBC的ResultSet。   
  7.  只要是Java Bean的屬性名稱和ResultSet的列名匹配,屬性自動賦值給列值。   
  8.  parameterClass屬性是參數的類型,此屬性的值是Java類的全限定名(即包括類的包名)。   
  9.  它是可選的,但強烈建議使用。它的目的是 限制輸入參數的類型為指定的Java類,并   
  10.  優化框架的性能。-->  
  11.  <select id="getStudentById" resultClass="cn.itcast.Student" parameterClass="int">  
  12.   select id,firstname,lastname from student where id=#value#   
  13.  </select>  
  14.     
  15.  <insert id="insertStudent" parameterClass="cn.itcast.Student">  
  16.   insert into student(firstname,lastname) values(#firstname#,#lastname#)   
  17.  </insert>  
  18. </sqlMap>  

 

        4.建一個SqlMap的配置文件sql-map-config.xml,sqlMap元素的resource屬性告訴Spring去哪找POJO映射文件.

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE sqlMapConfig   
  3. PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"   
  4. "http://www.ibatis.com/dtd/sql-map-config-2.dtd">  
  5. <sqlMapConfig>  
  6.  <sqlMap resource="configfile/Student.xml" />  
  7. </sqlMapConfig>  

 

        5.jdbc.properties文件,存儲數據庫連接的driver,url,username,password等信息,

  1. jdbc.driver=com.mysql.jdbc.Driver   
  2. jdbcjdbc.url=jdbc:mysql://localhost/itcast   
  3. jdbc.username=root  
  4. jdbc.password=  

 


        6.Spring配置文件applicationContext.xml

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">  
  3.   
  4. <beans>  
  5.   
  6.  <!--此bean告訴Spring去哪找數據庫的配置信息,因為有此Bean才出現下面用${}標記來取變量的語句-->  
  7.  <bean id="propertyConfig"  
  8.   class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
  9.   <property name="location">  
  10.    <value>configfile/jdbc.properties</value>  
  11.   </property>  
  12.  </bean>  
  13.   
  14.  <!--配置一個數據源,根據上面propertyConfig指定的location去找數據庫連接的配置信息-->  
  15.  <bean id="dataSource"  
  16.   class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
  17.   <property name="driverClassName">  
  18.    <value>${jdbc.driver}</value>  
  19.   </property>  
  20.   <property name="url">  
  21.    <value>${jdbc.url}</value>  
  22.   </property>  
  23.   <property name="username">  
  24.    <value>${jdbc.username}</value>  
  25.   </property>  
  26.   <property name="password">  
  27.    <value>${jdbc.password}</value>  
  28.   </property>  
  29.  </bean>  
  30.   
  31.  <!--根據dataSource和configLocation創建一個SqlMapClient-->  
  32.  <bean id="sqlMapClient"  
  33.   class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">  
  34.   <property name="configLocation">  
  35.    <value>configfile/sql-map-config.xml</value>  
  36.   </property>  
  37.   <property name="dataSource">  
  38.    <ref bean="dataSource" />  
  39.   </property>  
  40.  </bean>  
  41.   
  42.  <!--根據sqlMapClien創建一個SqlMapClient模版類-->    
  43.  <bean id="sqlMapClientTemplate"  
  44.   class="org.springframework.orm.ibatis.SqlMapClientTemplate">  
  45.   <property name="sqlMapClient">  
  46.    <ref bean="sqlMapClient" />  
  47.   </property>  
  48.  </bean>  
  49.     
  50.  <!--將上面的模版類織入到我們的DAO對象中-->  
  51.  <bean id="studentDao" class="cn.itcast.StudentDaoSqlMap">  
  52.   <property name="sqlMapClientTemplate">  
  53.    <ref bean="sqlMapClientTemplate" />  
  54.   </property>  
  55.  </bean>  
  56.   
  57. </beans>  

 

        7.StudentDaoSqlMap 是一個DAO,它負責和數據庫的交互,在這里實現了查詢單條記錄和插入單條記錄的功能.

  1. package cn.itcast;   
  2.   
  3. import org.springframework.orm.ibatis.SqlMapClientTemplate;   
  4.   
  5. public class StudentDaoSqlMap {   
  6.  private SqlMapClientTemplate sqlMapClientTemplate;   
  7.   
  8.  public SqlMapClientTemplate getSqlMapClientTemplate() {   
  9.   return sqlMapClientTemplate;   
  10.  }   
  11.   
  12.  public void setSqlMapClientTemplate(   
  13.    SqlMapClientTemplate sqlMapClientTemplate) {   
  14.   this.sqlMapClientTemplate = sqlMapClientTemplate;   
  15.  }   
  16.   
  17.  //此方法的返回值與Student.xml的select元素的resultClass對應.   
  18.  public Student getStudent(Integer id) {   
  19.   return (Student) sqlMapClientTemplate.queryForObject("getStudentById",id);   
  20.   //注意:queryForObject方法返回一個Object,第一個參數與Student.xml的select元素   
  21.   //的id屬性值對應,第二個參數的類型與Student.xml的select元素的parameterClass   
  22.   //屬性值對應.   
  23.  }   
  24.   
  25.  public Object insertStudent(Student student) {   
  26.   return sqlMapClientTemplate.insert("insertStudent", student);   
  27.  }   
  28. }  

 

        8.下面寫一個帶main函數的類來測試上面的代碼.代碼非常簡單就不再解釋了.
 

  1. package cn.itcast;   
  2.     
  3.  import org.springframework.context.ApplicationContext;   
  4.  import org.springframework.context.support.ClassPathXmlApplicationContext;   
  5.     
  6.  public class Client {   
  7.     
  8.   public static void main(String[] args) {   
  9.    ApplicationContext factory = new ClassPathXmlApplicationContext(   
  10.      "applicationContext.xml");   
  11.     
  12.    StudentDaoSqlMap studentDao = (StudentDaoSqlMap) factory   
  13.      .getBean("studentDao");   
  14.       
  15.    //插入一個student   
  16.    Student student = new Student();   
  17.    student.setFirstname("tian");   
  18.    student.setLastname("xiangdong");   
  19.    studentDao.insertStudent(student);   
  20.     
  21.    //查詢出id是1的Student對象.   
  22.    //Student student = studentDao.getStudent(1);   
  23.    //System.out.println(student.getId());   
  24.    //System.out.println(student.getFirstname());   
  25.    //System.out.println(student.getLastname());   
  26.   }   
  27.     
  28.  }  
 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!