<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 閱讀(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://m.tkk7.com)原創,轉載請注明出處.
    主站蜘蛛池模板: 一级特黄aa毛片免费观看| 免费h视频在线观看| 在线播放亚洲精品| 免费国产污网站在线观看| 少妇无码一区二区三区免费| 日本红怡院亚洲红怡院最新| 国产亚洲精aa在线看| 三年片免费观看大全国语| 亚洲精品免费在线视频| 亚洲人成电影网站国产精品| 日韩亚洲人成在线| 女人被免费视频网站| 亚洲人成在线播放网站岛国| 成人a毛片视频免费看| 麻豆国产VA免费精品高清在线| 久久亚洲一区二区| h视频免费高清在线观看| 免费涩涩在线视频网| 美女免费精品高清毛片在线视| 日韩精品无码免费一区二区三区 | 日本亚洲中午字幕乱码 | 国产一卡二卡四卡免费| 亚洲大尺度无码专区尤物| 8x网站免费入口在线观看| 亚洲第一极品精品无码久久| 99re6在线精品视频免费播放| 中日韩亚洲人成无码网站| 亚洲国产精品狼友中文久久久 | 亚洲AV无码成人网站在线观看| 97在线观免费视频观看| 亚洲无删减国产精品一区| 青娱分类视频精品免费2| 亚洲中文无码a∨在线观看| 尤物视频在线免费观看| 亚洲av无码不卡一区二区三区 | 亚洲性日韩精品一区二区三区| 国产一区二区免费在线| 亚洲AV无码精品蜜桃| 亚洲国产成人久久综合碰| 久久99热精品免费观看牛牛| 亚洲午夜在线播放|