|
快速应用JDBC控件访问数据库资源(5) Public Demo[] getDemos();
·从业务方法中获取基本类型参数
下面的statement中,我们使用{demoId}变量从getDemoById()方法调用中获取传入的参数demoId。
@SQL(statement=“select * from demo where id={demoId}” ) Public Demo[] getDemoById(int demoId);
·从业务方法中获取Java对象类型参数
下面的statement中,我们使用{demo.name}变量表示从createDemo ()方法调用中获取传入的Java类对象demo的name属性的内容。
@SQL(statement = “insert into demo(name,value) values({demo.name},{demo.value})”) public void createDemo(Demo demo);
·从业务方法中获取完整SQL语句
有些时候,SQL语句可能需要动态生成,这时候statement默认的方式无法帮开发者完成这个过程,而是需要在Java代码中完成SQL语句的组装后传递给业务方法,这种情况下我们可以使用{sql: …}的方式向statement中传递一个完整的sql语句。
@SQL(statement=“{sql: totalsql}” ) Public Demo[] getDemos(String totalsql);
·从业务方法中获取SQL语句片断
statement还支持某一段SQL语句从业务方法的参数中获取,比如下面的这个例子中,只有最后的{sql: name}来源于业务方法中的参数。
@SQL(statement = “select id,name,value from demo where name like {sql: name}”) public Demo[] getDemosFilterByName(String name);
这种方式可以解决SQL语句中包含引号等特殊字符的问题,解决方法是你可以在业务方法调用之前使用Java代码创建包含这些特殊字符串的内容,然后通过sql片断的方式发送给statement。
这种方式另外一种用途是可以解决SQL语句部分片断需要动态生成的问题,举个例子,我们的多条件查询的条件下,用户可以选择按照一个或者多个条件进行查询,所以where语句后面的条件是动态的,这种情况下,我们就可以把判断和SQL语句中where语句的生成这部分功能实现分离到Java语句中,然后作为业务方法调用参数传递到statement中来。
调用存储过程
JDBC控件支持对存储过程的调用,只需要在statement中配置里面采用{call …}这样的方式表示当前执行的是一个存储过程就可以了,下面的例子演示了如何调用存储过程以及如何向调用过程传递参数。
@SQL(statement=“call sp_updateData({keyVal}, {intVal})” void call_sp_updateCust(short keyVal, int intVal);
控件返回类型
继承JDBC控件后声明业务方法时,查询类业务方法需要返回数据,在业务逻辑中,需要返回的业务数据通常可以分为三种:
·简单字段。
比如要查询今天有多少人访问了我们的系统、编号Id为1000的用户他的真实姓名是什么?。
·单条记录。
比如查询结果需要返回编号为1000的用户。
·多条记录。
比如查询结果需要返回所有系统用户。
本节中将按照这三种不同的情况给大家介绍JDBC控件所支持的返回类型以及内部处理机制。
使用控件返回简单字段
JDBC控件支持所有Java基本类型及其对应对象类型的返回,比如int、Integer、String等,在继承JDBC控件后声明业务方法时,只需要声明所需要的返回类型,JDBC控件会自动将SQL操作结果造型为所需要的返回类型。
比如我们声明一个业务方法:
@SQL(statement = “select count(*) from demo”)
|