【進展】爲NetVinace 項目加入數據訪問支持。統一服務層(業務邏輯層)入口,設計引入命令系統

       由於工做的事情不少嗎,已經好幾天沒上OSC了,個人NetVinace項目也荒廢了好一段時間了。端午放假,必定要有一點更新才行。昨天,我花了一個下午,爲項目加入瞭如下幾項更新,雖然項目如今仍是不能使用的,但仍是得寫寫,本身作個記號。java

更新列表:mysql

  1. 引入數據庫,並設計命令系統配置表;
  2. 加入基於hibernate的數據庫訪問支持;
  3. 統一應用中業務邏輯層接口;

     統一應用中業務邏輯層接口,因爲java類能夠實現多接口,若是有須要,用戶能夠編寫本身的接口,並實現本身的接口,但必須實現系統默認服務接口。com.amos.main.service.ServiceUtil。此接口中包含業務入口,Boolean executeService(Object[] parm);方法.目前該接口還在測試階段,後續還有很大的升級可能。不說太多,下面給出這次更新涉及到的源碼。來,1,2,3 去馬(碼)!spring

引入數據庫,並設計命令系統配置表:這次更新加入數據庫支持,方便配置系統各類信息,引入命令系統,方便往後系統更新,與插件編寫:sql

'命令處理器配置表' SQL:數據庫

/* Table: COMMAND_HANDLER_CONFIG                                */
/*==============================================================*/
create table COMMAND_HANDLER_CONFIG
(
   OID                  int(3) not null,
   CMD_CODE             varchar(50) default NULL,
   CMD_NAME             varchar(50),
   CMD_HANDLER_CLZ      varchar(100),
   CMD_HANDLER_METHOND  varchar(100),
   PARMETER_NUM         int(2),
   ISHEAD               int(1) default 0,
   PARENT               int(3) comment '父級命令',
   NOTE                 text default NULL
);apache

alter table COMMAND_HANDLER_CONFIG comment '命令處理器配置表';session

/*==============================================================*/
/* Index: IDX_CMD_CODE                                          */
/*==============================================================*/
create index IDX_CMD_CODE on COMMAND_HANDLER_CONFIG
(
   CMD_CODE
);ide

/*==============================================================*/
/* Index: IDX_CMD_NAME                                          */
/*==============================================================*/
create index IDX_CMD_NAME on COMMAND_HANDLER_CONFIG
(
   CMD_NAME
);測試

 

 

命令參數配置表' SQL:this

create table COMMAND_PARMETERS_CONFIG
(
   OID                  int(10) not null,
   CMD_ID               int(3),
   PARM_NAME            varchar(20),
   PARM_TYPE            varchar(100),
   PARM_IDX             int(3),
   NOTE                 text
);

alter table COMMAND_PARMETERS_CONFIG comment '命令參數配置表';

alter table COMMAND_PARMETERS_CONFIG add constraint FK_FK_COMMAND_PARMETERS foreign key (OID)
      references COMMAND_HANDLER_CONFIG (OID) on delete restrict on update restrict;

客戶端重要更新:
public class ClientApp implements ServiceUtil {  //你能夠本身寫接口,並在你的實現類中,同時實現ServiceUtil 和你本身的接口。

//ServiceUtil 接口方法

@Override
    public boolean executeService(Object[] parms) {
        // TODO Auto-generated method stub
        return startClient(parms[0].toString(), this);
    }

}

一樣道理,服務端也有相似實現。。

 

//系統DAO接口定義(完整):

public interface ISystemCommonDao {

    public  int saveData(IEntry entry);

    /**
     *
     * @param entry
     * @return int
     * @category 更新數據
     */

    public  int updateData(IEntry entry);

    /**
     *
     * @param entryClass
     * @param id
     * @return int
     * @category 刪除單條數據
     */

    public  int deleteData(Class entryClass, String id);

    /**
     * @author Administrator
     * @category 批量刪除數據
     * @param entryClass,ids
     * @return int
     * @exception Exception
     * @since 1.0.0   2011-01-19
     */

    public  int deleteDatas(Class entryClass, String[] ids);

    /**
     *
     * @param entryClass
     * @param pageNo
     * @param pageSize
     * @return PageUtil
     * @category DAO查詢分頁方法
     */
    public  PageUtil queryAllData(Class entryClass, int pageNo,
            int pageSize);

    /**
     * @category DAO查詢非分頁方法
     * @param entryClass
     * @return
     */
    public  List<IEntry> queryAllData(Class entryClass);

    public  IEntry querySingleData(Class entryClass,
            String id);
   
    public  IEntry querySingleDataByCondition(Class entryClass,
            String condition);

    /**
     *
     * @param condition
     * @param entryClass
     * @return PageUtil
     * @category DAO條件查詢分頁方法
     */

    public  PageUtil queryDataByCondition(String condition,
            Class entryClass, int pageNo, int pageSize);

    /**
     *
     * @param condition
     * @param entryClass
     * @return
     * @category DAO條件查詢非分頁方法
     */
    public  List<IEntry> queryDataByCondition(
            String condition, Class entryClass, boolean distinct);

    /**
     *
     * @param sql
     * @return  List
     * @category SQL查詢方法
     */

    public  List queryDataBySQL(String sql);

    /**
     *
     * @param sql
     * @return  List
     * @category SQL更新方法
     */

    public  void updateDataBySQL(String sql);

}

接下來就是對應接口的實現了。。

//系統DAO接口默認實現:

public class SystemCommonDaoImpl extends HibernateDaoSupport implements
ISystemCommonDao{

//方法重寫。。省略N行。。O(∩_∩)O哈哈~

}

寫完代碼了,由於系統全部組件都交給Spring管理,因此,須要在spring配置文件中加入相關配置。

關於數據訪問支持,確定要配置hibernate的sessionFactory

<bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>

        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.format_sql">true</prop>
                <prop key="hibernate.batch_size">15</prop>
            </props>
        </property>
    </bean>

固然,數據源配置也是必不可少

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://127.0.0.1:3306/netvinace"></property>
    <property name="username" value="root"></property>
    <property name="password" value="201441"></property>
    <property name="initialSize" value="50"></property>
    <property name="maxActive" value="100"></property>
    <property name="maxIdle" value="10"></property>
    <property name="maxWait" value="10"></property>
</bean>

還有,系統DAO的默認實現也少不了

<bean id="systemDao" class="com.amos.main.db.SystemCommonDaoImpl">
        <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>

加入以後,整個數據支持就完成了,其實,還差一部分工做,就是實體類了,由於暫時尚未對錶設計進行校驗,表的設計是否合理,還在測試階段。遲點測試好了,再拿出來給你們分享吧。

相關文章
相關標籤/搜索