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

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

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

    春風博客

    春天里,百花香...

    導航

    <2008年9月>
    31123456
    78910111213
    14151617181920
    21222324252627
    2829301234
    567891011

    統計

    公告

    MAIL: junglesong@gmail.com
    MSN: junglesong_5@hotmail.com

    Locations of visitors to this page

    常用鏈接

    留言簿(11)

    隨筆分類(224)

    隨筆檔案(126)

    個人軟件下載

    我的其它博客

    我的鄰居們

    最新隨筆

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    Spring的ID增長器使用示例(MySql數據庫)

    一般來說涉及數據庫的應用中,表的主鍵有兩種生成方案,一種是專門定義一個主鍵表,在其中放置一個自增長的字段為其它表提供主鍵;另一種是使用Oracle的sequence。這兩種方案都有一定麻煩,Spring為此專門提供了一個ID增長器以簡化具體步驟,下文就是它的相關使用方法的,使用的數據庫是MySql5.

    歸納
    使用Spring的自增長ID生成器完成以下三步即可:
    1)配置自增長id生成器,它需要一個數據源的支持。
    2)根據配置將自增長id生成器注入DAO各類中。
    3)使用nextStringValue,nextIntValue或nextLongValue方法得到ID。

    具體方法請參照以下代碼:

    1.ID增長器在Spring配置文件中的配置。
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
    <beans>
        
    <!-- 數據源 -->
        
    <bean id="dataSource"
            class
    ="org.springframework.jdbc.datasource.DriverManagerDataSource">
            
    <property name="driverClassName"
                value
    ="org.gjt.mm.mysql.Driver">
            
    </property>
            
    <property name="url" value="jdbc:mysql://127.0.0.1/test">
            
    </property>
            
    <property name="username" value="root"></property>
            
    <property name="password" value="hy"></property>
        
    </bean>

        
    <!-- jdbcTemplate,供各DAO類使用 -->
        
    <bean id="jdbcTemplate"
            class
    ="org.springframework.jdbc.core.JdbcTemplate">
            
    <property name="dataSource">
                
    <ref bean="dataSource" />
            
    </property>
        
    </bean>
        
        
    <!-- 自增長id生成器 -->
        
    <bean id="idGenarater"
            class
    ="org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer">
            
    <property name="incrementerName" value="forumidtable"/> 
            
    <property name="columnName" value="sequence_id"/>
            
    <property name="cacheSize" value="10"/> 
            
    <property name="dataSource" ref="dataSource"/>
        
    </bean>
        
        
    <!-- User Service -->
        
    <bean id="userService"
            class
    ="com.heyang.service.UserService">
            
    <property name="dao" ref="userDao"/> 
            
    <property name="table" value="ForumUser"/>
        
    </bean>
        
        
    <!-- User Dao -->
        
    <bean id="userDao"
            class
    ="com.heyang.dao.UserDao">
            
    <property name="idGenarater" ref="idGenarater"/> 
            
    <property name="table" value="ForumUser"/>
            
    <property name="jdbcTemplate">
                
    <ref bean="jdbcTemplate" />
            
    </property>
        
    </bean>
    </beans>

    2.自增長ID生成器相關配置。
     <!-- 自增長id生成器 -->
     <bean id="idGenarater"
      class="org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer">
            <property name="incrementerName" value="forumidtable"/>  // 自增長ID字段所在的表名 “forumidtable”
            <property name="columnName" value="sequence_id"/>         // 自增長ID字段 “sequence_id”
            <property name="cacheSize" value="10"/>                            //  一次生成ID數目,此設置中一次生成十個,以后從緩存中取,就不用每次都訪問數據庫了,這樣能提高效率
            <property name="dataSource" ref="dataSource"/>                 // 數據源
     </bean>

    3.使用到自增長ID生成器的BaseDao類,它是UserDao的基類。
    通過配置文件將idGenarator注入后,就能使用它。nextStringValue方法用于生成文本類型的ID。
    package com.heyang.dao.base;

    import java.util.List;

    import org.springframework.jdbc.support.incrementer.DataFieldMaxValueIncrementer;

    import com.heyang.domain.base.BaseDomainObj;

    /**
     * 領域對象DAO類的基類
     * 
    @author 何楊(heyang78@gmail.com)
     *
     * 
    @since 2008-8-29 下午09:51:38
     * 
    @version 1.00
     
    */

    public abstract class BaseDao extends Dao{
        
    protected String sql;    
        
        
    /**
         * 與領域對象存取有關的表
         
    */

        
    protected String table;
        
        
    /**
         * 記錄的主鍵生成器
         
    */

        
    protected DataFieldMaxValueIncrementer idGenarater;
        
        
    /**
         * 向數據庫中創建一個對象
         * 
    @param obj
         
    */

        
    public void create(BaseDomainObj obj){
            
    if(obj.getId()==null){
                obj.setId(idGenarater.nextStringValue());
            }

            
            save(obj);
        }

        
        
    /**
         * 向數據庫中保存一個領域對象
         * 強制子類完成
         * 
    @param obj
         
    */

        
    protected abstract void save(BaseDomainObj obj);
        
        
    /**
         * 從數據庫中查詢一個對象
         * 強制子類完成
         * 
    @param sql
         * 
    @return
         
    */

        
    public abstract List<BaseDomainObj> search(String sql);
        
        
    /**
         * 更新一個對象
         * 強制子類完成
         * 
    @param obj
         
    */

        
    public abstract void update(BaseDomainObj obj);
        
        
    /**
         * 按ID取得一個對象
         * 
    @param obj
         
    */

        
    public BaseDomainObj getById(String id){
            sql
    =" select * from "+table+" where id='"+id+"";    
            
            List
    <BaseDomainObj> ls=search(sql);
            
            
    if(ls.size()==1){
                
    return search(sql).get(0);
            }

            
    else{
                
    return null;
            }
            
        }

        
        
    /**
         * 刪除一個對象
         * 
    @param obj
         
    */

        
    public void delete(BaseDomainObj obj){
            String sql
    ="delete from "+table+" where id='"+obj.getId()+"";
            jdbcTemplate.execute(sql);
        }

        

        
    public String getTable() {
            
    return table;
        }


        
    public void setTable(String table) {
            
    this.table = table;
        }


        
    public DataFieldMaxValueIncrementer getIdGenarater() {
            
    return idGenarater;
        }


        
    public void setIdGenarater(DataFieldMaxValueIncrementer idGenarater) {
            
    this.idGenarater = idGenarater;
        }
        
    }


    posted on 2008-09-01 11:30 sitinspring 閱讀(4436) 評論(1)  編輯  收藏 所屬分類: SSH

    評論

    # re: Spring的ID增長器使用示例(MySql數據庫) 2015-03-09 14:33 zuidaima

    Spring AOP注解通過@Autowired,@Resource,@Qualifier,@PostConstruct,@PreDestroy注入屬性的配置文件詳解 http://zuidaima.com/share/1772661373422592.htm  回復  更多評論   

    sitinspring(http://www.tkk7.com)原創,轉載請注明出處.
    主站蜘蛛池模板: 亚洲AV无码专区在线播放中文 | 久久久久久a亚洲欧洲AV| 国产高潮久久免费观看| 国产高潮久久免费观看| 国产亚洲一区二区三区在线观看 | 成年免费大片黄在线观看com| 亚洲另类激情专区小说图片| 亚洲乱码国产一区三区| 免费A级毛片无码A∨中文字幕下载| 日本一道在线日本一道高清不卡免费 | 亚洲a在线视频视频| 999任你躁在线精品免费不卡| 亚洲国产夜色在线观看| 日本免费福利视频| 国产又黄又爽胸又大免费视频| 亚洲黄网在线观看| 国产一级淫片a视频免费观看| 男女拍拍拍免费视频网站| 免费福利在线播放| 亚洲av无码av在线播放| 国产午夜亚洲精品午夜鲁丝片| 18禁美女裸体免费网站| 久久久久亚洲国产AV麻豆 | 可以免费观看的国产视频| 亚洲AV无码一区二区二三区入口 | 日韩免费观看视频| 无人在线观看免费高清| 无遮挡国产高潮视频免费观看| 91亚洲国产成人久久精品| 亚洲精品乱码久久久久久蜜桃不卡| 成人性生免费视频| 91精品成人免费国产片| 免费看成人AA片无码视频吃奶| 美女免费视频一区二区| 99热亚洲色精品国产88| 亚洲黄色在线网站| 亚洲av色影在线| 亚洲色成人中文字幕网站| 99在线在线视频免费视频观看 | 国产成人免费a在线视频色戒| 日本XXX黄区免费看|