学学ZK - ZK+OpenJPA+Derby 数据库记录列表 2

6. 生成实体类
在项目名字上,点鼠标右键,选 “新建”,“通过数据库生成实体类”



在数据源项,选“新建数据源”



创建新的数据源时,输入 JNDI 名称:users (当然也可以给其他名字),数据库连接则选刚才我们新建的数据库 USERS.



现在,数据源和表都选好了,点一下表名 USER, 点“添加”



输入一个包名,例如 entity,然后点“创建持久性单元”



持久性单元名称用自动给出的即可,持久性提供器则选“OpenJPA”



注:前面设置OpenJPA 的 jar 为库,并在项目添加了这个库,这里才可选OpenJPA。

点“创建”,即可



现在,实体类 Users.java 就会自动生成。这个文件不需要做任何改动。



在项目的“配置文件”项下,可以见到自动生成的 persistence.xml,点一下这个文件,就会打开。去除已勾选的“在 ???模块中包含所有实体类”,然后点列出的实体类,点“添加类”。保存。



上图看到的“设计”概要,如果点一下“XML”,就是这样的:



7. 建立 访问数据库的 控制类
点项目名称,“新建”,“Java 类”



给个名字把,例如 Controller, 给个包名,例如 test



输入以下代码:


package test;

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();

    public Controller() {
        EntityManagerFactory emf;
        emf = Persistence.createEntityManagerFactory("ZKJPA2PU");
        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;
    }

}



需要提示的是这一行:
        emf = Persistence.createEntityManagerFactory("ZKJPA2PU");

这里使用了持久性单元的名字“ZKJPA2PU”,是从 persistence.xml 来的。如果在  persistence.xml 是用其他的名字,这里就需要相应修改。



8. 使用 ZK 缺省的 web.xml
从 zkoss.org 的文档,找到 web.xml 样板,见这里:
http://docs.zkoss.org/wiki/Developer_reference_Appendix_A._WEB-INF/web.xml_Sample_of_web.xml

把sample 内容复制下来。
点项目,“web页”,“WEB-INF”,点 “web.xml”,把原来的内容全部删除,贴上 zk 的 web.xml 样本内容,不需要做其他修改,保存即可。



9. 建立 index.zul
点项目,“新建”,“空文件”,给出文件名:index.zul,存放于 web 目录下
注:如果在这个目录下有 index.jsp 文件,要把它删除!





输入以下代码:

<?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" width="800" height="300" >
    <listhead sizable="true">
    <listheader label="Name 姓名" sort="auto" width="150px"/>
    <listheader label="LoginID 登录名" width="120px" />
    <listheader label="Password 密码"  width="120px" />
    <listheader label="Age 年龄" sort="auto"  width="100px"/>
    </listhead>

    <listitem forEach="${win.users}" value="${each}">
    <listcell label="${each.name}"/>
    <listcell label="${each.loginid}"/>
    <listcell label="${each.password}"/>
    <listcell label="${each.age}"/>
    </listitem>

    </listbox>
    
</window>
</zk>



保存。这里,Window 引用 test.Controller 就是我们建立的访问数据库的类,从这个类返回数据库记录为List,然后在zk 的listbox 显示。



10. 运行
NetBeans 点 运行,即可在新开的页面显示数据库的记录。


更多使用JPA对数据库记录的操作,可以学习这篇:
  在Java SE环境下使用JPA1.0(Java EE 5.0 中的主要组成部分)
  http://blog.csdn.net/kamhung/archive/2006/08/14/1064380.aspx

:-

你可能感兴趣的:(xml,Web,jpa,zk,Derby)