<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Ibatis之DAO應用

    Posted on 2009-10-19 13:14 H2O 閱讀(1275) 評論(0)  編輯  收藏 所屬分類: DataBase

    1.來一個Person類

    package com.Jdnis.ibatis.model;   
    import java.io.Serializable;   
    import java.sql.Date;   
    public class Person implements Serializable {   
        
    private static final long serialVersionUID = 1L;   
        
    private int id ;   
        
    private String firstName ;   
        
    private String lastName ;   
        
    private Date birthDate = new Date(1900,1,1);;   
        
    private double weight ;   
        
    private double height ;   
        
    public int getId() {   
            
    return id;   
        }
       
        
    public void setId(int id) {   
            
    this.id = id;   
        }
       
        
    public String getFirstName() {   
            
    return firstName;   
        }
       
        
    public void setFirstName(String firstName) {   
            
    this.firstName = firstName;   
        }
       
        
    public String getLastName() {   
            
    return lastName;   
        }
       
        
    public void setLastName(String lastName) {   
            
    this.lastName = lastName;   
        }
       
        
    public Date getBirthDate() {   
            
    return birthDate;   
        }
       
        
    public void setBirthDate(Date birthDate) {   
            
    this.birthDate = birthDate;   
        }
       
        
    public double getWeight() {   
            
    return weight;   
        }
       
        
    public void setWeight(double weight) {   
            
    this.weight = weight;   
        }
       
        
    public double getHeight() {   
            
    return height;   
        }
       
        
    public void setHeight(double height) {   
            
    this.height = height;   
        }
       
    }
      
    2.oop編程中,面向接口編程是一種很好的編程風格。在這一步驟中,定義Person實例的一個操作接口:
    package com.Jdnis.ibatis.interfaces;   
    import java.util.List;   
    import com.ibatis.dao.client.Dao;   
    import com.Jdnis.ibatis.model.Person;   
    public interface PersonInterface extends Dao{   
        
    public void insertPerson(Person p);   
        
    public void updatePerson(Person p);   
        
    public List selectAllPerson( );   
    }
      
    3.對接口的實現類
    package com.Jdnis.ibatis.interfaces;   
    import java.sql.SQLException;   
    import java.util.List;   
    import com.ibatis.dao.client.DaoManager;   
    import com.ibatis.dao.client.template.SqlMapDaoTemplate;   
    import com.Jdnis.ibatis.model.Person;   
    public class PersonImpl extends SqlMapDaoTemplate implements PersonInterface {   
        
    public PersonImpl(DaoManager daoManager) {   
            
    super(daoManager);   
            
    // TODO Auto-generated constructor stub   
        }
       
        
    public void insertPerson(Person p) {   
            
    // TODO Auto-generated method stub   
            try {   
                
    this.getSqlMapExecutor().insert("insertPerson",p);   
                System.out.println(
    "數據插入成功!");   
            }
     catch (SQLException e) {   
                
    // TODO Auto-generated catch block   
                System.out.println("插入出錯,主鍵沖突!");   
            }
       
        }
       
        
    public void updatePerson(Person p) {   
            
    // TODO Auto-generated method stub   
            try {   
                
    this.getSqlMapExecutor().update("updatePerson",p);   
            }
     catch (SQLException e) {   
                
    // TODO Auto-generated catch block   
                e.printStackTrace();   
            }
       
        }
       
        
    public List selectAllPerson() {   
            
    // TODO Auto-generated method stub   
            return queryForList("selectAllPerson",null);   
        }
       
    }
      

    4.配置person.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 namespace="Person">   
       
    <!-- 緩存 -->   
       
    <typeAlias alias="person" type="com.Jdnis.ibatis.model.Person" />   
       
    <parameterMap id="insert_person" class="person">   
          
    <parameter property="id" jdbcType="int" />   
          
    <parameter property="firstName" jdbcType="varchar"/>   
          
    <parameter property="lastName" jdbcType="varchar"/>   
          
    <parameter property="birthDate"  jdbcType="Date"/>   
          
    <parameter property="weight" jdbcType="double" />   
          
    <parameter property="height" jdbcType="double" />   
       
    </parameterMap>   
       
    <resultMap id="allPersons" class="person">   
          
    <result property="id" column="per_id" />   
          
    <result property="firstName" column="per_first_name" />   
          
    <result property="lastName" column="per_last_name" />   
          
    <result property="birthDate" column="per_birth_date" />   
          
    <result property="weight" column="weightInKilograms" />   
          
    <result property="height" column="heightInMeters" />   
       
    </resultMap>   
          
       
    <statement id="insertPerson" parameterMap="insert_person">   
         INSERT INTO persons VALUES(
    ?,?,?,?,?,?)   
       
    </statement>   
       
    <statement id="selectAllPerson" resultMap="allPersons">   
         
    <![CDATA[select * from persons]]>   
       
    </statement>   
       
    <statement id="updatePerson" parameterClass="person">   
         
    <![CDATA[update persons set per_first_name=#firstName#,per_last_Name=#lastName#,per_birth_date=#birthDate#,weightInKilograms=#weight#,heightInMeters=#height# where per_id=#id#]]>   
       
    </statement>   
    </sqlMap>  
    5.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>   
      
    <!-- 地方i -->   
      
    <settings cacheModelsEnabled="true"  
                  enhancementEnabled
    ="true"  
                  lazyLoadingEnabled
    ="true"    
                  errorTracingEnabled
    ="true"    
                  maxRequests
    ="32"  
                  maxSessions
    ="10"    
                  maxTransactions
    ="5"    
                  useStatementNamespaces
    ="false"  
        
    />   
        
    <transactionManager type="JDBC">   
            
    <dataSource type="SIMPLE">   
                
    <property name="JDBC.Driver" value="com.mysql.jdbc.Driver" />   
                
    <property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost/person" />   
                
    <property name="JDBC.Username" value="root" />   
                
    <property name="JDBC.Password" value="root" />   
                
    <property name="Pool.MaximumActiveConnections" value="10" />   
                
    <property name="Pool.MaximumIdleConnections" value="5" />   
                
    <property name="Pool.MaximumCheckoutTime" value="120000" />   
                
    <property name="Pool.TimeToWait" value="500" />   
                
    <property name="Pool.PingQuery" value="select 1 from sample" />   
                
    <property name="Pool.PingEnabled" value="false" />   
                
    <property name="Pool.PingConnectionsOlderThan" value="1" />   
                
    <property name="Pool.PingConnectionsNotUsedFor" value="1" />   
            
    </dataSource>   
        
    </transactionManager>      
       
    <sqlMap resource="com/Jdnis/ibatis/map/person.xml" />   
    </sqlMapConfig>  

    6.ibatisdao.xml文件的配置
    <?xml version="1.0" encoding="UTF-8"?>   
    <!DOCTYPE daoConfig PUBLIC "-//ibatis.apache.org//DTD DAO Configuration 2.0//EN" "http://ibatis.apache.org/dtd/dao-2.dtd">   
    <daoConfig>   
      
    <context>   
        
    <transactionManager type="SQLMAP">   
          
    <property name="SqlMapConfigResource" value="com/neusoft/ibatis/map/SqlMapConfig.xml" />   
        
    </transactionManager>   
        
    <dao interface="com.neusoft.ibatis.interfaces.PersonInterface" implementation="com.Jdnis.ibatis.interfaces.PersonImpl" />   
      
    </context>   
    </daoConfig>  

    該文件的<transactionManager>元素將剛才的SqlMapConfig.xml相關聯起來,使得三個配置文件都聯系到了一起,<dao>元素的配置是將dao接口與其實現類關聯起來。
    7.dao.xml文件的解析
    package com.Jdnis.ibatis.dao;   
    import java.io.IOException;   
    import java.io.Reader;   
    import java.util.Properties;   
    import com.ibatis.common.resources.Resources;   
    import com.ibatis.dao.client.DaoManager;   
    import com.ibatis.dao.client.DaoManagerBuilder;   
    public class DAOConfig {   
        
    private static final String resource="com/Jdnis/ibatis/map/dao.xml";   
        
    private static final DaoManager daoManager;   
        
    static{   
            daoManager 
    = newDaoManager(null);   
        }
       
        
    public static DaoManager getDaoManager(){   
            
    return daoManager;   
        }
       
        
    public static DaoManager newDaoManager(Properties props){   
            
    try {   
                Reader reader 
    = Resources.getResourceAsReader(resource);   
                
    return DaoManagerBuilder.buildDaoManager(reader,props);   
            }
     catch (Exception e) {   
                
    // TODO Auto-generated catch block   
                new RuntimeException("Could not initialize DaoConfig.  Cause: " + e, e);   
            }
       
            
    return null;       
        }
       
    }
      

    8.測試類
    package com.Jdnis.ibatis.dao;   
    import java.sql.Date;   
    import com.ibatis.dao.client.DaoManager;   
    import com.Jdnis.ibatis.interfaces.PersonInterface;   
    import com.Jdnis.ibatis.model.Person;   
    public class TestCase {   
       DaoManager daoManager;   
        
    protected void setUp()throws Exception{   
            daoManager 
    = DAOConfig.getDaoManager();   
        }
       
        
    public void testInsertPerson(){   
            PersonInterface pi 
    = (PersonInterface)daoManager.getDao(PersonInterface.class);   
            Person p 
    = new Person();   
            p.setId(
    2);   
            p.setFirstName(
    "firstName");   
            p.setLastName(
    "lastName");   
            
    //p.setBirthDate(new Date(21,12,25));   
            p.setHeight(172);   
            p.setWeight(
    125);   
            pi.insertPerson(p);   
        }
       
        
    public static void main(String[] args){   
            TestCase tc 
    = new TestCase();   
            
    try {   
                tc.setUp();   
            }
     catch (Exception e) {   
                
    // TODO Auto-generated catch block   
                e.printStackTrace();   
            }
       
            tc.testInsertPerson();   
        }
       
    }
      
    ibatis通過
    PersonInterface pi = (PersonInterface)daoManager.getDao(PersonInterface.class);  

    這種反射的機制,來實例化一個接口的實現類(dao.xml文件中接口與實現類的關聯)

    posts - 0, comments - 21, trackbacks - 0, articles - 101

    Copyright © H2O

    主站蜘蛛池模板: 一本无码人妻在中文字幕免费| 久久精品九九亚洲精品| 一二三四免费观看在线视频中文版| 久久99精品免费一区二区| 国产AV无码专区亚洲AV麻豆丫| 91亚洲va在线天线va天堂va国产| 国产成人精品曰本亚洲79ren| 性xxxx视频播放免费| 182tv免费观看在线视频| 三年片在线观看免费| 一级毛片在线播放免费| 亚洲精品成a人在线观看夫| 亚洲国产精品成人综合久久久| 亚洲va无码va在线va天堂| 国产亚洲精aa成人网站| 亚洲av无码成人精品区在线播放| 天天天欲色欲色WWW免费| 成人女人A级毛片免费软件| 蜜桃AV无码免费看永久| 久久久国产精品无码免费专区| aa级毛片毛片免费观看久| 深夜福利在线视频免费| 免费国产高清毛不卡片基地| 亚洲成a人片在线不卡一二三区| 国产精品亚洲自在线播放页码| 亚洲欧洲日本国产| 亚洲日本国产精华液| 亚洲欧洲日本国产| 亚洲国产精品张柏芝在线观看| 亚洲大片免费观看| 亚洲成a人片在线观看播放| 亚洲精品不卡视频| 亚洲在成人网在线看| 456亚洲人成影院在线观| 中文字幕亚洲码在线| 亚洲精品无码高潮喷水A片软| 亚洲人av高清无码| 国产成人人综合亚洲欧美丁香花| 苍井空亚洲精品AA片在线播放 | 热re99久久6国产精品免费| 人人玩人人添人人澡免费|