`
kingsz1
  • 浏览: 156977 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

学学ZK - 从 derby 读记录 ZK + JPA

阅读更多
1. 参考文献和引用声明
本文主要参考:
Tutorial: Reading from the DB with Netbeans and ZK (Part 2)
http://javadude.wordpress.com/2009/03/24/tutorial-reading-from-the-db-with-netbeans-and-zk-part-2/

我使用了该文的代码,结合另一数据库的数据,稍加修改。原代码版权归原作者所有。

2. 数据库及 persistence.xml
我仍沿用 USERShttp://kingsz1.iteye.com/admin/blogs/356416 数据库。这是 persistence.xml 的内容:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
  <persistence-unit name="ZKJPA3PU" transaction-type="RESOURCE_LOCAL">
    <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
    <class>entity.Users</class>
    <exclude-unlisted-classes>true</exclude-unlisted-classes>
    <properties>
      <property name="openjpa.ConnectionPassword" value="admin"/>
      <property name="openjpa.ConnectionDriverName" value="org.apache.derby.jdbc.ClientDriver"/>
      <property name="openjpa.ConnectionUserName" value="admin"/>
      <property name="openjpa.ConnectionURL" value="jdbc:derby://localhost:1527/USERS"/>
    </properties>
  </persistence-unit>
</persistence>




3. 实体类及其控制
实体类 Users.java ,从数据库生成,没有修改过。

package entity;

import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;

/**
 *
 * @author admin
 */
@Entity
@Table(name = "USERS")
@NamedQueries({@NamedQuery(name = "Users.findAll", query = "SELECT u FROM Users u"), @NamedQuery(name = "Users.findById", query = "SELECT u FROM Users u WHERE u.id = :id"), @NamedQuery(name = "Users.findByName", query = "SELECT u FROM Users u WHERE u.name = :name"), @NamedQuery(name = "Users.findByLoginid", query = "SELECT u FROM Users u WHERE u.loginid = :loginid"), @NamedQuery(name = "Users.findByPassword", query = "SELECT u FROM Users u WHERE u.password = :password"), @NamedQuery(name = "Users.findByAge", query = "SELECT u FROM Users u WHERE u.age = :age")})
public class Users implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "ID")
    private Integer id;
    @Basic(optional = false)
    @Column(name = "NAME")
    private String name;
    @Basic(optional = false)
    @Column(name = "LOGINID")
    private String loginid;
    @Basic(optional = false)
    @Column(name = "PASSWORD")
    private String password;
    @Basic(optional = false)
    @Column(name = "AGE")
    private int age;

    public Users() {
    }

    public Users(Integer id) {
        this.id = id;
    }

    public Users(Integer id, String name, String loginid, String password, int age) {
        this.id = id;
        this.name = name;
        this.loginid = loginid;
        this.password = password;
        this.age = age;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getLoginid() {
        return loginid;
    }

    public void setLoginid(String loginid) {
        this.loginid = loginid;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Users)) {
            return false;
        }
        Users other = (Users) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "entity.Users[id=" + id + "]";
    }

}



实体类的控制类 Controller.java ,从数据库取数,放入 List


package test;

import entity.Users;

import java.util.ArrayList;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import org.zkoss.zul.Window;

public class Controller extends Window {

    List users = new ArrayList();
    Users selected = new Users();

    public Controller() {
        EntityManagerFactory emf;
        emf = Persistence.createEntityManagerFactory("ZKJPA3PU");
        EntityManager em = emf.createEntityManager();
        javax.persistence.Query q = em.createQuery("select u from Users as u");
        users = q.getResultList();
        em.close();
    }

    public List getUsers() {
        return users;
    }

    public Users getSelected() {
        return selected;
    }

    public void setSelected(Users selected) {
        this.selected = selected;
    }
}



4. ZK 文件 index.zul


<?xml version="1.0" encoding="UTF-8" ?>
<?page id="indexZUL" title="Sample ZK with JPA + Derby" cacheable="false"
	language="xul/html" zscriptLanguage="Java" contentType="text/html;charset=UTF-8"?>
<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit"?>

<zk xmlns="http://www.zkoss.org/2005/zul"
	xmlns:h="http://www.w3.org/1999/xhtml"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.zkoss.org/2005/zul http://www.zkoss.org/2005/zul/zul.xsd">

<window id="win" title="Sample ZK with JPA + Derby " border="normal" width="97%" height="95%"
mode="overlapped" position="center" use="test.Controller">

    <listbox id="lb" model="@{win.users}" selectedItem="@{win.selected}" mold="paging" pageSize="4">
            <listhead sizable="true">
            <listheader label="Name 姓名" width="150px"/>
            <listheader label="LoginID 登录名" width="250px"/>
            <listheader label="Password 密码" width="150px"/>
            <listheader label="Age 年龄" width="50px"/>
        </listhead>
        <listitem self="@{each=users}">
            <listcell label="@{users.name}"/>
            <listcell label="@{users.loginid}"/>
            <listcell label="@{users.password}"/>
            <listcell label="@{users.age}"/>
        </listitem>
    </listbox>

  <separator bar="true"/>

    <hbox>
        <groupbox id="gb" mold="3d" width="100%">
            <caption label="Selected User"/>
            Name: <textbox id="name"  cols="30" value="@{win.selected.name}" />
            LoginID: <textbox id="loginid" cols="20" value="@{win.selected.loginid}" />
            Password: <textbox id="password" cols="20" value="@{win.selected.password}" />
            Age: <textbox id="age" cols="6" value="@{win.selected.age}" />
        </groupbox>
    </hbox>

</window>
</zk>



5. 试运行。
可分页显示数据库记录,每页4个记录,当然太少了,要改就该这里:
 pageSize="4" 


点击某个记录,在下面的 textbox 显示各字段内容。

如果加入更多的控制,就可以添加、修改、删除记录了。继续读书,继续模仿。

:-
分享到:
评论

相关推荐

    springmvc-thymeleaf-jpa:Spring MVC + Thymeleaf,Spring Security,Spring ORM + Spring Data JPA产品

    springmvc-百里香叶-jpa Spring MVC + Thymeleaf,Spring Security,Spring ORM + Spring Data JPA产品用以下技术开发的对象: Spring Security,Spring MVC和Thymeleaf。 Spring JDBC,Spring ORM,Spring Data JPA...

    db-derby-10.11.1.1-src.zip

    7. **JDBC和JPA支持**:Derby提供了JDBC驱动程序,可以方便地通过Java应用程序访问数据库,同时,它也支持Java Persistence API (JPA),简化对象关系映射。 在"db-derby-10.11.1.1-src"中,包含了Derby数据库的主要...

    db-derby-10.11.1.1-bin.zip

    Apache Derby,也被称为Java DB,是一款轻量级、开源的关系型数据库管理系统,完全用Java编写,遵循Apache软件基金会的开放源代码协议。这个名为"db-derby-10.11.1.1-bin.zip"的压缩包包含了Apache Derby 10.11.1.1...

    db-derby-10.11

    Java Derby,全称为Apache Derby,是一款轻量级、开源的关系型数据库管理系统,它完全由Java编写,因此可以在任何支持Java的平台上运行。作为Apache软件基金会的项目,Derby以其小巧、高效、易于集成的特点,被广泛...

    db-derby-10.13.1.1-bin.tar.gz

    Apache Derby,也被称为Java DB,是Apache软件基金会开发的一个开源、免费的关系型数据库管理系统,它完全用Java编写,遵循Java Community Process的JSR 229标准。db-derby-10.13.1.1-bin.tar.gz 是一个包含Apache ...

    prototype-jpa:带有 JUnit 和 Derby 的 Java JPA 原型

    原型-jpa 带有 JUnit 和 Derby 的 Java JPA 原型。 使用 JPA 和 Eclipse Link 进行数据库开发的基本结构。 使用 JUnit 和 Derby 在 maven 测试周期中测试 JPA 实体。

    spring3+hibernate3+derby的实例

    在IT行业中,Spring、Hibernate和Derby是三个非常重要的开源框架和数据库系统,它们在Java Web开发中扮演着关键角色。下面将详细解释这三个技术及其整合应用。 **Spring框架** Spring是一个全面的Java应用程序框架...

    db-derby.rar_derby_derby java

    【标题】"db-derby.rar_derby_derby_java" 指向的是一个与Apache Derby相关的压缩包,其中可能包含了Derby数据库的资源和Java相关的开发材料。Apache Derby是一款开源的关系型数据库管理系统,它是Java编写并且完全...

    db-derby-10.14.2.0-lib.zip

    Apache Derby数据库 Derby数据库是一个纯用Java实现的珍袖型的数据库,属于Apache的一个开源项目。由于是用Java实现的,所以可以在任何平台上运行;另外一个特点是体积小,免安装,java1.6开始集成了derby数据库,...

    spring-boot-derby:Apache Derby嵌入式数据库的Spring Boot Java技术员

    `spring-boot-starter-data-jpa`是Spring Boot提供的数据访问层的起步依赖,包含了JPA(Java Persistence API)和Hibernate等组件,而`derby`依赖则提供了运行时所需的Derby数据库。 接下来,Spring Boot会自动配置...

    apache derby 学习资料

    收集的学习资料,包括:Derby数据库(V10.9)用户手册(PDF版),用 Apache Derby 进行 Java 数据库开发,用 Apache Derby 进行数据库开发,03开源项目(三)嵌入式数据库Apache Derby(1)(开发指南).pdf ,Apache Derby ...

    springboot+derby+mybatisplus+swagger2例子

    Apache Derby 是100% Java 编写的内存数据库,...这里直接以derby实现一个例子,方便需要了解的同学参考,也有很多时候写demo或者小工具的时候可以用到这种嵌入式的数据库 springboot+derby+mybatisplus+swagger2例子

    db-derby-10.5.1.1.jar(全)

    Derby数据库是一个开源的关系型数据库管理系统,由IBM开发并维护,它是Java平台上的轻量级数据库,特别适合于嵌入式应用和开发环境。在Java应用程序中,Derby提供了便捷的本地存储和检索数据的能力,无需安装独立的...

    经典JAVA EE企业应用实战 基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发.part03

    经典JAVA EE企业应用实战 基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发。第三部分。

    derby+myBatis 入门

    【标题】:“derby+myBatis 入门” 【描述】:这篇博客文章主要介绍了如何开始使用Apache Derby数据库和MyBatis框架进行Java开发。Apache Derby是一个轻量级、嵌入式的关系型数据库,而MyBatis则是一个流行的持久层...

    apache-derby.jar

    apache-derby.jar

    db-derby-10.6.2.1

    Apache Derby,也被称为Java DB,是Apache软件基金会开发的一个开源的关系型数据库管理系统,完全用Java编写,遵循Apache 2.0许可证。这个“db-derby-10.6.2.1”版本代表着Derby数据库的一个特定发行版,发布于2009...

    derby-examples, Derby框架的示例应用程序.zip

    derby-examples, Derby框架的示例应用程序 Derby框架使得编写实时的协作应用程序变得很容易,在 node.js 和浏览器中运行。请参见 http://derbyjs.com/示例聊天http://chat.derbyjs.com/lobby简单的聊天演示请注意,...

    derby(API)使用手册(最新)

    Derby API 使用手册是针对Apache Derby数据库管理系统的一份详尽指南。Apache Derby是一款开源、轻量级、嵌入式的关系型数据库系统,它基于Java语言并遵循Java Database Connectivity (JDBC) API。这份手册主要面向...

Global site tag (gtag.js) - Google Analytics