快速应用JDBC控件访问数据库资源

发表于:2007-06-11来源:作者:点击数: 标签:
JDBC控件是Beehive1.0中提供的访问JDBC数据源的 Java 控件。通过继承JDBC控件,我们根本无须关注访问数据库资源的通讯细节,只需要定义自己的业务方法,增加相应的注释来描述该继承子类,我们就可以非常轻松的实现企业应用中JDBC数据源的访问。 JDBC控件的所

JDBC控件是Beehive1.0中提供的访问JDBC数据源的Java控件。通过继承JDBC控件,我们根本无须关注访问数据库资源的通讯细节,只需要定义自己的业务方法,增加相应的注释来描述该继承子类,我们就可以非常轻松的实现企业应用中JDBC数据源的访问。

JDBC控件的所有注释在org.apache.beehive.controls.system.jdbc.JdbcControl接口中定义,Beehive编译器在编译时将检查这些注释是否使用正确。

本节中首先将通过一个简单的例子来演示如何通过继承JDBC控件来访问JDBC数据源,完成一个数据表的增加、删除、修改、查询等业务逻辑,随后将介绍如何使用JDBC控件访问JDBC数据源的更多技巧。

本节中所有演示例子对应的JDBC数据源均为MySQL数据库。

一个JDBC控件的例子

将演示如何通过继承JDBC控件来完成JDBC数据源的访问,实现JDBC数据源中一个数据表中记录增加、删除、修改和查询的业务逻辑。

在演示例子中,为了保证演示的简洁,我们使用JDBC直接连接到数据库,而没有使用通常访问数据库所采用的DataSource技术。

建立数据表

在本地MySQL数据库的Demo数据库实例中按照如下DDL建立相应的数据表。

create table demo(

id int(5) primary key auto_increment,

name varchar(20) not null default '',

value varchar(20) not null default ''

);

建立表征Demo对象的JavaBean

创建新的应用目录,然后创建表征Demo对象的JavaBean

清单1

src\org\vivianj\beehive\controls\examples\controls\beans\Demo.java

package org.vivianj.beehive.controls.examples.beans;

/**

* Demo 用于表征Beehive JDBC控件例子中的Demo对象

*/

public class Demo implements java.io.Serializable{

private int id;

private String name;

private String value;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getValue() {

return value;

}

public void setValue(String value) {

this.value = value;

}

}

继承JDBC控件,增加自己的业务方法  

清单2

src\org\vivianj\beehive\controls\examples\controls\DemoMySQLControl.java

package org.vivianj.beehive.controls.examples.controls;

import org.apache.beehive.controls.api.bean.ControlExtension;

import org.apache.beehive.controls.system.jdbc.JdbcControl;

import org.vivianj.beehive.controls.examples.beans.Demo;

/**

* DemoMySQLControl 用于封装访问MySQL数据库中的Demo数据

表的所有业务逻辑

* 包括新增、删除、修改、根据id查找对应的记录、查找所有Demo

数据表中的记录、根据条件查找所有数据表中的记录

* 数据库访问时根据参数从DriverManager中获取数据库连接

*/

@ControlExtension

@JdbcControl.ConnectionDriver(

databaseDriverClass = "org.gjt.mm.mysql.Driver",

databaseURL = "jdbc:mysql://localhost/estore ",

userName = “root”, password = “root”)

public interface DemoMySQLControl extends JdbcControl {

/**

* 向数据表demo中增加新的记录

*

* @param demo

* 新增加的Demo对象

*/

@SQL(statement = "insert into demo(name,value)

values({demo.name},{demo.value})")

public void createDemo(Demo demo);

/**

* 修改数据表demo中demo.id对应记录的name和value信息

*

* @param demo

* 被修改的Demo对象

*/

@SQL(statement = "update demo set name={demo.name},

value={demo.value} where id={demo.id}")

public void updateDemo(Demo demo);

/**

* 删除数据表demo中demoId对应的记录

*

* @param demoId

* 被删除的Demo对象的id属性

*/

@SQL(statement = "delete from demo where id={demoId}")

public void deleteDemo(int demoId);

/**

* 根据demoId查找Demo数据库中对应的记录,返回对应的

Demo对象

*

* @param demoId

* 查找Demo对象的id属性

* @return id属性为demoId的记录

*/

@SQL(statement = "select id,name,value from demo

where id={demoId}")

public Demo getDemoById(int demoId);

/**

* 返回Demo数据表中所有记录集合

*

* @return Demo数据表中所有记录集合

*/

@SQL(statement = "select id,name,value from demo")

public Demo[] getDemos();

/**

*

* @param name

* @return

*/

@SQL(statement = "select id,name,value from demo

where name like {sql: name}")

public Demo[] getDemosFilterByName(String name);

}

(责任编辑 火凤凰 sunsj@51cto.com  TEL:(010)68476636-8007)



原文转自:http://www.ltesting.net

评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
...