<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

    主站蜘蛛池模板: 在线观看无码AV网站永久免费| 国产成人免费永久播放视频平台| 亚洲成a人片在线看| 最好免费观看韩国+日本| 国产福利电影一区二区三区,免费久久久久久久精 | 处破女第一次亚洲18分钟| 亚洲精品99久久久久中文字幕| 国产精成人品日日拍夜夜免费| 亚洲AV日韩综合一区尤物| 相泽亚洲一区中文字幕| 免费精品国产日韩热久久| 青青青视频免费观看| 亚洲的天堂av无码| mm1313亚洲国产精品美女| 24小时日本韩国高清免费| 羞羞视频免费网站含羞草| 亚洲蜜芽在线精品一区| 亚洲AV成人精品日韩一区18p| 在线美女免费观看网站h| 九九免费精品视频在这里| 亚洲欧洲另类春色校园网站| 亚洲熟妇av一区二区三区漫画 | 亚洲婷婷国产精品电影人久久| 亚洲免费电影网站| 杨幂最新免费特级毛片| 亚洲人成网网址在线看| 国产亚洲一区二区三区在线不卡| 妞干网手机免费视频| 污污网站18禁在线永久免费观看| 国产亚洲福利一区二区免费看 | 亚洲av成人一区二区三区在线观看 | 国产免费网站看v片在线| 久久精品国产亚洲AV未满十八| 亚洲精品私拍国产福利在线| 免费日韩在线视频| 黄色片在线免费观看| 中文字幕无码免费久久| 有色视频在线观看免费高清在线直播| 精品亚洲国产成人| 精品亚洲麻豆1区2区3区| 久久亚洲欧洲国产综合|