您现在的位置:中国下载站学院中心网络编程JAVA教程JAVA实例教程 → 文章列表

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

作者:佚名  来源:不详  发布时间:2007-4-13 17:40:26   

减小字体 增大字体

 
 

  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 srcorgvivianjeehivecontrolsexamplescontrolseans

  Demo.java

1. package org.vivianj.beehive.controls.examples.beans;
2.
3.
4. /**
5. * Demo 用于表征Beehive JDBC控件例子中的Demo对象
6. */
7. public class Demo implements java.io.Serializable{
8. private int id;
9.
10. private String name;
11.
12. private String value;
13.
14. public int getId() {
15. return id;
16. }
17.
18. public void setId(int id) {
19. this.id = id;
20. }
21.
22. public String getName() {
23. return name;
24. }
25.
26. public void setName(String name) {
27. this.name = name;
28. }
29.
30. public String getValue() {
31. return value;
32. }
33.
34. public void setValue(String value) {
35. this.value = value;
36. }
37.
38. }

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

[责任编辑:cndownzcom]

  

  清单2 srcorgvivianjeehivecontrolsexamplescontrols

  DemoMySQLControl.java

1. package org.vivianj.beehive.controls.examples.controls;
2.
3. import org.apache.beehive.controls.api.bean.ControlExtension;
4. import org.apache.beehive.controls.system.jdbc.JdbcControl;
5. import org.vivianj.beehive.controls.examples.beans.Demo;
6.
7. /**
8. * DemoMySQLControl 用于封装访问MySQL数据库中的Demo数据
9. 表的所有业务逻辑
10. * 包括新增、删除、修改、根据id查找对应的记录、查找所有Demo
11. 数据表中的记录、根据条件查找所有数据表中的记录
12. * 数据库访问时根据参数从DriverManager中获取数据库连接
13. */
14.
15. @ControlExtension
16. @JdbcControl.ConnectionDriver(
17. databaseDriverClass = "org.gjt.mm.mysql.Driver",
18. databaseURL = "jdbc:mysql://localhost/estore ",
19. userName = “root”, password = “root”)
20. public interface DemoMySQLControl extends JdbcControl {
21. /**
22. * 向数据表demo中增加新的记录
23. *
24. * @param demo
25. * 新增加的Demo对象
26. */
27. @SQL(statement = "insert into demo(name,value)
28. values({demo.name},{demo.value})")
29. public void createDemo(Demo demo);
30.
31. /**
32. * 修改数据表demo中demo.id对应记录的name和value信息
33. *
34. * @param demo
35. * 被修改的Demo对象
36. */
37. @SQL(statement = "update demo set name={demo.name},
38. value={demo.value} where id={demo.id}")
39. public void updateDemo(Demo demo);
40.
41. /**
42. * 删除数据表demo中demoId对应的记录
43. *
44. * @param demoId
45. * 被删除的Demo对象的id属性
46. */
47. @SQL(statement = "delete from demo where id={demoId}")
48. public void deleteDemo(int demoId);
49.
50. /**
51. * 根据demoId查找Demo数据库中对应的记录,返回对应的
52. Demo对象
53. *
54. * @param demoId
55. * 查找Demo对象的id属性
56. * @return id属性为demoId的记录
57. */
58. @SQL(statement = "select id,name,value from demo
59. where id={demoId}")
60. public Demo getDemoById(int demoId);
61.
62. /**
63. * 返回Demo数据表中所有记录集合
64. *
65. * @return Demo数据表中所有记录集合
66. */
67. @SQL(statement = "select id,name,value from demo")
68. public Demo[] getDemos();
69.
70. /**
71. *
72. * @param name
73. * @return
74. */
75. @SQL(statement = "select id,name,value from demo
76. where name like {sql: name}")
77. public Demo[] getDemosFilterByName(String name);
78. }
  控件调用

[责任编辑:cndownzcom]

  我们可以编写DemoMySQLControl控件的测试类,然后通过如下方式来完成控件中业务方法的调用。

  在测试类中采用声明式控件实例化方式来实例化DemoMySQLControl控件。

  ·@Control

  DemoMySQLControl _control;

  调用控件的相关业务方法来实现业务逻辑。

  下面的代码段可以完成Demo对象的新增功能。

Demo demo = new Demo();
demo.setName(“name”);
demo.setValue(“value”);
_control.createDemo(demo);

  实例分析

  从上面的例子中我们可以看到,通过继承JDBC控件来完成JDBC数据源的访问是一件非常简单的事情,开发者需要完成的工作被简化为两项:编写表征访问对象的JavaBean和使用声明完成业务方法和逻辑的实现,这样的开发过程大大的简化了开发者的工作,极大地减少了开发者的代码编写量。

  下面我们详细的分析一下继承JDBC控件的子类DemoMySQLControl:

15. @ControlExtension

  在程序的第15行,我们使用@ControlExtension来注释将要创建的这个接口继承了另外的控件接口

16.@JdbcControl.ConnectionDriver(
17.databaseDriverClass = “org.gjt.mm.mysql.Driver”,
18.databaseURL = "jdbc:mysql://localhost/estore ",
19.userName = “root”, password = “king”)

  在程序的第16~19行我们使用@JdbcControl.ConnectionDriver注释来为将要创建的接口指定一些需要传递的参数,这里主要是一些数据库访问时所需要的JDBC驱动类、JDBC访问URL、数据库访问用户名和密码等必要信息。

20.public interface DemoMySQLControl extends JdbcControl { 在程序的第20行使用extends关键字表示将要创建的接口DemoMySQLControl和JdbcControl接口之间的继承关系
27.@SQL(statement = "insert into demo(name,value)
28.values({demo.name},{demo.value})")

  在程序的第27~28行使用@SQL关键字注释接下来定义的这个业务方法所需要执行的业务逻辑,其中的{}表示对传入参数的调用,{}包含的内容表示了需要处理的参数,这些参数的表示方法遵循面向对象的属性调用方式,JDBC控件的解析器会将这些代码转化为对应的getter方法调用。

29.public void createDemo(Demo demo);

  在程序的第29行,采用常用的接口方法声明了该控件的一个访问接口。

[责任编辑:cndownzcom]

  后面的代码采用和27~29行相应的原理定义了其它需要实现的业务方法。需要注意的是,定义查询类方法时,如果只需要返回一条记录,目前通常的做法是返回一个Demo对象。如果返回的记录有超过一条的可能性,返回的是符合查询条件的Demo对象数组、List对象等,请参考《JDBC控件返回类型》部分的内容。

  前面的内容中,我们已经通过继承JDBC


在百度中搜索更多快速应用JDBC控件访问数据库资源相关网页 转贴于:中国下载站

  • 上一篇文章:Spring的核心机制依赖注入简介
  • 下一篇文章:使用Spring更好地处理Struts动作
  • 阅读统计:[]
  • 中国下载站】【设为主页】【收藏本页】【打印本文】【回到顶部】【关闭此页

    相关文章
    文章评论(评论内容只代表网友观点,与本站立场无关!)

    用户名: 查看更多评论

    分 值:100分 85分 70分 55分 40分 25分 10分 0分

    内 容:

             (注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码


    设为首页 - 关于我们 - 广告服务 - 网站地图 - 加入收藏 - 网站声明 - 网站帮助 - 友情链接

    • Copyright (C) 2006-2008 www.cndownz.com All Rights Reserved.
      中国下载站 版权所有. 粤ICP备05141802号. 对本站有任何建议、意见或投诉,请来信:cndownzcom@yahoo.com.cn.
      喜欢中国下载站(cndownz.com),请把中国下载站(cndownz.com)告诉你QQ上的5位好友,多谢支持!