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
:-