Chinaunix首页 | 论坛 | 博客
  • 博客访问: 591030
  • 博文数量: 748
  • 博客积分: 5000
  • 博客等级: 大校
  • 技术积分: 5005
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-08 12:36
文章分类

全部博文(748)

文章存档

2011年(1)

2008年(747)

我的朋友

分类:

2008-09-08 18:23:58

  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技术。

  1. 建立数据表

    在本地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 ''
    );
    
  2. 建立表征Demo对象的Bean
    创建新的应用目录,然后创建表征Demo对象的JavaBean

       清单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. }
  3. 继承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]     

    【责编:Star】

    --------------------next---------------------

阅读(251) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~