<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 閱讀(1287) 評論(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人片不卡无码| 蜜桃精品免费久久久久影院| 草久免费在线观看网站| 亚洲Av永久无码精品一区二区| 四虎影视永久免费观看网址| 中国国语毛片免费观看视频| 亚洲欧洲国产综合| 亚洲AV无码成人精品区大在线| 久操视频免费观看| 久久精品国产96精品亚洲| 在线观看免费人成视频| 一级毛片免费毛片毛片| 亚洲午夜在线一区| 中文字幕日韩亚洲| 性色av无码免费一区二区三区| 亚洲毛片基地日韩毛片基地| 亚洲国产成人久久精品99| 久久久久久精品免费看SSS| 人成免费在线视频| 激情亚洲一区国产精品| 国产亚洲福利精品一区| 国产精品无码一区二区三区免费 | 免费看国产曰批40分钟| 91精品国产免费入口| 九一在线完整视频免费观看| 亚洲中文字幕久久精品无码2021| 久久青青草原亚洲av无码| 毛片视频免费观看| 99热精品在线免费观看| 亚洲精品偷拍视频免费观看| 亚洲人成人无码.www石榴| 久久亚洲精品成人| 国产综合亚洲专区在线| 18禁超污无遮挡无码免费网站| 亚洲精品宾馆在线精品酒店| 亚洲精品中文字幕乱码| 久久亚洲精品成人| 亚洲人成伊人成综合网久久久| 免费jjzz在在线播放国产|