IBATIS版CMS使用指南
更新时间:2023-10-20 08:08:01 阅读量: 综合文库 文档下载
- 天津iBatis培训推荐度:
- 相关推荐
IBATIS版CMS使用指南
1
IBATIS版CMS使用指南
1. 概述
1.1. 功能描述
IBATIS版CMS与原来的GDB版CMS功能上完全相同,数据库表结构一致,使用中没有任何区别,只要更换相应的jar包和修改相应的配置文件。
1.2. 区别
? 数据库层操作全部替换为IBATIS,不再依赖于GDB
? 将原来CMS自带的动态属性管理提取出来形成了单独的动态属性库
css-dynamicattr.jar,并将原来的config_attr_map.xml分开成两个文件cms_category_attr_map.xml和cms_document_attr_map.xml ? 其他配置文件的修改,参见4.1
1.3. 注意事项
在使用IBATIS查询数据库时,如果语句为select * from tablename ,字段中有Date类型,返回改字段值会丢失时分秒信息,只有年月日。
只好修改了IBATIS中com.ibatis.sqlmap.engine.type.ObjectTypeHandler类的源码来处理这个问题,希望以后能找到更好的解决办法。
该源码包含在山西证券项目的src下,并且也上传到了227CVS的cms_ibatis模块下。
2. 库表结构
2.1. CMS_DOC_BODY (文档正文表)
字段名称 DOC_ID CONTENT CONTENT_TYPE CONTENT_SOURCE PARENT_ID 类型 NUMBER(10) BLOB VARCHAR2(30) VARCHAR2(30) NUMBER(10) PK 是 否 否 否 否 NOT NULL 是 否 是 是 是 说明 文档ID 文档内容 文档内容的格式 (默认’text/html’) 内容来源(默认’body’) 父文档ID(默认0) IBATIS版CMS使用指南
2
ENCODING 索引说明 外键说明 其它说明 VARCHAR2(30) DOC_ID 主键 PARENT_ID索引 否 否 文档的编码方式
CONTENT_SOURCE的值根据Document的内容来源项,分为以下几种: body:正文编辑文本(文本格式) body_attachment:正文资源图片 body_file:正文文件(文件格式)
document_attachment:document附件 document_rel_img:文章配图
2.2. CMS_DOC_SINGLE_ATTR (文档单值属性表)
字段名称 DOC_ID TITLE SUBTITLE TITLE_COLOR TITLE_STRIKING UPLOAD_DATE EDITOR SOURCE STATE AUDITOR BASE_BRIEF IS_DELETE DELETOR MODIFY_DATE HIT_COUNT IS_DELAY HAS_HTML HAS_XML HAS_LUCENE HTTP_HREF IMPORTANCE SOURCE_TYPE 类型 NUMBER(10) VARCHAR2(300) VARCHAR2(300) VARCHAR2(7) NUMBER(1) DATE VARCHAR2(45) VARCHAR2(45) NUMBER(1) VARCHAR2(45) VARCHAR2(1000) NUMBER(1) VARCHAR2(45) DATE NUMBER(10) NUMBER(1) NUMBER(1) NUMBER(1) NUMBER(1) VARCHAR2(100) NUMBER(1) VARCHAR2(45) PK 是 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 NOT NULL 是 是 否 否 否 是 否 否 是 否 否 是 否 否 否 否 否 否 否 否 否 否 说明 文档ID(PK) 标题 副标题 标题颜色 标题加粗 发布时间 录入人 来源 状态(0:未审核;1:已审核;-1:附件) (默认0) 审核人 普通摘要 删除标记(0:正常;1:删除) (默认0) 删除人 最后修改时间 点击数 延时标记(未使用) html标记(未使用) xml标记(未使用) 分词标记(未使用) 替换链接 重要程度(0:普通;1:要闻;2:头条)(默认0) 来源类型(默认’editor’,表示采编) IBATIS版CMS使用指南
3
USER_TYPE DOC_TYPE SMS_BRIEF SOURCE_DATE CAT_ID BEGIN_DATE END_DATE RELATION 索引说明 NUMBER(1) NUMBER(1) VARCHAR2(1000) DATE NUMBER(10) DATE DATE VARCHAR2(500) DOC_ID 主键 AUDITOR索引 DELETOR 索引 EDITOR 索引 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 否 用户类型 文档类型(参照CMS_DOC_TYPE表的内容,默认0,表示普通资讯) 短信摘要 来源日期 栏目ID(未使用) 激活日期(中信特定使用) 注销日期(中信特定使用) 相关文档id串 IS_DELETE, STATE, IMPORTANCE, DOC_TYPE 索引 UPLOAD_DATE, DOC_ID索引 外键说明 其它说明
字段与config_attr_map.xml中配置的单值属性一一对应,可以根据项目的具体情况对字段进行调整,这里只是中信项目的。但是以下字段必须在所有项目中保留:DOC_ID,TITLE,SUB_TITLE,UPLOAD_DATE,EDITOR,STATE,AUDITOR,BASE_BRIEF,IS_DELETE,MODIFY_DATE,IMPORTANCE,DOC_TYPE,CAT_ID
2.3. CMS_DOC_MULTI_ATTR_AUTHOR (文档作者多值属性表)
字段名称 DOC_ID AUTHOR 索引说明 类型 NUMBER(10) VARCHAR2(50) DOC_ID,AUTHOR主键 DOC_ID 索引 PK 否 否 NOT NULL 是 是 说明 文档ID 作者 AUTHOR索引 外键说明 其它说明
2.4. CMS_DOC_MULTI_ATTR_KEYWORD (文档关键字多值属性
表)
字段名称 DOC_ID KEY_WORD 类型 NUMBER(10) VARCHAR2(50) PK 否 否 NOT NULL 是 是 说明 文档ID 关键字 IBATIS版CMS使用指南
4
索引说明 DOC_ID,KEY_WORD主键 DOC_ID 索引 KEY_WORD索引 外键说明 其它说明
2.5. CMS_DOC_MULTI_ATTR_STOCKID (文档股票代码多值属性
表)
字段名称 DOC_ID STOCK_ID 索引说明 类型 NUMBER(10) VARCHAR2(50) DOC_ID 索引 PK 否 否 NOT NULL 是 是 说明 文档ID 股票代码 DOC_ID,STOCK_ID主键 STOCK_ID索引 外键说明 其它说明
2.6. CMS_DOC_TYPE (文档类型表)
字段名称 TYPE_ID TYPE_NAME TYPE_DESC 索引说明 外键说明 其它说明
类型 NUMBER(10) VARCHAR2(30) VARCHAR2(100) TYPE _ID主键 PK 是 否 否 NOT NULL 是 说明 文档类型id 文档名称 文档类型描述 否 否 2.7. CMS_CATEGORY_BASIC_INFO (分类基本信息表)
字段名称 CAT_ID CAT_NAME DISPLAY_NAME CAT_DESC CAT_PICTURE CAT_SOURCE 类型 NUMBER(10) VARCHAR2(200) VARCHAR2(200) VARCHAR2(1000) NUMBER(10) VARCHAR2(200) PK 是 否 否 否 否 否 NOT NULL 是 是 否 否 否 否 说明 分类ID 分类名 分类显示名 分类描述 分类图片ID 分类来源 IBATIS版CMS使用指南
5
DELETE_FLAG SITE_NAME 索引说明 外键说明 其它说明
NUMBER(1) VARCHAR2(200) CAT_ID主键 CAT_NAME唯一索引 否 否 否 否 删除标记(0:正常;1:删除) 所属站点名 2.8. CMS_CATEGORY_EXT_INFO (分类扩展信息表)
字段名称 NODE_ID AUTO_AUDIT AUTO_RELEASE DELETE_FLAG SHOW_FLAG 索引说明 外键说明 类型 NUMBER(10) NUMBER(1) NUMBER(1) NUMBER(1) NUMBER(1) NODE_ID 主键 alter table CMS_CATEGORY_EXT_INFO add constraint FK_CMS_CATEGORY_EXT_NODEID foreign key (NODE_ID) references CMS_CATEGORY_BASIC_INFO (CAT_ID) on delete cascade; PK NOT NULL 否 是 否 否 否 否 否 否 否 否 说明 分类ID 是否自动审核(0:否;1:是) 是否自动发布(未使用) 删除标记(未使用) 显示标记(未使用) 其它说明
2.9. CMS_CATEGORY_TREE_MAP(分类关系表)
字段名称 NODE_ID PARENT_ID ROOT_ID ORDER_NUM 索引说明 外键说明 类型 NUMBER(10) NUMBER(10) NUMBER(10) NUMBER(3) alter table CMS_CATEGORY_TREE_MAP add constraint FK_CMS_CATEGORY_TREE_NODEID foreign key (NODE_ID) references CMS_CATEGORY_BASIC_INFO (CAT_ID) on delete cascade; PK NOT NULL 否 是 否 否 否 是 是 是 说明 分类ID 父分类ID 根分类ID 排列顺序 其它说明 2.10. CMS_DOC_CATEGORY_MAP (文档分类对应关系表)
字段名称 CAT_ID 类型 NUMBER(10) PK NOT NULL 是 是 说明 分类ID
IBATIS版CMS使用指南
11
sxzqconfig.xml的文件名可以根据application.properties中的ibatis.cms项配置而改变,并不是固定的,文件格式参照Ibatis规范来写。 4.1.2.7. IBATIS的数据库配置文件 文件名根据SQL Map XML文件的 表示位于classes/conf/目录下的sxzq.properties文件 driver=oracle.jdbc.driver.OracleDriver url=jdbc:oracle:thin:@192.168.0.253:1521:ora10gdb username=sxzq password= sxzq 此文件是Ibatis标准的数据库配置文件 4.1.2.8. IBATIS的Log配置文件 IBATIS使用log4j记录日志,所以classes目录下有下面两个log配置文件 IBATIS版CMS使用指南 12 ? commons-logging.properties org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger ? log4j.properties ## LOGGERS ## log4j.rootLogger=ERROR,stdout,file # SqlMap logging configuration... log4j.logger.com.ibatis=DEBUG #log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG #log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG #log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG #log4j.logger.java.sql.Connection=DEBUG #log4j.logger.java.sql.Statement=DEBUG #log4j.logger.java.sql.PreparedStatement=DEBUG #log4j.logger.java.sql.ResultSet=DEBUG # Console output... log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=[%d] %5p [%t] - %m%n log4j.appender.CONSOLE.Target=System.out log4j.appender.CONSOLE.Encoding=GBK # file output log4j.appender.file.Encoding=GBK log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.File=D://MyProject//sxzq//coding//log//log.log log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=[%d] [%c] [%t] %r %p - %m%n 这里只是一个示范,请根据实际情况自行修改 4.1.2.9. IBATIS使用应用服务器的数据源 以上IBATIS数据库配置没有使用应用服务器的数据源,如果需要使用数据源,请自行查看IBATIS文档进行配置 IBATIS版CMS使用指南 13 4.2. 一般展现 4.2.1. 根据docId获得Document对象 DocumentManager dm=DocumentManager.getDocumentManager(); Document doc = dm.getDocument(docId); 然后根据Document的API得到doc的相应属性和内容 4.2.2. 根据DQL搜索 ? DQL类似于原来的表达式,即搜索的条件串,例如: (attr.name.state=1) and (attr.name.is_delete=0) (attr.name.state in (0,1)) and (category.id=103) (attr.name.state=1) and (attr.name.importance in (0,1,2) and (category.id in (103,104)) ? 利用DQL构造ExtractKey对象 ExtractKey eKey = new ExtractKey (String dql,String[] attrsName,boolean[] modes,String what,String idx,boolean catCriticalCount) ; dql:DQL条件串,即搜索的条件 attrsName:排序的属性名,即按照什么条件排序,可按照多属性排序 modes:true为升序,false为降序,与attrsName中的属性一一对应 what:可以指定为以下两个值 1.DocumentExtractor.RETURN_RESULT_STYLE_BASE: 只加载config_attr_map.xml中level标记为base的属性,不加载分类信息 2.DocumentExtractor. RETURN_RESULT_STYLE_SIMPLE 加载level为base和simple的属性,同时加载分类信息 idx:指定搜索用到的数据库索引 catCriticalCount:搜索栏目所包含的文档数是否大于临界值 ? Provider类调用DocumentExtractor.extract(ExtractKey key ,int index ,int count)方法,获得 ListData index和count参数由Provider类的doFetch(int index ,int count)方法传入,ListData中包 含的是Document对象 ? JSP页面配合分页标签调用Provider类,获得文档列表展现,例如 provider=\ ? 由于性能问题,新版CMS不再提供搜索结果的总数,所以要使用新的分页标签,使用 count=\属性,不要再显示总页数信息 IBATIS版CMS使用指南 14 4.2.3. 使用已有的Provider类 为方便使用,已经写好了两个通用的Provider类,可以满足大部分项目的需要,这两个已有的Provider类分别是: 4.2.3.1. com.css.cms.document.model.DocumentFrontListProvider ? 用于前台的文档列表搜索 ? 根据栏目、重要程度、文档类型三个条件任意组合进行搜索,自动补充未删除(is_delete=0) 和已审核(state=1)两个条件,按照发布时间(upload_date)降序排列 ? DocumentFrontListProvider的调用参数为request,自动接收whichCat(栏目), importance(重要程度),docType(文档类型)参数,栏目和重要程度均可以是一个或多个,多个用\分隔,栏目可以是栏目ID或栏目名 4.2.3.2. com.css.cms.document.model.DocumentAdminListProvider ? 用于后台的文档列表搜索和高级查询 ? 对于一般列表,根据栏目、审核状态、上传者、文档类型搜索,自动补充未删除 (is_delete=0),按照发布时间(upload_date)降序排列 ? 对于垃圾箱(用于列出已删除的文档),根据栏目、删除状态搜索,按照发布时间 (upload_date)降序排列 ? 对于高级查询,根据request搜索,request中的值参见DocumentAdminListProvider的 API文档 4.2.4. 编写自己的Provider类 如果需要特殊搜索方法,可以在项目中写自己的Provider,但要放到自己的包中,不要放在com.css.cms.document.model中。 首先根据3.2.2中的步骤,根据条件得到DQL,构造ExtractKey对象,在doFetch方法中调用DocumentExtractor.extract(ExtractKey key ,int index ,int count)方法,获得ListData。 4.3. 增删改维护 4.3.1. 添加文档 4.3.1.1. 添加文档的接口 添加文档的接口很简单,构造好一个Document对象doc后,调用以下方法: DocumentManager dm=DocumentManager.getDocumentManager(); dm.addDocument(doc); IBATIS版CMS使用指南 15 4.3.1.2. 通过页面添加文档 DocumentManager dm=DocumentManager.getDocumentManager(); 使用DocumentManager 的以下两个方法构造Document对象:: /*无附件*/ Document doc = dm.getDocument(ServletRequest request) ; /*有附件*/ Document doc = dm.getDocument(ServletRequest request, Attachment[] attachs) ; dm.addDocument(doc); com.css.cms.document.action.AddDocumentAction已经提供了默认实现。 4.3.1.3. 外部资讯导入文档 DocumentManager dm=DocumentManager.getDocumentManager(); 使用DocumentManager 的以下两个方法构造Document对象:: /*无附件*/ Document doc = dm.getDocument(Map attrs, DocBody body, long[] cats) ; /*有附件*/ Document doc = dm.getDocument(Map attrs, DocBody body, Attachment[] attachs , long[] cats) ; dm.addDocument(doc); 4.3.2. 修改文档 类似于添加文档,构造好好一个Document对象doc后,调用以下方法: DocumentManager dm=DocumentManager.getDocumentManager(); dm.modifyDocument (doc); 区别在于这个doc对象需要设置docId,而添加时因为还没有docId所以不用设置。 com.css.cms.document.action.ModifyDocumentAction已经提供了默认实现。 4.3.3. 删除文档 4.3.3.1. 标记删除 标记删除只修改属性的is_delete字段为1,其他所有关联表不变,可以恢复。 DocumentManager dm=DocumentManager.getDocumentManager(); /*删除一篇文档*/ dm.deleteDocument(long id); /*删除一组文档*/ dm.deleteDocument(long[] id); com.css.cms.document.action.DeleteDocumentAction已经提供了默认实现。 IBATIS版CMS使用指南 21 ( CAT_ID NUMBER(10) not null, DOC_ID NUMBER(10) not null ) tablespace CITICSDB pctfree 10 initrans 1 maxtrans 255 storage ( initial 64K minextents 1 maxextents unlimited ); alter table CITICSDB.CMS_DOC_CATEGORY_MAP add constraint PK_CMS_DOC_CATMAP primary key (CAT_ID, DOC_ID) using index tablespace CITICSIDX pctfree 10 initrans 2 maxtrans 255 storage ( initial 64K minextents 1 maxextents unlimited ); create index CITICSDB.IDX_CMS_DOC_CATMAP_CAT on tablespace CITICSIDX pctfree 10 initrans 2 maxtrans 255 storage ( initial 64K minextents 1 maxextents unlimited ); create index CITICSDB.IDX_CMS_DOC_CATMAP_DOC on tablespace CITICSIDX pctfree 10 initrans 2 CITICSDB.CMS_DOC_CATEGORY_MAP (CAT_ID) CITICSDB.CMS_DOC_CATEGORY_MAP (DOC_ID) IBATIS版CMS使用指南 22 maxtrans 255 storage ( initial 64K minextents 1 maxextents unlimited ); prompt prompt Creating table CMS_DOC_MULTI_ATTR_AUTHOR prompt ======================================== prompt create table CITICSDB.CMS_DOC_MULTI_ATTR_AUTHOR ( DOC_ID NUMBER(10) not null, AUTHOR VARCHAR2(50) not null ) tablespace CITICSDB pctfree 10 initrans 1 maxtrans 255 storage ( initial 64K minextents 1 maxextents unlimited ); alter table CITICSDB.CMS_DOC_MULTI_ATTR_AUTHOR add constraint PK_CMS_MULTI_ATTR_AUTHOR primary key (DOC_ID, using index tablespace CITICSIDX pctfree 10 initrans 2 maxtrans 255 storage ( initial 64K minextents 1 maxextents unlimited ); create index CITICSDB.IDX_CMS_DOC_AUTHOR_AUTHOR on tablespace CITICSIDX AUTHOR) CITICSDB.CMS_DOC_MULTI_ATTR_AUTHOR (AUTHOR) IBATIS版CMS使用指南 23 pctfree 10 initrans 2 maxtrans 255 storage ( initial 64K minextents 1 maxextents unlimited ); create index CITICSDB.IDX_CMS_DOC_AUTHOR_DOCID on tablespace CITICSIDX pctfree 10 initrans 2 maxtrans 255 storage ( initial 64K minextents 1 maxextents unlimited ); prompt prompt Creating table CMS_DOC_MULTI_ATTR_KEYWORD prompt ========================================= prompt create table CITICSDB.CMS_DOC_MULTI_ATTR_KEYWORD ( DOC_ID NUMBER(10) not null, KEY_WORD VARCHAR2(50) not null ) tablespace CITICSDB pctfree 10 initrans 1 maxtrans 255 storage ( initial 64K minextents 1 maxextents unlimited ); alter table CITICSDB.CMS_DOC_MULTI_ATTR_KEYWORD add constraint PK_CMS_DOC_MULTI_ATTR_KEYWORD primary key (DOC_ID, CITICSDB.CMS_DOC_MULTI_ATTR_AUTHOR (DOC_ID) KEY_WORD) IBATIS版CMS使用指南 24 using index tablespace CITICSIDX pctfree 10 initrans 2 maxtrans 255 storage ( initial 64K minextents 1 maxextents unlimited ); create index CITICSDB.IDX_CMS_DOC_KEYWORD_DOCID on tablespace CITICSIDX pctfree 10 initrans 2 maxtrans 255 storage ( initial 64K minextents 1 maxextents unlimited ); create index CITICSDB.IDX_CMS_DOC_KEYWORD_KEYWORD on tablespace CITICSIDX pctfree 10 initrans 2 maxtrans 255 storage ( initial 64K minextents 1 maxextents unlimited ); prompt prompt Creating table CMS_DOC_MULTI_ATTR_STOCKID prompt ========================================= prompt create table CITICSDB.CMS_DOC_MULTI_ATTR_STOCKID ( DOC_ID NUMBER(10) not null, STOCK_ID VARCHAR2(50) not null CITICSDB.CMS_DOC_MULTI_ATTR_KEYWORD (DOC_ID) CITICSDB.CMS_DOC_MULTI_ATTR_KEYWORD (KEY_WORD) IBATIS版CMS使用指南 25 ) tablespace CITICSDB pctfree 10 initrans 1 maxtrans 255 storage ( initial 64K minextents 1 maxextents unlimited ); alter table CITICSDB.CMS_DOC_MULTI_ATTR_STOCKID add constraint PK_CMS_DOC_MULTI_ATTR_STOCKID primary key (DOC_ID, using index tablespace CITICSIDX pctfree 10 initrans 2 maxtrans 255 storage ( initial 64K minextents 1 maxextents unlimited ); create index CITICSDB.IDX_CMS_DOC_STOCKID_DOCID on tablespace CITICSIDX pctfree 10 initrans 2 maxtrans 255 storage ( initial 64K minextents 1 maxextents unlimited ); create index CITICSDB.IDX_CMS_DOC_STOCKID_STOCKID on tablespace CITICSIDX pctfree 10 initrans 2 maxtrans 255 storage STOCK_ID) CITICSDB.CMS_DOC_MULTI_ATTR_STOCKID (DOC_ID) CITICSDB.CMS_DOC_MULTI_ATTR_STOCKID (STOCK_ID)
正在阅读:
IBATIS版CMS使用指南10-20
中国工会与外国工会的区别04-26
T梁预应力张拉计算示例04-19
炒股大赛02-17
2018-2024年中国全息投影行业深度研究与发展前景报告(目录)01-01
湖畔的四季作文600字07-03
扫盲语文教案10-07
县农业农村局最新半年工作总结及2022年工作规划范本04-04
2011年1月国内国际时事政治热点汇总03-10
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 使用指南
- IBATIS
- CMS
- 贵定县新铺中学岗位设置方案
- 行业网站建设策划方案
- 子网划分经典例子
- 五大桩坐标推算
- 2018版中国牛羊肉行业深度行业竞争对手分析报告目录
- 九年级化学上册2.1.1空气是由什么组成的学案2(无答案)(新版)新人教版
- 旅游委托协议书
- 2009-2010宣传部综测加分证明
- 15春西南交《基础工程(道桥)》在线作业一 答案
- subversion-1.8.9 - 安装步骤
- 农村信用社不良资产监测和考核办法
- 染整工艺原理考试复习重点
- 利用英文全文数据库 - Elsevier
- 青协暑期支教策划
- 小摄影师说课稿
- 样本1 - 图文
- 日照市公安局交通警察支队智能管控系统设备采购需求 - 图文
- 人心向往真
- 浙江省中小学心理健康教育教师上岗培训笔试试卷论述题
- 李景宁主编第五版有机化学11-14章复习资料