Happy3w

NC持久化可框架JDBC FrameWork-1

2017.02.17
说明:此篇小编收集整理,非原作者。 第一章 JDBC FrameWork 1. JdbcSession的创建:
PersistenceManager sessionManager= PersistenceManager. getInstance ();
try {
 JdbcSession session = sessionManager. getJdbcSession ();//开始jdbc会话
     相关业务操作
} catch (DbException e) {
}
finally {  
sessionManager. release ();//需要关闭会话
}
2. 数据访问异常的处理 DbException是一个抽象异常类, 它被用来处理SQLException和我们的数据访问异常之间的转换。在数据访问框架中提供了不同数据库对不同DbException的实现并对每种数据库的SQLErrorCode进行了处理,统一转化成不同的方法,通过DbException能够精确的指定出数据访问过程中所出现的问题。
try {
 数据访问过程
} catch (DbException e) {
//根据数据库的不同统一异常处理
if(e.isBadSQLGrammar())//如果是语法错误
   //to do          相关处理  
if(e.isDataIntegrityViolation())//如果是数据一致性错误
   //to do          相关处理
}
finally {  
//关闭会话
}
3. 结果集合的处理 对查询结果集合的处理,主要由ResultProcessor类来实现,这是一个接口 ResultProcessor包含有一个简单的方法,不同的ResultProcessor实现返回不同的结果对象。系统提供了一系列常用的默认实现。  ArrayProcessor 数组处理器,返回一个对象数组,结果集中只有一行数据,其中结果集中每一列对应数组的一个元素。  ArrayListProcessor 数组集合处理器,返回一个ArrayList集合,集合中的每一个元素是一个数组,每个数组对应结果集中的一行数据,其中结果集中每一列对应数组的一个元素。  MapProcessor HashMap处理器,返回一个HashMap, 结果集中只有一行数据,其中结果集合中每一列的列名和列值对应HashMap的一个关键字和相应的值。  MapListProcessor HashMap集合处理器,返回一个ArrayList集合,集合中的每一个元素是一个HashMap,每个HashMap对应结果集中的一行数据, 其中结果集合中每一列的列名和列值对应HashMap的一个关键字和相应的值。  BeanProcessor 值对象处理器,返回一个JavaBean,结果集中只有一行数据,该处理器能自动把结果集中的值按列的名称映射到javaBean中,如结果集中有名称为”name”的字段,那么只要该java对象中有getName()方法就能把结果集合中”name”对应的值映射到对象中。  BeanProcessor 值对象集合处理器,返回一个ArrayList集合,集合中的每一个元素是一个javaBean,每个javaBean对应结果集合中一行数据,其中每个JavaBean中的数据映射关系和BeanProcess同理。  ColumnProcessor 列值处理器,返回一个Java对象,结果集中只有一行数据,该对象对应与结果集中某一列的值,该处理器通过结果集列的序号或名称来确定列。  BeanMappingListProcessor:值对象集合处理器,根据映射信息返回一个ArrayList集合,集合中的每一个元素是一个javaBean,每个javaBean对应结果集合中一行数据,其中每个JavaBean中的数据映射关系和BeanMappingProcess同理  BeanMappingProcessor:值对象处理器,根据映射信息返回一个JavaBean,结果集中只有一行数据,该处理器能自动把结果集中的值按列的名称映射到javaBean中,如结果集中有名称为”name”的字段,那么只要该java对象中有getName()方法就能把结果集合中”name”对应的值映射到对象中 上述的默认实现并不能满足所有的业务需求,在开发过程中还需要实现自定义的结果集处理器。如:
public class CustomProcessor extends  BaseProcessor {
    public Object processResultSet(ResultSet rs) throws SQLException {
… 自定义实现
…      
    }
}
4. 更新的实现 4.1 无参数更新数据
PersistenceManager sessionManager=null;
try {
sessionManager =PersistenceManager. getInstance ();
 JdbcSession session = sessionManager. getJdbcSession ();//开始jdbc会话
 String sql = "update bd_invmandoc set pk_invmandoc ='0001AA10000000000DDD' where pk_invmandoc='0001AA10000000000DDD' "; 
      session.executeUpdate(sql);
} catch (DbException e) {
}
finally { 
if(sessionManager!=null) 
sessionManager. release ();//需要关闭会话
}
4.2 带参数更新数据
PersistenceManager sessionManager=null;
try {
sessionManager =PersistenceManager. getInstance ();
 JdbcSession session = sessionManager. getJdbcSession ();//开始jdbc会话
String sql = "update bd_invmandoc set pk_invmandoc ='0001AA10000000000DDD' where pk_invmandoc=?”; 
SQLParameter parameter = new SQLParameter(); 构造参数对象
      parameter.addParam("0001AA10000000000DDD");添加参数,JdbcSession会将参数对象中的每个对象放入到预处理对象的相应位置
      session.executeUpdate(sql,parameter);
} catch (DbException e) {
}
finally { 
if(sessionManager!=null)  
sessionManager. release ();//需要关闭会话
}
4.3 批量带参数更新数据
PersistenceManager sessionManager=null;
try {
sessionManager =PersistenceManager. getInstance ();
 JdbcSession session = sessionManager. getJdbcSession ();//开始jdbc会话
      String sql = "update bd_invmandoc set pk_invmandoc ='0001AA10000000000DDD' where pk_invmandoc=? ";
      SQLParameter parameter = new SQLParameter();
      parameter.addParam("0001AA10000000000DDD");
      session.addBatch(sql, parameter);
      int rows = session.executeBatch();
} catch (DbException e) {
}
finally {  
if(sessionManager!=null)
sessionManager. release ();//需要关闭会话
}
4.4 批量无参数更新
PersistenceManager sessionManager=null;
try {
sessionManager =PersistenceManager. getInstance ();
 JdbcSession session = sessionManager. getJdbcSession ();//开始jdbc会话
     String sql = "update bd_invmandoc set pk_invmandoc ='0001AA10000000000DDD' where pk_invmandoc=’ '0001AA10000000000DDD'’ ";
      session.addBatch(sql);
      int rows = session.executeBatch();
} catch (DbException e) {
}
finally {  
if(sessionManager!=null)
sessionManager. release ();//需要关闭会话
}
5. JdbcSession中特殊参数类型 在JdbcSession中有3中特殊的参数特性Null,Blob,Clob; 使用Null参数类型
PersistenceManager sessionManager=null;
try {
sessionManager =PersistenceManager. getInstance ();
 JdbcSession session = sessionManager. getJdbcSession ();//开始jdbc会话
      String sql =更新或插入Null字段的SQL语句 …… 
SQLParameter parameter = new SQLParameter();
      parameter. addNullParam (Types.INTEGER);
      session.addBatch(sql, parameter);
      int rows = session.executeBatch();
} catch (DbException e) {
}
finally {  
if(sessionManager!=null)
sessionManager. release ();//需要关闭会话
}
使用Blob参数类型
PersistenceManager  sessionManager=null;
try {
sessionManager =PersistenceManager. getInstance ();
 JdbcSession session = sessionManager. getJdbcSession ();//开始jdbc会话
      String sql =更新或插入Blob字段的SQL语句 ……
SQLParameter parameter = new SQLParameter();
      parameter. addBlobParam (new Object());
      session.addBatch(sql, parameter);
      int rows = session.executeBatch();
} catch (DbException e) {
}
finally {  
if(sessionManager!=null)
session.closeAll();//关闭会话
}
使用Clob参数类型
SessionManager  sessionManager=null;
try {
sessionManager =PersistenceManager. getInstance ();
 JdbcSession session = sessionManager. getJdbcSession ();//开始jdbc会话
      String sql =更新或插入Clob字段的SQL语句 ……
SQLParameter parameter = new SQLParameter();
      parameter. addClobParam (new String());
      session.addBatch(sql, parameter);
      int rows = session.executeBatch();
} catch (DbException e) {
}
finally {  
if(sessionManager!=null)
session.closeAll();//关闭会话
}