由於工做的事情不少嗎,已經好幾天沒上OSC了,個人NetVinace項目也荒廢了好一段時間了。端午放假,必定要有一點更新才行。昨天,我花了一個下午,爲項目加入瞭如下幾項更新,雖然項目如今仍是不能使用的,但仍是得寫寫,本身作個記號。java
更新列表:mysql
統一應用中業務邏輯層接口,因爲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>
加入以後,整個數據支持就完成了,其實,還差一部分工做,就是實體類了,由於暫時尚未對錶設計進行校驗,表的設計是否合理,還在測試階段。遲點測試好了,再拿出來給你們分享吧。