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

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

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

    春風博客

    春天里,百花香...

    導航

    <2015年3月>
    22232425262728
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234

    統計

    公告

    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 閱讀(4438) 評論(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://m.tkk7.com)原創,轉載請注明出處.
    主站蜘蛛池模板: 免费一看一级毛片人| 国产亚洲精久久久久久无码AV| 亚洲色中文字幕在线播放| 国产成人免费一区二区三区| 一级有奶水毛片免费看| 亚洲综合久久成人69| 国产大片91精品免费观看男同| 日韩a级无码免费视频| 亚洲а∨天堂久久精品9966| 国产专区一va亚洲v天堂| 91麻豆国产免费观看| 风间由美在线亚洲一区| 亚洲高清国产拍精品26U| 24小时日本在线www免费的| 国产区在线免费观看| 久久精品国产亚洲av麻豆蜜芽| 免费一级毛片在线播放不收费| 久久w5ww成w人免费| 免费毛片毛片网址| 亚洲精品一区二区三区四区乱码| 亚洲AV蜜桃永久无码精品| xxxx日本免费| 中文字幕在线视频免费| 亚洲精品无码国产片| 久久久亚洲欧洲日产国码农村| 日韩精品视频免费在线观看| 免费看又黄又无码的网站| 二级毛片免费观看全程| 亚洲а∨天堂久久精品9966| 亚洲精品福利视频| 国产专区一va亚洲v天堂| 日韩免费视频一区| 91网站免费观看| 久久中文字幕免费视频| 亚欧国产一级在线免费| 国产精品亚洲综合一区在线观看| 亚洲国产成人91精品| 亚洲成AV人片在线观看WWW| 亚洲国产精品一区二区第一页免 | 国产成人aaa在线视频免费观看| 色欲国产麻豆一精品一AV一免费|