扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
Select标注用于在Java类中指明一个选择查询,使get方法能从数据库表中取回数据。表2显示的是Select标注的不同属性及其作用:
变量 | 类型 | 描述 |
sql | String | SQL Select query string. |
value | String | Same as sql attribute. |
tableName | String | Name of the database table against which the sql will be invoked. |
readOnly, connected, scrollable | Boolean | Flags used to indicate if the returned DataSet is read-only or updateable, is connected to the back-end database, and is scrollable when used in connected mode respectively. |
allColumnsMapped | Boolean | Flag to indicate if the column names in the sql annotation element are mapped 1-to-1 with the fields in the DataSet. |
这里有一个应用Select标注从贷款数据库中获取所有活跃贷款的例子:
interface LoanAppDetailsQuery extends BaseQuery { @Select("SELECT * FROM LoanDetais where LoanStatus = 'A'") DataSet<LoanApplication> getAllActiveLoans(); } |
Sql标注同样允许I/O参数(参数标记以一个问号后跟一个整型数据表示)。这里是一个参数化sql查询的例子:
interface LoanAppDetailsQuery extends BaseQuery { @Select(sql="SELECT * from LoanDetails where borrowerFirstName= ?1 and borrowerLastName= ?2") DataSet<LoanApplication> getLoanDetailsByBorrowerName(String borrFirstName, String borrLastName); } |
Update标注用于修饰Query接口方法以更新数据库表中的一条或多条记录。Update标注必须包含一个sql标注类型元素。这里是一个Update标注的例子:
interface LoanAppDetailsQuery extends BaseQuery { |
SQL异常处理的增强特性
异常处理是Java编程的一个重要部分,特别是对后台关系数据库进行连接或查询时。SQLException是我们用以指出与数据库相关错误的类。JDBC 4.0在SQLException处理中有不少增强。为了在处理SQLException时获得更好的开发体验,JDBC 4.0版作了如下增强:
新的SQLException类
SQLException的新子类提供了一种方法,使Java开发人员能写出更方便改动的错误处理代码。JDBC 4.0介绍了两个新的SQLException型别:
Exception class SQLState | value |
SQLFeatureNotSupportedException | 0A |
SQLNonTransientConnectionException | 08 |
SQLDataException | 22 |
SQLIntegrityConstraintViolationException | 23 |
SQLInvalidAuthorizationException | 28 |
SQLSyntaxErrorException | 42 |
Transient Exception:当先前执行失败的JDBC操作在没有任何应用级功能干涉的情况下可能成功执行时,该异常被抛出。继承自SQLTransientException的新异常如表4所列:
Exception class SQLState | value |
SQLTransientConnectionException | 08 |
SQLTransactionRollbackException | 40 |
SQLTimeoutException | None |
因果关系
SQLException类现在支持Java SE链式异常机制(又称因果工具),它使我们能在一个JDBC操作中处理多条SQLException异常(如果后台数据库支持多条异常特性)。这种情形发生在执行一条可能会抛出多条SQLException异常的语句时。
我们可以调用SQLException中的getNextException()方法在异常链中进行迭代。这里是一些处理getNextException()因果关系的范例代码:
catch(SQLException ex) { while(ex != null) { LOG.error("SQL State:" + ex.getSQLState()); LOG.error("Error Code:" + ex.getErrorCode()); LOG.error("Message:" + ex.getMessage()); Throwable t = ex.getCause(); while(t != null) { LOG.error("Cause:" + t); t = t.getCause(); } ex = ex.getNextException(); } } |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者