# 数据库操作
本文作者:youhong.ai (opens new window)
部门: 上海大区EBU7部开发1部
职位: 开发工程师
对系统做二开基本上都是需要与数据库进行交互的,所以要对系统开发,就一定要知道如何在ecology中使用代码操作数据库数据(CRUD
),这一章就是对数据库操作做一个简单的说明和讲解
# 数据库表结构
ecology有很多表,这里对几个常用的表进行一定的讲解
# 用户表
用户表 hrmresource
用户是oa系统中最重要的一个元素,在系统中存储用户的表为hrmresource
表,表信息如下
序号 | 数据库列名 | 中文名称 | 数据类型 | 长度 | 是否允许空值 | 是否为外键 | 是否自增长 | 默认值 | 说明 |
1 | haschangepwd | 密码是否已经改过 | varchar2 | 80 | 是 | 否 | 否 | 密码是否已经改过 | |
2 | created | 创建时间 | timestamp(6) | 11 | 是 | 否 | 否 | 创建时间 | |
3 | creater | 创建人id | integer | 是 | 否 | 否 | 创建人id | ||
4 | modified | 修改时间 | timestamp(6) | 11 | 是 | 否 | 否 | 修改时间 | |
5 | modifier | 修改人id | integer | 是 | 否 | 否 | 修改人id | ||
6 | passwordlocktime | 密码锁定时间 | date | 7 | 是 | 否 | 否 | 密码锁定时间 | |
7 | salt | 加盐 | varchar2 | 800 | 是 | 否 | 否 | 加盐 | |
8 | mobilecaflag | 未知字段 | varchar2 | 80 | 是 | 否 | 否 | 未知字段 | |
9 | companystartdate | 公司开始日期 | char | 10 | 是 | 否 | 否 | 公司开始日期 | |
10 | companyworkyear | 公司年限 | number | (4,2) | 是 | 否 | 否 | 公司年限 | |
11 | workstartdate | 工作开始日期 | char | 10 | 是 | 否 | 否 | 工作开始日期 | |
12 | workyear | 工作年限 | number | (4,2) | 是 | 否 | 否 | 工作年限 | |
13 | secondarypwd | 第二密码 | varchar2 | 100 | 是 | 否 | 否 | 第二密码 | |
14 | usesecondarypwd | 使用第二密码 | integer | 是 | 否 | 否 | 使用第二密码 | ||
15 | usekind | 用工性质 | integer | 是 | 否 | 否 | 用工性质 | ||
16 | jobcall | 职称 | integer | 是 | 否 | 否 | 职称 | ||
17 | accumfundaccount | 公积金帐号 | varchar2 | 240 | 是 | 否 | 否 | 公积金帐号 | |
18 | birthplace | 出生地 | varchar2 | 480 | 是 | 否 | 否 | 出生地 | |
19 | folk | 民族 | varchar2 | 240 | 是 | 否 | 否 | 民族 | |
20 | residentphone | 居住地电话 | varchar2 | 480 | 是 | 否 | 否 | 居住地电话 | |
21 | residentpostcode | 居住地邮编 | varchar2 | 480 | 是 | 否 | 否 | 居住地邮编 | |
22 | extphone | 分机 | varchar2 | 400 | 是 | 否 | 否 | 分机 | |
23 | managerstr | 所有上级 | varchar2 | 1000 | 是 | 否 | 否 | 所有上级 | |
24 | status | 状态 | integer | 是 | 否 | 否 | 0:试用 1:正式 2:临时 3:试用延期 4:解聘 5:离职 6:退休 7:无效 | ||
25 | fax | 传真 | varchar2 | 480 | 是 | 否 | 否 | 传真 | |
26 | islabouunion | 是否为工会会员 | char | 1 | 是 | 否 | 否 | 是否为工会会员 | |
27 | weight | 体重 | integer | 是 | 否 | 否 | 体重 | ||
28 | tempresidentnumber | 暂住证号码 | varchar2 | 480 | 是 | 否 | 否 | 暂住证号码 | |
29 | probationenddate | 试用期结束日期 | char | 10 | 是 | 否 | 否 | 试用期结束日期 | |
30 | countryid | 国家id | integer | 是 | 否 | 否 | 1 | 国家id | |
31 | passwdchgdate | 密码改变日期 | char | 10 | 是 | 否 | 否 | 密码改变日期 | |
32 | needusb | 是否需要usb | integer | 是 | 否 | 否 | 是否需要usb | ||
33 | serial | usb相关 | varchar2 | 256 | 是 | 否 | 否 | usb相关 | |
34 | account | AD域账号 | varchar2 | 60 | 是 | 否 | 否 | AD域账号 | |
35 | lloginid | 上次系统账号 | varchar2 | 480 | 是 | 否 | 否 | 上次系统账号 | |
36 | needdynapass | 是否使用动态密码 | integer | 是 | 否 | 否 | 是否使用动态密码 | ||
37 | dsporder | 显示顺序 | float | 22 | 是 | 否 | 否 | 显示顺序 | |
38 | passwordstate | 动态密码状态 | integer | 是 | 否 | 否 | 0:启用,1:停止(默认),2:网段策略 | ||
39 | accounttype | 帐号类型 | integer | 是 | 否 | 否 | 0或者为空:主账号,1:次账号 | ||
40 | belongto | 所属主帐号 | integer | 是 | 否 | 否 | hrmreource表id | ||
41 | dactylogram | 主指纹 | varchar2 | 4000 | 是 | 否 | 否 | 主指纹 | |
42 | assistantdactylogram | 次指纹 | varchar2 | 4000 | 是 | 否 | 否 | 次指纹 | |
43 | passwordlock | 密码锁定标记 | integer | 是 | 否 | 否 | 密码锁定标记 | ||
44 | sumpasswordwrong | 连续错误次数 | integer | 是 | 否 | 否 | 连续错误次数 | ||
45 | oldpassword1 | 旧密码1 | varchar2 | 800 | 是 | 否 | 否 | 旧密码1 | |
46 | oldpassword2 | 旧密码2 | varchar2 | 800 | 是 | 否 | 否 | 旧密码2 | |
47 | msgstyle | 未知字段 | varchar2 | 160 | 是 | 否 | 否 | 未知字段 | |
48 | messagerurl | 人员头像存储地址 | varchar2 | 800 | 是 | 否 | 否 | 人员头像存储地址 | |
49 | pinyinlastname | 人员姓名拼音首字母 | varchar2 | 50 | 是 | 否 | 否 | 人员姓名拼音首字母 | |
50 | tokenkey | 动态令牌序列号 | varchar2 | 800 | 是 | 否 | 否 | 动态令牌序列号 | |
51 | userusbtype | usb类型 | varchar2 | 80 | 是 | 否 | 否 | 1-微步key 2-海泰key 3-动态令牌 4-动态密码 | |
52 | outkey | 外键与集成相关 | varchar2 | 800 | 是 | 否 | 否 | 外键与集成相关 | |
53 | adsjgs | ad同步上级公司 | varchar2 | 1000 | 是 | 否 | 否 | ad同步上级公司 | |
54 | adgs | ad同步公司 | varchar2 | 1000 | 是 | 否 | 否 | ad同步公司 | |
55 | adbm | ad同步部门 | varchar2 | 1000 | 是 | 否 | 否 | ad同步部门 | |
56 | mobileshowtype | 移动电话显示类型 | integer | 是 | 否 | 否 | 移动电话显示类型 | ||
57 | usbstate | usb启用策略 | integer | 是 | 否 | 否 | 0-启用 1-禁用 2-网段策略 | ||
58 | totalspace | 未知字段 | float | 22 | 是 | 否 | 否 | 100 | 未知字段 |
59 | occupyspace | 未知字段 | float | 22 | 是 | 否 | 否 | 0 | 未知字段 |
60 | ecology_pinyin_search | 人员浏览按钮模糊搜索拼音首字母 | varchar2 | 1000 | 是 | 否 | 否 | 人员浏览按钮模糊搜索拼音首字母 | |
61 | isadaccount | 是否是ad账号 | char | 1 | 是 | 否 | 否 | 是否是ad账号 | |
62 | accountname | 工资账号户名 | varchar2 | 1000 | 是 | 否 | 否 | 工资账号户名 | |
63 | id | ID | integer | 否 | 否 | 否 | ID | ||
64 | loginid | 系统登陆帐号 | varchar2 | 60 | 是 | 否 | 否 | 系统登陆帐号 | |
65 | password | 系统登陆密码 | varchar2 | 800 | 是 | 否 | 否 | 系统登陆密码 | |
66 | lastname | 名 | varchar2 | 60 | 是 | 否 | 否 | 名 | |
67 | sex | 性别 | char | 1 | 是 | 否 | 否 | 性别 | |
68 | birthday | 生日 | char | 10 | 是 | 否 | 否 | 生日 | |
69 | nationality | 国籍 | integer | 是 | 否 | 否 | 国籍 | ||
70 | systemlanguage | 系统语言 | integer | 是 | 否 | 否 | 系统语言 | ||
71 | maritalstatus | 婚姻状况 | char | 1 | 是 | 否 | 否 | 婚姻状况 | |
72 | telephone | 电话 | varchar2 | 480 | 是 | 否 | 否 | 电话 | |
73 | mobile | 手机 | varchar2 | 480 | 是 | 否 | 否 | 手机 | |
74 | mobilecall | 其他电话 | varchar2 | 480 | 是 | 否 | 否 | 其他电话 | |
75 | 电子邮件 | varchar2 | 480 | 是 | 否 | 否 | 电子邮件 | ||
76 | locationid | 工作地点 | integer | 是 | 否 | 否 | 工作地点 | ||
77 | workroom | 办公室 | varchar2 | 480 | 是 | 否 | 否 | 办公室 | |
78 | homeaddress | 家庭住址 | varchar2 | 800 | 是 | 否 | 否 | 家庭住址 | |
79 | resourcetype | 用户类别 | char | 1 | 是 | 否 | 否 | 用户类别 | |
80 | startdate | 合同开始日期 | char | 10 | 是 | 否 | 否 | 合同开始日期 | |
81 | enddate | 合同结束日期 | char | 10 | 是 | 否 | 否 | 合同结束日期 | |
82 | jobtitle | 岗位 | integer | 是 | 否 | 否 | 岗位 | ||
83 | jobactivitydesc | 职责描述 | varchar2 | 1000 | 是 | 否 | 否 | 职责描述 | |
84 | joblevel | 工作级别 | integer | 是 | 否 | 否 | 工作级别 | ||
85 | seclevel | 安全级别 | integer | 是 | 否 | 否 | 安全级别 | ||
86 | departmentid | 所属部门 | integer | 是 | 否 | 否 | 所属部门 | ||
87 | subcompanyid1 | 所属分部1 | integer | 是 | 否 | 否 | 所属分部1 | ||
88 | costcenterid | 所属成本中心 | integer | 是 | 否 | 否 | 所属成本中心 | ||
89 | managerid | 经理 | integer | 是 | 否 | 否 | 直接上级 | ||
90 | assistantid | 助理 | integer | 是 | 否 | 否 | 助理 | ||
91 | bankid1 | 工资银行1 | integer | 是 | 否 | 否 | 工资银行1 | ||
92 | accountid1 | 工资帐号1 | varchar2 | 800 | 是 | 否 | 否 | 工资帐号1 | |
93 | resourceimageid | 照片id | integer | 是 | 否 | 否 | 人员的照片存放附件id,和文档附件imagefileid表关联 | ||
94 | createrid | 创建人id | integer | 是 | 否 | 否 | 创建人id | ||
95 | createdate | 创建日期 | char | 10 | 是 | 否 | 否 | 创建日期 | |
96 | lastmodid | 最后修改人id | integer | 是 | 否 | 否 | 最后修改人id | ||
97 | lastmoddate | 最后修改日期 | char | 10 | 是 | 否 | 否 | 最后修改日期 | |
98 | lastlogindate | 最后登陆日期 | char | 10 | 是 | 否 | 否 | 最后登陆日期 | |
99 | datefield1 | 自定义日期1 | varchar2 | 80 | 是 | 否 | 否 | 自定义日期1 | |
100 | datefield2 | 自定义日期2 | varchar2 | 80 | 是 | 否 | 否 | 自定义日期2 | |
101 | datefield3 | 自定义日期3 | varchar2 | 80 | 是 | 否 | 否 | 自定义日期3 | |
102 | datefield4 | 自定义日期4 | varchar2 | 80 | 是 | 否 | 否 | 自定义日期4 | |
103 | datefield5 | 自定义日期5 | varchar2 | 80 | 是 | 否 | 否 | 自定义日期5 | |
104 | numberfield1 | 自定义数字1 | float | 22 | 是 | 否 | 否 | 自定义数字1 | |
105 | numberfield2 | 自定义数字2 | float | 22 | 是 | 否 | 否 | 自定义数字2 | |
106 | numberfield3 | 自定义数字3 | float | 22 | 是 | 否 | 否 | 自定义数字3 | |
107 | numberfield4 | 自定义数字4 | float | 22 | 是 | 否 | 否 | 自定义数字4 | |
108 | numberfield5 | 自定义数字5 | float | 22 | 是 | 否 | 否 | 自定义数字5 | |
109 | textfield1 | 自定义文本1 | varchar2 | 800 | 是 | 否 | 否 | 自定义文本1 | |
110 | textfield2 | 自定义文本2 | varchar2 | 800 | 是 | 否 | 否 | 自定义文本2 | |
111 | textfield3 | 自定义文本3 | varchar2 | 800 | 是 | 否 | 否 | 自定义文本3 | |
112 | textfield4 | 自定义文本4 | varchar2 | 800 | 是 | 否 | 否 | 自定义文本4 | |
113 | textfield5 | 自定义文本5 | varchar2 | 800 | 是 | 否 | 否 | 自定义文本5 | |
114 | tinyintfield1 | 自定义判断1 | integer | 是 | 否 | 否 | 自定义判断1 | ||
115 | tinyintfield2 | 自定义判断2 | integer | 是 | 否 | 否 | 自定义判断2 | ||
116 | tinyintfield3 | 自定义判断3 | integer | 是 | 否 | 否 | 自定义判断3 | ||
117 | tinyintfield4 | 自定义判断4 | integer | 是 | 否 | 否 | 自定义判断4 | ||
118 | tinyintfield5 | 自定义判断5 | integer | 是 | 否 | 否 | 自定义判断5 | ||
119 | certificatenum | 身份证号码 | varchar2 | 480 | 是 | 否 | 否 | 身份证号码 | |
120 | nativeplace | 籍贯 | varchar2 | 800 | 是 | 否 | 否 | 籍贯 | |
121 | educationlevel | 学历 | integer | 是 | 否 | 否 | 学历 | ||
122 | bememberdate | 入团时间 | char | 10 | 是 | 否 | 否 | 入团时间 | |
123 | bepartydate | 入党时间 | char | 10 | 是 | 否 | 否 | 入党时间 | |
124 | workcode | 编号 | varchar2 | 480 | 是 | 否 | 否 | 编号 | |
125 | regresidentplace | 户口 | varchar2 | 1000 | 是 | 否 | 否 | 户口 | |
126 | healthinfo | 健康状况 | char | 1 | 是 | 否 | 否 | 健康状况 | |
127 | residentplace | 居住地 | varchar2 | 1000 | 是 | 否 | 否 | 居住地 | |
128 | policy | 政治面貌 | varchar2 | 240 | 是 | 否 | 否 | 政治面貌 | |
129 | degree | 学位 | varchar2 | 240 | 是 | 否 | 否 | 学位 | |
130 | height | 身高 | varchar2 | 80 | 是 | 否 | 否 | 身高 |
# 流程基本信息表
流程类型表 (工作流基本信息表) workflow_base
序号 | 数据库列名 | 中文名称 | 数据类型 | 长度 | 是否允许空值 | 是否为外键 | 是否自增长 | 默认值 | 说明 |
---|---|---|---|---|---|---|---|---|---|
1 | isshowsrc | 显示意见来源 | varchar2 | 8 | 是 | 否 | 否 | ||
2 | sendtomessagetype | 消息类型 | char | 1 | 是 | 否 | 否 | ||
3 | islockworkflow | 流程锁定 | char | 1 | 是 | 否 | 否 | ||
4 | limitvalue | 限制附件上传格式 | varchar2 | 2000 | 是 | 否 | 否 | ||
5 | locknodes | 流程编辑锁定 | varchar2 | 2000 | 是 | 否 | 否 | ||
6 | tracefieldid | 痕迹正文字段 | integer | 是 | 否 | 否 | |||
7 | tracesavesecid | 痕迹正文保存目录 | integer | 是 | 否 | 否 | |||
8 | tracecategorytype | 痕迹正文保存目录类型 | char | 1 | 是 | 否 | 否 | ||
9 | tracecategoryfieldid | 痕迹正文保存目录字段ID | integer | 是 | 否 | 否 | |||
10 | tracedocownertype | 痕迹正文所有者类型 | integer | 是 | 否 | 否 | |||
11 | tracedocownerfieldid | 痕迹正文所有者字段 | integer | 是 | 否 | 否 | |||
12 | tracedocowner | 痕迹正文所有者 | integer | 是 | 否 | 否 | |||
13 | titletemplate | 标题模版 | clob | 4000 | 是 | 否 | 否 | ||
14 | freewftype | 自由流程的模式 | char | 1 | 是 | 否 | 否 | 1:简易模式,2:高级模式 | |
15 | titleset | 自定义模式 | char | 1 | 是 | 否 | 否 | 0或空为默认模式 | |
16 | isautoremark | 自动填写户最后一次手动操作的意见 | char | 1 | 是 | 否 | 否 | ||
17 | importreadonlyfield | 允许导入数据到只读字段 | char | 1 | 是 | 否 | 否 | 1:是 其他:否 | |
18 | enablesignature | test | char | 1 | 是 | 否 | 否 | ||
19 | issmsremind | 是否开启短信提醒 | char | 1 | 是 | 否 | 否 | ||
20 | iswechatremind | 是否开启微信提醒 | char | 1 | 是 | 否 | 否 | ||
21 | isemailremind | 是否开启邮件提醒 | char | 1 | 是 | 否 | 否 | ||
22 | isdefaultsmsremind | 短信默认提醒 | char | 1 | 是 | 否 | 否 | ||
23 | isdefaultwechatremind | 微信默认提醒 | char | 1 | 是 | 否 | 否 | ||
24 | isdefaultemailremind | 邮件默认提醒 | char | 1 | 是 | 否 | 否 | ||
25 | isarchivenoremind | 归档节点不需提醒 | char | 1 | 是 | 否 | 否 | ||
26 | isccnoremind | 抄送人不需提醒 | char | 1 | 是 | 否 | 否 | ||
27 | ischosereminder | 由操作者选择提醒接收人 | char | 1 | 是 | 否 | 否 | ||
28 | alterremindnodestype | 允许修改提醒的节点类型 | char | 1 | 是 | 否 | 否 | 0:全部,1:选择 | |
29 | alterremindnodes | 选择提醒的节点id,用“,”间隔 | varchar2 | 1000 | 是 | 否 | 否 | ||
30 | submittype | 批量提交启用节点 | integer | 是 | 否 | 否 | 0:全部,1:选择 2:排除 | ||
31 | hrmconditionshowtype | 人力资源条件显示设置 | char | 1 | 是 | 否 | 否 | ||
32 | defaultnameruletype | 标题设置规则 | char | 1 | 是 | 否 | 否 | 0 | |
33 | isreaffirm | test | char | 1 | 是 | 否 | 否 | 0 | |
34 | isonlyoneautoapprove | 仅当后续节点操作者为本人一人时自动处理 | char | 1 | 是 | 否 | 否 | ||
35 | isopencommunication | 是否启用相关交流 | integer | 是 | 否 | 否 | |||
36 | isselectrejectnode | 退回时是否可选择退回节点 | char | 1 | 是 | 否 | 否 | ||
37 | forbidattdownload | 禁止附件批量下载 | integer | 是 | 否 | 否 | 0 | ||
38 | isimportdetail | 是否导入明细 | char | 1 | 是 | 否 | 否 | ||
39 | specialapproval | 是否特批件 | char | 1 | 是 | 否 | 否 | 1:是,0或其他:否 | |
40 | frequency | 次数 | integer | 是 | 否 | 否 | |||
41 | cycle | 周期 | char | 1 | 是 | 否 | 否 | ||
42 | nosynfields | 不需同步字段 | varchar2 | 2000 | 是 | 否 | 否 | ||
43 | isneeddelacc | 设置是否流程删除时相关的附件 | varchar2 | 8 | 是 | 否 | 否 | ||
44 | sapsource | sap数据源 | varchar2 | 160 | 是 | 否 | 否 | ||
45 | isfnacontrol | 是否需要预算控制 | char | 1 | 是 | 否 | 否 | ||
46 | fnanodeid | 预算节点id | varchar2 | 4000 | 是 | 否 | 否 | ||
47 | fnadepartmentid | 预算部门id | varchar2 | 4000 | 是 | 否 | 否 | ||
48 | smsalertstype | 设置短信提醒方式 | char | 1 | 是 | 否 | 否 | ||
49 | forwardreceivedef | 转发接收定义 | char | 1 | 是 | 否 | 否 | ||
50 | issavecheckform | 流程保存是否验证必填 | char | 1 | 是 | 否 | 否 | 0:否 1:是 | |
51 | archivenomsgalert | 归档节点不需短信提醒 | char | 1 | 是 | 否 | 否 | 0:否 1:是 流程提醒改造前使用字段, | |
52 | archivenomailalert | 归档节点不需邮件提醒 | char | 1 | 是 | 否 | 否 | 0:否 1:是 流程提醒改造前使用字段, | |
53 | isfnabudgetwf | 是否是费控流程 | char | 1 | 是 | 否 | 否 | ||
54 | chatstype | 是否微信提醒 | integer | 是 | 否 | 否 | 流程提醒改造前使用字段, | ||
55 | chatsalerttype | 微信提醒类型 | integer | 是 | 否 | 否 | 流程提醒改造前使用字段, | ||
56 | notremindifarchived | 归档节点不需微信提醒 | integer | 是 | 否 | 否 | 流程提醒改造前使用字段, | ||
57 | isworkflowdoc | 是否是公文流程 | integer | 是 | 否 | 否 | |||
58 | version | 版本号 | integer | 是 | 否 | 否 | |||
59 | activeversionid | 当前流程所属活动版本id | integer | 是 | 否 | 否 | |||
60 | versiondescription | 版本介绍 | varchar2 | 1000 | 是 | 否 | 否 | ||
61 | versioncreater | 版本创建人 | integer | 是 | 否 | 否 | |||
dsporder | 显示顺序 | integer | 是 | 否 | 否 | ||||
63 | fieldnotimport | 无需导入字段 | varchar2 | 4000 | 是 | 否 | 否 | ||
64 | isfree | 是否是自由流程 | char | 1 | 是 | 否 | 否 | 0 | |
65 | ecology_pinyin_search | 流程名称拼音缩写-用于快速搜索 | varchar2 | 1000 | 是 | 否 | 否 | ||
66 | officaltype | 公文类型 | integer | 是 | 否 | 否 | |||
67 | custompage4emoble | 手机版用自定义页面 | varchar2 | 2000 | 是 | 否 | 否 | ||
68 | isupdatetitle | 是否修改过流程标题字段 | integer | 是 | 否 | 否 | 1 | 0或者空:未修改过流程标题字段 1:修改了流程标题字段 | |
69 | isshared | 是否允许共享 | char | 1 | 是 | 否 | 否 | ||
70 | isoverrb | 归档收回 | char | 1 | 是 | 否 | 否 | ||
71 | isoveriv | 归档干预 | char | 1 | 是 | 否 | 否 | ||
72 | showcharturl | 显示流程图 | varchar2 | 4000 | 是 | 否 | 否 | ||
73 | isautoapprove | 自动批准 | char | 1 | 是 | 否 | 否 | ||
74 | isautocommit | 自动提交 | char | 1 | 是 | 否 | 否 | ||
75 | id | ID | integer | 否 | 否 | 否 | |||
76 | workflowname | 工作流名称 | varchar2 | 1000 | 是 | 否 | 否 | ||
77 | workflowdesc | 工作流描述 | varchar2 | 1000 | 是 | 否 | 否 | ||
78 | workflowtype | 所属工作流种类 | integer | 是 | 否 | 否 | |||
79 | securelevel | 安全级别 | varchar2 | 24 | 是 | 否 | 否 | ||
80 | formid | 表单或单据id | integer | 是 | 否 | 否 | |||
81 | userid | 创建人id | integer | 是 | 否 | 否 | |||
82 | isbill | 单据还是表单 | char | 1 | 是 | 否 | 否 | 0:表单1:单据 | |
83 | iscust | 是否为门户工作流 | integer | 是 | 否 | 否 | 0:否 1:是 | ||
84 | helpdocid | 工作流帮助文档id | integer | 是 | 否 | 否 | |||
85 | isvalid | 是否有效 | char | 1 | 是 | 否 | 否 | 0:否 1:是 | |
86 | needmark | 是否需要编号 | char | 1 | 是 | 否 | 否 | 0:否 1:是 | |
87 | messagetype | 否短信提醒 | integer | 是 | 否 | 否 | 0:否 1:是 | ||
88 | multisubmit | 是否批量提交 | integer | 是 | 否 | 否 | 0:否 1:是 | ||
89 | defaultname | 是否默认说明 | integer | 是 | 否 | 否 | 0:否 1:是 | ||
90 | docpath | 附件上传目录名称 | varchar2 | 2000 | 是 | 否 | 否 | ||
91 | subcompanyid | 分部id | integer | 是 | 否 | 否 | |||
92 | mailmessagetype | 是否邮件提醒 | integer | 是 | 否 | 否 | 0:否 1:是 | ||
93 | docrightbyoperator | 是否跟随文档关联 | integer | 是 | 否 | 否 | 0:否 1:是 | ||
94 | doccategory | 附件上传目录id | varchar2 | 1000 | 是 | 否 | 否 | ||
95 | istemplate | 是否为流程模板 | char | 1 | 是 | 否 | 否 | 0:否 1:是 | |
96 | templateid | 流程引用模板id | integer | 是 | 否 | 否 | |||
97 | catelogtype | 附件上传目录类型 | integer | 是 | 否 | 否 | 0:固定目录 1:选择目录 | ||
98 | selectedcatelog | 所选择目录的对应的id | integer | 是 | 否 | 否 | |||
99 | docrightbyhrmresource | 是否按人力资源字段附权 | integer | 是 | 否 | 否 | 默认为不启用 | ||
100 | needaffirmance | 是否需要提交确认 | char | 1 | 是 | 否 | 否 | 0:否 1:是 | |
101 | isremarks | 是否允许已办及办结事宜转发 | char | 1 | 是 | 否 | 否 | ||
102 | isannexupload | 是否允许签字意见上传附件 | char | 1 | 是 | 否 | 否 | ||
103 | annexdoccategory | 流程签字意见附件文档目录 | varchar2 | 1000 | 是 | 否 | 否 | ||
104 | isshowonreportinput | 是否数据中心输入表 | char | 1 | 是 | 否 | 否 | 0 | 0:否 1:是 |
105 | titlefieldid | 标题字段id | integer | 是 | 否 | 否 | |||
106 | keywordfieldid | 主题词字段id | integer | 是 | 否 | 否 | |||
107 | isshowchart | 提交流程后是否显示流程图 | char | 1 | 是 | 否 | 否 | 0:否 1:是 | |
108 | orderbytype | 流程审批意见显示顺序 | char | 1 | 是 | 否 | 否 | 1:倒序;2:正序 | |
109 | istridiffworkflow | 是否触发不同流程 | char | 1 | 是 | 否 | 否 | 0:否 1:是 | |
110 | ismodifylog | 是否记录表单修改日志 | char | 1 | 是 | 否 | 否 | 0 | 0:否 1:是 |
111 | ifversion | 是否保留正文版本 | char | 1 | 是 | 否 | 否 | 0:否 1:是 | |
112 | wfdocpath | 流程保存为文档的路径 | varchar2 | 800 | 是 | 否 | 否 | ||
113 | wfdocowner | 流程保存?槲?n的所有者 | varchar2 | 800 | 是 | 否 | 否 | ||
114 | isedit | 是否正在图形化编辑 | char | 1 | 是 | 否 | 否 | ||
115 | editor | 当前编辑人 | integer | 是 | 否 | 否 | |||
116 | editdate | 编辑日期 | char | 10 | 是 | 否 | 否 | ||
117 | edittime | 编辑时间 | char | 8 | 是 | 否 | 否 | ||
118 | showdelbuttonbyreject | 退回创建节点是否可删除 | char | 1 | 是 | 否 | 否 | 0:否 1:是 | |
119 | showuploadtab | 是否显示上传附件tab | char | 1 | 是 | 否 | 否 | 0:否 1:是 | |
120 | issigndoc | 是否允许签字意见关联文档 | char | 1 | 是 | 否 | 否 | 0:否 1:是 | |
121 | showdoctab | 是否显示相关文档tab | char | 1 | 是 | 否 | 否 | 0:否 1:是 | |
122 | issignworkflow | 是否允许签字意见关联流程 | char | 1 | 是 | 否 | 否 | 0:否 1:是 | |
123 | showworkflowtab | 是否显示相关流程tab | char | 1 | 是 | 否 | 否 | 0:否 1:是 | |
124 | candelacc | 是否允许删除附件 | char | 1 | 是 | 否 | 否 | 0:否 1:是 | |
125 | isforwardrights | 是否允许转发人设置被转发人权限 | char | 1 | 是 | 否 | 否 | 0:否 1:是 | |
126 | isimportwf | 新建时是否可导入流程 | char | 1 | 是 | 否 | 否 | 0:否 1:是 | |
127 | isrejectremind | 退回是否提醒的 | char | 1 | 是 | 否 | 否 | 0:否 1:是 | |
128 | ischangrejectnode | 退回人是否可设置提醒节点 | char | 1 | 是 | 否 | 否 | 0:否 1:是 | |
129 | wfdocownertype | 流程存为文档的文档所有者取值类型 | integer | 是 | 否 | 否 | 1、指定人 2、取流程表单字段的值 | ||
130 | wfdocownerfieldid | 流程存为文档的文档所有者 | integer | 是 | 否 | 否 | 如果取值与流程表单字段的值,指定字段id | ||
131 | newdocpath | 流程中多文档字段 | varchar2 | 1000 | 是 | 否 | 否 | 直接新建文档是可根据该属性指定的目录,直接到文档创建目录(格式主目录id/分目录id/子目录id) | |
132 | keepsign | 保持签字意见 | integer | 是 | 否 | 否 | |||
133 | seccategoryid | 子目录id | integer | 是 | 否 | 否 | |||
134 | custompage | 自定义页面 | varchar2 | 2000 | 是 | 否 | 否 | ||
135 | issignview | 是否允许查看先关流程签字意见 | integer | 是 | 否 | 否 | |||
136 | cus_titletemplate | 列表显示标题-自定义格式 | clob | 是 | 否 | 否 | |||
137 | reqLevelColorJson | 紧急程度-颜色代码信息 | varchar2 | 2000 | 是 | 否 | 否 | ||
138 | docfiles | 流程存为文档,需要的附件 | varchar2 | 10 | 是 | 否 | 否 | 1、在线html 2、离线html 3、pdf |
# 流程请求表
流程请求表
workflow_requestbase
序号 | 数据库列名 | 中文名称 | 数据类型 | 长度 | 是否允许空值 | 是否为外键 | 是否自增长 | 默认值 | 说明 |
---|---|---|---|---|---|---|---|---|---|
1 | totalgroups | 总共需要的操作者组数 | integer | 是 | 否 | 否 | |||
2 | requestname | 请求名称 | varchar2 | 1000 | 是 | 否 | 否 | ||
3 | creater | 创建人 | integer | 是 | 否 | 否 | |||
4 | createdate | 创建日期 | char | 10 | 是 | 否 | 否 | ||
5 | createtime | 创建时间 | char | 8 | 是 | 否 | 否 | ||
6 | lastoperator | 最后操作者id | integer | 是 | 否 | 否 | |||
7 | lastoperatedate | 最后操作日期 | char | 10 | 是 | 否 | 否 | ||
8 | lastoperatetime | 最后操作时间 | char | 8 | 是 | 否 | 否 | ||
9 | deleted | 是否删除 | integer | 是 | 否 | 否 | 0 | 0:是 | |
10 | creatertype | 创建人类型 | integer | 是 | 否 | 否 | 0 | 1:人力资源,2:客户 | |
11 | lastoperatortype | 最后操作者类型 | integer | 是 | 否 | 否 | 0 | 1:人力资源,2:客户 | |
12 | nodepasstime | 节点超时时间 | float | 22 | 是 | 否 | 否 | -1 | 小时 |
13 | nodelefttime | 节点处理剩余时间 | float | 22 | 是 | 否 | 否 | -1 | 小时 |
14 | docids | 相关文档 | varchar2 | 4000 | 是 | 否 | 否 | ||
15 | crmids | 相关客户 | varchar2 | 4000 | 是 | 否 | 否 | ||
16 | hrmids_temp | temp | varchar2 | 4000 | 是 | 否 | 否 | ||
17 | prjids | 相关项目 | varchar2 | 4000 | 是 | 否 | 否 | ||
18 | cptids | 相关资产 | varchar2 | 4000 | 是 | 否 | 否 | ||
19 | requestlevel | 请求级别 | integer | 是 | 否 | 否 | 0 | 0:正常 1:重要 2:紧急 | |
20 | requestmark | 请求说明 | varchar2 | 800 | 是 | 否 | 否 | ||
21 | messagetype | 消息提醒 | integer | 是 | 否 | 否 | |||
22 | mainrequestid | 主流程的请求id | integer | 是 | 否 | 否 | |||
23 | currentstatus | 保存流程暂停、撤销时流程状态 | integer | 是 | 否 | 否 | 0为暂停,1为撤销 | ||
24 | laststatus | 用于保存流程暂停、撤销时,流程status的值 | varchar2 | 480 | 是 | 否 | 否 | ||
25 | ismultiprint | 是否已批量打印 | integer | 是 | 否 | 否 | 0 | 1:已经批量打印,0或其他:未批量打印 | |
26 | chatstype | 微信提醒 | integer | 是 | 否 | 否 | |||
27 | ecology_pinyin_search | ecology_拼音_搜索 | varchar2 | 1000 | 是 | 否 | 否 | ||
28 | hrmids | 相关人力资源 | clob | 4000 | 是 | 否 | 否 | ||
29 | requestnamenew | 带标题字段的请求标题 | varchar2 | 4000 | 是 | 否 | 否 | ||
30 | formsignaturemd5 | 表单数据串加密字段 | varchar2 | 1000 | 是 | 否 | 否 | ||
31 | dataaggregated | 子流程是否归档汇总状态 | char | 1 | 是 | 否 | 否 | ||
32 | requestid | 请求id | integer | 否 | 否 | 否 | |||
33 | workflowid | 工作流id | integer | 是 | 否 | 否 | |||
34 | lastnodeid | 最后操作节点id | integer | 是 | 否 | 否 | |||
35 | lastnodetype | 最后操作节点类型 | char | 1 | 是 | 否 | 否 | ||
36 | currentnodeid | 当前节点id | integer | 是 | 否 | 否 | |||
37 | currentnodetype | 当前节点类型 | char | 1 | 是 | 否 | 否 | 0:创建,1:批准,2:提交,3:归档 | |
38 | status | 请求状态 | varchar2 | 500 | 是 | 否 | 否 | ||
39 | passedgroups | 已经通过的操作者组数 | integer | 是 | 否 | 否 | |||
40 | seclevel | 流程密级 | varchar2 | 1 | 是 | 否 | 否 | 对应人力资源ResourceClassification表中的secLevel | |
41 | remindTypes | 流程提醒方式 | varchar2 | 40 | 是 | 否 | 否 | 0:短信提醒;2:邮件提醒, |
# 流程表单表
流程表单表
workflow_bill
序号 | 数据库列名 | 中文名称 | 数据类型 | 长度 | 是否允许空值 | 是否为外键 | 是否自增长 | 默认值 | 说明 |
---|---|---|---|---|---|---|---|---|---|
1 | clazz | 系统单据继承类 | varchar2 | 800 | 是 | 否 | 否 | ||
2 | id | ID | integer | 否 | 否 | 否 | |||
3 | namelabel | 单据显示名称 | integer | 是 | 否 | 否 | |||
4 | tablename | 对应的主表名称 | varchar2 | 480 | 是 | 否 | 否 | ||
5 | createpage | 创建请求页面url | varchar2 | 1000 | 是 | 否 | 否 | ||
6 | managepage | 管理请求页面url | varchar2 | 1000 | 是 | 否 | 否 | ||
7 | viewpage | 查看请求页面url | varchar2 | 1000 | 是 | 否 | 否 | ||
8 | detailtablename | 对应的从表名称 | varchar2 | 480 | 是 | 否 | 否 | ||
9 | detailkeyfield | 从表链接主表的关键字 | varchar2 | 480 | 是 | 否 | 否 | ||
10 | operationpage | 后台处理请求页面url | varchar2 | 1000 | 是 | 否 | 否 | ||
11 | hasfileup | 已有文件上传 | char | 1 | 是 | 否 | 否 | ||
12 | invalid | 无效标志 | integer | 是 | 否 | 否 | |||
13 | formdes | 表单描述 | varchar2 | 1000 | 是 | 否 | 否 | ||
14 | subcompanyid | 子公司id | integer | 是 | 否 | 否 | |||
15 | dsporder | 显示顺序 | float | 22 | 是 | 否 | 否 | ||
16 | subcompanyid3 | 子公司id3 | integer | 是 | 否 | 否 | |||
17 | from_module_ | 表单模块 | varchar2 | 80 | 是 | 否 | 否 |
# 工作流请求节点操作人信息表
工作流请求节点操作人信息表
workflow_currentoperator
序号 | 数据库列名 | 中文名称 | 数据类型 | 长度 | 是否允许空值 | 是否为外键 | 是否自增长 | 默认值 | 说明 |
---|---|---|---|---|---|---|---|---|---|
1 | isprocessing | 流程异步处理状态 | char | 1 | 是 | 否 | 否 | ||
2 | processuser | 实际操作人 | integer | 是 | 否 | 否 | |||
3 | autodate | 无 | varchar2 | 1000 | 是 | 否 | 否 | ||
4 | autodatetime | 无 | varchar2 | 1000 | 是 | 否 | 否 | ||
5 | isbereject | 是否退回 | char | 1 | 是 | 否 | 否 | ||
6 | isreject | 是否为退回前的节点操作人 | char | 1 | 是 | 否 | 否 | 用于分叉流转日志显示(1:是,0或其它:否) | |
7 | needwfback | 需反馈 | char | 1 | 是 | 否 | 否 | ||
8 | lastisremark | 用于保存流程暂停、撤销时,流程操作者isremark的值 | char | 1 | 是 | 否 | 否 | ||
9 | isreminded_csh | 是否超时后提醒 | char | 1 | 是 | 否 | 否 | ||
10 | wfreminduser_csh | 流程超时后提醒用户 | varchar2 | 4000 | 是 | 否 | 否 | ||
11 | wfusertypes_csh | 超时后的流程用户类型 | varchar2 | 4000 | 是 | 否 | 否 | ||
12 | handleforwardid | 用于保存流程转办记录id | integer | 是 | 否 | 否 | |||
13 | takisremark | 用于记录意见征询标识 | integer | 是 | 否 | 否 | 2:是意见征询接收人 -2:是未回复前意见征询人状态 0:是回复后意见征询人状态 | ||
14 | lastreminddatetime | 用于记录上一次超时提醒的时间 | varchar2 | 4000 | 是 | 否 | 否 | 格式: id_yyyy-mm-dd hh24:mi:ss 多个之间用半角逗号隔开 id为workflow_nodelinkovertime表id | |
15 | requestid | 请求id | integer | 否 | 否 | 否 | |||
16 | userid | 用户id | integer | 是 | 否 | 否 | |||
17 | groupid | 赋予每个操作人的标示,但是非会签会都一样是同一个值 | integer | 是 | 否 | 否 | |||
18 | workflowid | 工作流id | integer | 是 | 否 | 否 | |||
19 | workflowtype | 工作流类型 | integer | 是 | 否 | 否 | |||
20 | isremark | 操作类型 | char | 1 | 是 | 否 | 否 | 0:未操作 1:转发 2:已操作 4:归档 5:超时 8:抄送(不需提交) 9:抄送(需提交) a: 意见征询 b: 回复 h: 转办 j: 转办提交 11:传阅 | |
21 | usertype | 用户类型 | integer | 是 | 否 | 否 | 1、人力资源 2、客户 | ||
22 | nodeid | 操作节点id | integer | 是 | 否 | 否 | |||
23 | agentorbyagentid | 代理记录 | integer | 是 | 否 | 否 | 当前记录为被代理人记录时,显示代理人的id; 当前记录为代理人记录时,显示被代理人的id; 没有代理为-1 | ||
24 | agenttype | 代理操作 | char | 1 | 是 | 否 | 否 | 0:没有代理 1:当前记录是被代理人记录(isremak=2或=4); 2:当前记录是代理人记录(isremak值取决于代理人是否已经操作) | |
25 | showorder | 操作人的显示顺序 | integer | 是 | 否 | 否 | 从0开始 | ||
26 | receivedate | 接收到的日期 | char | 10 | 是 | 否 | 否 | ||
27 | receivetime | 接收到的时间 | char | 8 | 是 | 否 | 否 | ||
28 | viewtype | 查看标志 | integer | 是 | 否 | 否 | 0:接收到流程且未查看过,显示红色new标记; -1:查看过流程后又有新的未查看回复,显示黄色new标记; -2:已查看过流程,不显示任何new标记; | ||
29 | iscomplete | 标记流程是否归档 | integer | 是 | 否 | 否 | 0:未归档,1:归档 | ||
30 | islasttimes | 操作人最后一次操作记录 | integer | 是 | 否 | 否 | 0:操作人在流程中多次出现,且本条记录不是操作人最后一次操作所用的纪录; 1:操作人在流程中出现一次;或操作人在流程中多次出现,且本条记录是操作人最后一次操作所用的纪录; | ||
31 | id | 自增长id字段 | integer | 否 | 否 | 否 | |||
32 | operatedate | 操作日期 | char | 10 | 是 | 否 | 否 | 未查看时为空; 查看后记录第一次查看时间; 操作后记录操作时间; | |
33 | operatetime | 操作时间 | char | 8 | 是 | 否 | 否 | 未查看时为空; 查看后记录第一次查看时间; 操作后记录操作时间; | |
34 | groupdetailid | 节点操作组里的操作人条件id | integer | 是 | 否 | 否 | |||
35 | isreminded | 是否已经超时提醒过 | char | 1 | 是 | 否 | 否 | 1、已经超时提醒 | |
36 | isprocessed | 是否已经超时处理过 | char | 1 | 是 | 否 | 否 | 1、自动流转 2:流转到指定对象 3:超时并未启用超时处理或自动流转失败 | |
37 | wfreminduser | 工作流超时提醒人 | varchar2 | 1000 | 是 | 否 | 否 | ||
38 | wfusertypes | 工作流超时提醒人类型 | varchar2 | 800 | 是 | 否 | 否 | ||
39 | preisremark | 改变前的isremark | char | 1 | 是 | 否 | 否 | ||
40 | overtime | 超时处理时间点 | varchar2 | 否 | 否 | 否 | |||
41 | overworktime | 接收时间到超时处理时间点相隔多少工作时间 | varchar2 | 否 | 否 | 否 | |||
42 | takId | 意见征询的记录id | integer | 否 | 否 | 否 | |||
43 | multiTakLevel | 意见征询层级 | integer | 否 | 否 | 否 | 0:一级征询, 1:二级征询,依次叠加 | ||
44 | isTakOut | 当前记录是否征询出去 | char | 1 | 否 | 否 | 否 | 1:当前记录已征询出去 0:未征询出去 | |
45 | isInMultiTak | 是否处于多级征询状态 | char | 1 | 否 | 否 | 否 | 1:当前记录处于多级征询状态 0:未处于多级征询状态 |
# 工作流单据字段表
工作流单据字段表
workflow_billfield
序号 | 数据库列名 | 中文名称 | 数据类型 | 长度 | 是否允许空值 | 是否为外键 | 是否自增长 | 默认值 | 说明 |
---|---|---|---|---|---|---|---|---|---|
1 | fieldshowtypes | 显示类型 | integer | 是 | 否 | 否 | |||
2 | id | ID | integer | 否 | 否 | 否 | |||
3 | billid | 单据id | integer | 是 | 否 | 否 | |||
4 | fieldname | 数据库表字段名称 | varchar2 | 480 | 是 | 否 | 否 | ||
5 | fieldlabel | 字段显示名称 | integer | 是 | 否 | 否 | |||
6 | fielddbtype | 单据字段数据库类型 | varchar2 | 320 | 是 | 否 | 否 | ||
7 | fieldhtmltype | 单据字段页面类型 | char | 1 | 是 | 否 | 否 | 1:单行文本框 2:多行文本框 3:浏览按钮 4:check框 5:选择框 | |
8 | viewtype | 主表字段还是从表字段 | integer | 是 | 否 | 否 | 0 | 0:主表 1:从表 | |
9 | detailtable | 明细表 | varchar2 | 400 | 是 | 否 | 否 | ||
10 | fromuser | 用户表单 | char | 1 | 是 | 否 | 否 | 1 | |
11 | textheight | 文本高度 | integer | 是 | 否 | 否 | |||
12 | dsporder | 显示顺序 | number | (15,2) | 是 | 否 | 否 | ||
13 | childfieldid | 子字段id | integer | 是 | 否 | 否 | |||
14 | imgheight | 图片高度 | integer | 是 | 否 | 否 | (0) | ||
15 | imgwidth | 图片宽度 | integer | 是 | 否 | 否 | (0) | ||
16 | places | 位置 | integer | 是 | 否 | 否 | |||
17 | qfws | 小数位数 | varchar2 | 400 | 是 | 否 | 否 | ||
18 | textheight_2 | 文本高度_2 | varchar2 | 400 | 是 | 否 | 否 | ||
19 | selectitem | 选择条目 | integer | 是 | 否 | 否 | |||
20 | linkfield | 连接字段 | integer | 是 | 否 | 否 | |||
21 | selectitemtype | 公共选择框 | char | 1 | 是 | 否 | 否 | ||
22 | pubchoiceid | 公共选择框ID | integer | 是 | 否 | 否 | |||
23 | pubchilchoiceid | 公共选择框子项ID | integer | 是 | 否 | 否 | |||
24 | statelev | 选择框级数 | integer | 是 | 否 | 否 | |||
25 | locatetype | 定位类型 | char | 1 | 是 | 否 | 否 | 2:自动、1:手动 |
# 流程单据明细表
流程单据明细表
workflow_billdetailtable
序号 | 数据库列名 | 中文名称 | 数据类型 | 长度 | 是否允许空值 | 是否为外键 | 是否自增长 | 默认值 | 说明 |
---|---|---|---|---|---|---|---|---|---|
1 | id | ID | integer | 否 | 否 | 否 | |||
2 | billid | 单号id | integer | 是 | 否 | 否 | |||
3 | tablename | 表名 | varchar2 | 400 | 是 | 否 | 否 | ||
4 | title | 标题 | varchar2 | 1000 | 是 | 否 | 否 | ||
5 | orderid | 排序id | integer | 是 | 否 | 否 | 0 |
其他表类型这里就不一一展示了
# java代码操作数据库
java代码中操作数据库,有公司封装好的类,当然也可以使用mybatis等orm框架,但是使用公司封装好的类更加契合ecology系统,其中有一些加密解密以及一些多语言的解析信息,所以这里推荐使用公司封装的类,本文档也只对公司封装的类进行讲解
# 基础介绍
操作数据的类
weaver.conn.RecordSet
RecordSet
内部封装了jdbc
,其中操作数据库方式与jdbc
十分类似
weaver.conn.RecordSetTrans
带有事务的类
RecordSetTrans
与RecordSet
一致,但是内部做了对事务的处理,并不会自动提交操作,而是需要手动提交事务
# 查询
# 基础查询
在进行二开时,使用最多的sql操作应该就是查询了,下面使用代码来看下如何在代码中查询数据库数据
我们需要查询人力资源表中的数据,并且展示用户的id和他的用户名,我们可以将代码写成如下
@Test
public void queryDatabase(){
// 创建recordset对象
RecordSet rs = new RecordSet();
// 执行数据sql查询操作
rs.executeQuery("select * from hrmresource");
// 判断是否有下一行结果集
while (rs.next()) {
// 获取结果集信息
System.out.println("id: " + rs.getInt("id"));
//System.out.println("id: " + rs.getInt(1));
System.out.println("lastname: " + rs.getString("lastname"));
//System.out.println("lastname: " + rs.getString(2));
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
看下执行结果
id: 69227
lastname: 杨文元-zzj
id: 69229
lastname: 李妍-zzj
id: 69230
lastname: 徐平-zzj
id: 69231
lastname: 赵静-zzj
id: 69232
lastname: 刘长庚-zzj
id: 69233
lastname: 付蕾-zzj
2
3
4
5
6
7
8
9
10
11
12
使用RecordSet
的executeQuery
方法可以查询到我们所需要的数据,同样我们也可以通过其他方法来查询数据
@Test
public void queryDatabase2(){
// 创建recordset对象
RecordSet rs = new RecordSet();
// 执行数据sql查询操作
rs.execute("select * from hrmresource");
// 判断是否有下一行结果集
while (rs.next()) {
// 获取结果集信息
System.out.println("id: " + rs.getInt("id"));
System.out.println("lastname: " + rs.getString("lastname"));
}
}
@Test
public void queryDatabase3(){
// 创建recordset对象
RecordSet rs = new RecordSet();
// 执行数据sql查询操作
rs.executeSql("select * from hrmresource",null);
// 判断是否有下一行结果集
while (rs.next()) {
// 获取结果集信息
System.out.println("id: " + rs.getInt("id"));
System.out.println("lastname: " + rs.getString("lastname"));
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
其他一些方法可以后续自行探索
如何传参呢?
# 传递参数
如果我们要查询某个条件的数据,可以通过sql拼接的形式进行查询,但是这并不值得推荐,因为只要经常开发的都知道,这个存在sql注入的风险,所以Recordset
也提供了jdbc
的preparedstatement
操作方式,可以通过?
来对参数进行站位,在执行sql时传入对应的参数即可以完成参数的传递
@Test
public void queryDatabaseByParam(){
// 创建recordset对象
RecordSet rs = new RecordSet();
// 执行数据sql查询操作
rs.executeQuery("select * from hrmresource where id = ?",69227);
// 判断是否有下一行结果集
while (rs.next()) {
// 获取结果集信息
System.out.println("id: " + rs.getInt("id"));
System.out.println("lastname: " + rs.getString("lastname"));
}
}
2
3
4
5
6
7
8
9
10
11
12
13
executeQuery
方法的第二个参数是不定长的, 所以可以传入一个Object
数组,与上述的传参方式是等效的
rs.executeQuery("select * from hrmresource where id = ?",new Object[]{69227});
// 或
List<Object> args = new ArrayList<>();
args.add(69227);
rs.executeQuery("select * from hrmresource where id =?",args);
2
3
4
5
# 更新
更新操作与查询操作类似,只是调用方法不一样而已,接下来上代码展示
@Test
public void updateDatabase(){
// 创建recordset对象
RecordSet rs = new RecordSet();
rs.executeQuery("select * from hrmresource where id = ?",69227);
// 判断是否有下一行结果集
while (rs.next()) {
// 获取结果集信息
System.out.println("id: " + rs.getInt("id"));
System.out.println("lastname: " + rs.getString("lastname"));
}
// 执行数据sql更新操作
if(rs.executeUpdate("update hrmresource set lastname = 'test' where id =?",69227)){
System.out.println("更新成功");
}
rs.executeQuery("select * from hrmresource where id = ?",69227);
// 判断是否有下一行结果集
while (rs.next()) {
// 获取结果集信息
System.out.println("id: " + rs.getInt("id"));
System.out.println("lastname: " + rs.getString("lastname"));
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
看输出结果
id: 69227
lastname: 杨文元-zzj
更新成功
id: 69227
lastname: test
2
3
4
5
接下来看下事务操作
@Test
public void updateDatabaseByTrans() throws Exception {
// 创建recordset对象
RecordSetTrans rs = new RecordSetTrans();
// 设置自动提交为false
rs.setAutoCommit(false);
RecordSet rsQuery = new RecordSet();
rsQuery.executeQuery("select * from hrmresource where id = ?",69227);
// 判断是否有下一行结果集
while (rsQuery.next()) {
// 获取结果集信息
System.out.println("id: " + rsQuery.getInt("id"));
System.out.println("lastname: " + rsQuery.getString("lastname"));
}
// 执行数据sql更新操作
if(rs.executeUpdate("update hrmresource set lastname = 'test-tran' where id =?",69227)){
System.out.println("更新成功: 但是我要回滚");
}
// rs.rollbackOnly();
rs.rollback();
// 事务回滚或者提交后当前事务对象就销毁了,需要重新获取事务对象
rs = new RecordSetTrans();
rs.setAutoCommit(false);
rsQuery.executeQuery("select * from hrmresource where id = ?",69227);
// 判断是否有下一行结果集
while (rsQuery.next()) {
// 获取结果集信息
System.out.println("id: " + rsQuery.getInt("id"));
System.out.println("lastname: " + rsQuery.getString("lastname"));
}
// 执行数据sql更新操作
if(rs.executeUpdate("update hrmresource set lastname = 'test-tran' where id =?",69227)){
System.out.println("更新成功: 这次提交");
}
rs.commit();
rsQuery.executeQuery("select * from hrmresource where id = ?",69227);
// 判断是否有下一行结果集
while (rsQuery.next()) {
// 获取结果集信息
System.out.println("id: " + rsQuery.getInt("id"));
System.out.println("lastname: " + rsQuery.getString("lastname"));
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
看下输出结果
id: 69227
lastname: test
更新成功: 但是我要回滚
id: 69227
lastname: test
更新成功: 这次提交
id: 69227
lastname: test-tran
2
3
4
5
6
7
8
# 插入
插入操作与更新操作,接下来上代码展示
@Test
public void insertDatabase(){
// 创建recordset对象
RecordSet rs = new RecordSet();
// 执行数据sql插入操作
if(rs.executeUpdate("insert into hrmresource(id,lastname) values(?,?)",69326,"test-insert")){
System.out.println("插入成功");
}
// 执行数据sql查询操作
rs.executeQuery("select * from hrmresource where id = ?",69326);
// 判断是否有下一行结果集
while (rs.next()) {
// 获取结果集信息
System.out.println("id: " + rs.getInt("id"));
System.out.println("lastname: " + rs.getString("lastname"));
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
看下执行结果
插入成功
id: 69326
lastname: test-insert
2
3
事务操作与更新的事务操作是一样的
# 删除数据
删除操作与更新操作,接下来上代码展示
@Test
public void deleteDatabase(){
// 创建recordset对象
RecordSet rs = new RecordSet();
// 执行数据sql删除操作
if(rs.executeUpdate("delete from hrmresource where id =?",69326)){
System.out.println("删除成功");
}
// 执行数据sql查询操作
rs.executeQuery("select * from hrmresource where id =?",69326);
// 判断是否有下一行结果集
if(rs.next()) {
// 获取结果集信息
System.out.println("id: " + rs.getInt("id"));
System.out.println("lastname: " + rs.getString("lastname"));
}else{
System.out.println("删除成功,数据库中查询不到数据");
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
看下执行结果
删除成功
删除成功,数据库中查询不到数据
2
事务操作与更新的事务操作是一样的
# 批量操作
除了基本的数据操作之外,还有批量操作的功能,接下来使用批量插入与批量删除来演示
批量插入
@Test
public void batchInsertDatabase() {
List<List> args = new ArrayList<>();
List<Integer> ids = new ArrayList<>();
for (int i = 0; i < 10; i++) {
List arg = new ArrayList<>();
arg.add(69327 + i);
ids.add(69327 + i);
arg.add("test-batch-insert_" + i);
args.add(arg);
}
RecordSet rs = new RecordSet();
if(rs.executeBatchSql("insert into hrmresource(id,lastname) values(?,?)", args)){
System.out.println("批量插入成功");
}
// 查询验证
rs.executeQuery("select * from hrmresource where id in (?,?,?,?,?,?,?,?,?,?)", ids);
// 判断是否有下一行结果集
while (rs.next()) {
// 获取结果集信息
System.out.println("id: " + rs.getInt("id"));
System.out.println("lastname: " + rs.getString("lastname"));
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
看下执行结果
批量插入成功
id: 69327
lastname: test-batch-insert_0
id: 69328
lastname: test-batch-insert_1
id: 69329
lastname: test-batch-insert_2
id: 69330
lastname: test-batch-insert_3
id: 69331
lastname: test-batch-insert_4
id: 69332
lastname: test-batch-insert_5
id: 69333
lastname: test-batch-insert_6
id: 69334
lastname: test-batch-insert_7
id: 69335
lastname: test-batch-insert_8
id: 69336
lastname: test-batch-insert_9
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
看下批量删除
@Test
public void batchDeleteDatabase() {
List<List> ids = new ArrayList<>();
for (int i = 0; i < 10; i++) {
List arg = new ArrayList<>();
arg.add(69327 + i);
ids.add(arg);
}
RecordSet rs = new RecordSet();
if(rs.executeBatchSql("delete from hrmresource where id = ?", ids)){
System.out.println("批量删除成功");
}
// 查询验证
rs.executeQuery("select * from hrmresource where id in (?,?,?,?,?,?,?,?,?,?)", ids);
// 判断是否有下一行结果集
while (rs.next()) {
// 获取结果集信息
System.out.println("id: " + rs.getInt("id"));
System.out.println("lastname: " + rs.getString("lastname"));
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
看下输出结果
批量删除成功
批量更新和插入删除是一样的接受一个List<List>
的批量参数,这里需要注意的是,事务的批量操作方法接收的参数是List<List<Object>>
类型的参数,所以需要注意泛型(个版本之间可能有差异,编译时期即可发现问题,无需过于担心)