1. 认识泛微OAe9的数据库操作工具
第一次接触泛微OAe9的后端开发时,我被它丰富的数据库操作工具惊艳到了。不像传统Java开发需要从零开始写JDBC代码,泛微提供了一套封装完善的API,让数据库操作变得像搭积木一样简单。经过多个项目的实战,我总结出最常用的四种武器:RecordSet、RecordSetTrans、RecordSetDataSource和原生JDBC。每种工具都有其独特的适用场景,用对了能让你少走很多弯路。
先说说最基础的RecordSet,它就像是泛微版的Statement+ResultSet组合体。我特别喜欢它的预编译参数功能,直接避免了SQL注入的风险。记得有次项目上线前安全扫描,其他模块爆出一堆SQL注入漏洞,而我用RecordSet写的数据库操作全部安全通过。它的连接池机制也很智能,有次机房网络闪断,系统自动重连后我的业务逻辑完全不受影响。
配置文件的位置需要特别注意,在/WEB-INF/prop/weaver.properties里藏着数据库连接的关键信息。有次我调试一个诡异的问题,发现RecordSet查询结果总是滞后,最后发现是同事修改了配置文件但忘记重启服务。所以记住:任何数据库配置变更后,一定要重启OA服务!
2. RecordSet的高效使用技巧
2.1 基础CRUD操作实战
RecordSet的execute方法用起来特别顺手,我习惯把它的使用分成四种场景。新增数据时要注意字符串类型的值必须加单引号,这是我踩过的坑:
RecordSet rs = new RecordSet();
// 新增数据(错误示范:值没加引号会报错)
rs.execute("insert into test_table(name,age) values(张三,25)"); // 报错!
// 正确写法
rs.execute("insert into test_table(name,age) values('张三','25')");
查询操作有个性能优化的小技巧。早期我习惯先用count(*)查总数再遍历结果集,后来发现完全没必要:
// 低效写法(查询两次)
rs.execute("select count(*) from hrmresource");
rs.next();
int total = rs.getInt(1);
rs.execute("select * from hrmresource");
// 高效写法(一次查询搞定)
rs.execute("select * from hrmresource");
while(rs.next()) {
// 直接处理数据
}
2.2 预编译参数的高级用法
预编译参数是防止SQL注入的利器,我强烈建议所有动态SQL都采用这种方式。参数化查询的写法需要注意参数顺序:
// 查询示例
rs.executeQuery("select * from hrmresource where id=? and status=?", "123", "1");
// 更新示例(注意参数顺序与SQL中的?顺序一致)
rs.executeUpdate(
"update document set title=?,modifier=? where id=?",
"新标题", "admin", "10086"
);
遇到批量插入时,千万别傻傻地循环执行单条insert。RecordSet有个隐藏

2222

被折叠的 条评论
为什么被折叠?



