分类:
2008-09-09 17:23:47
JDBC控件是Beehive1.0中提供的访问JDBC数据源的控件。通过继承JDBC控件,我们根本无须关注访问数据库资源的通讯细节,只需要定义自己的业务方法,增加相应的注释来描述该继承子类,我们就可以非常轻松的实现企业应用中JDBC数据源的访问。
JDBC控件的所有注释在org.apache.beehive.controls.system.jdbc.JdbcControl接口中定义,Beehive编译器在编译时将检查这些注释是否使用正确。
本节中首先将通过一个简单的例子来演示如何通过继承JDBC控件来访问JDBC数据源,完成一个数据表的增加、删除、修改、查询等业务逻辑,随后将介绍如何使用JDBC控件访问JDBC数据源的更多技巧。
本节中所有演示例子对应的JDBC数据源均为MySQL数据库。
第一个JDBC控件的例子接下来的这段例子将演示如何通过继承JDBC控件来完成JDBC数据源的访问,实现JDBC数据源中一个数据表中记录增加、删除、修改和查询的业务逻辑。
在演示例子中,为了保证演示的简洁,我们使用JDBC直接连接到数据库,而没有使用通常访问数据库所采用的DataSource技术。
第一个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 '' );
清单1 src\org\vivianj\beehive\controls\examples\controls\beans\
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控件,增加自己的业务方法
清单2 src\org\vivianj\beehive\controls\examples\controls\
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. }
[1]