快速应用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)