JSF数据库示例– MySQL JDBC
时间:2020-02-23 14:33:42 来源:igfitidea点击:
欢迎使用JSF数据库示例。
我们将在MySQL数据库中使用JSF,并在示例中使用JDBC。
可以将Java Server Faces连接到数据库,以使用JDBC API对数据执行操作。
JSF数据库示例
让我们考虑一个示例,该示例从驻留在数据库中的Car表中提取数据并使用JDBC显示它们。
首先,如下所示在mysql数据库中创建car表。
创建一个新的数据库cardb为
CREATE DATABASE cardb;
使用创建的数据库cardb将表创建为
USE cardb;
创建桌子车,如下所示
CREATE TABLE Car( car_id INTEGER NOT NULL AUTO_INCREMENT, cname VARCHAR(60) NOT NULL, color VARCHAR(60), speed INTEGER, Manufactured_Country VARCHAR(100), PRIMARY KEY(car_id));
现在我们将一些值插入Car表中,如下所示:
INSERT INTO Car VALUES(1,'Zen','Grey',45.34,'San Franceco'); INSERT INTO Car VALUES(2,'Volkswagen','Black',49.64,'Germany'); INSERT INTO Car VALUES(3,'Polo','White',52.33,'Japan'); INSERT INTO Car VALUES(4,'Audi','Blue',55.98,'Germany'); INSERT INTO Car VALUES(5,'Innova','Maroon',39.97,'France'); INSERT INTO Car VALUES(6,'FiatPalio','Silver',35.45,'Italy'); INSERT INTO Car VALUES(7,'Qualis','Red',23.35,'Paris');
模型类
现在,使用字段以及getter和setter方法创建普通的旧Java对象类Car.java
,如下所示。
package com.theitroad.jsf.beans; public class Car { private Integer cid; private String cname; private String color; private Integer speed; private String mfdctry; public Car() { } public Car(Integer cid, String cname, String color, Integer speed, String mfdctry) { this.cid = cid; this.cname = cname; this.color = color; this.speed = speed; this.mfdctry = mfdctry; } public Integer getCid() { return cid; } public void setCid(Integer cid) { this.cid = cid; } public String getCname() { return cname; } public void setCname(String cname) { this.cname = cname; } public String getColor() { return color; } public void setColor(String color) { this.color = color; } public Integer getSpeed() { return speed; } public void setSpeed(Integer speed) { this.speed = speed; } public String getMfdctry() { return mfdctry; } public void setMfdctry(String mfdctry) { this.mfdctry = mfdctry; } }
创建一个托管bean CarBean.java,我们将使用它通过Class.forName方法建立与数据库的连接,以执行查询以从car表中提取数据。
请注意,这是创建和管理数据库连接的低效方式。
您应该将JNDI Connection与Datasource一起使用或者为此创建实用程序类。
但是,为简单起见,我的项目中没有这些多余的类。
package com.theitroad.jsf.beans; import java.io.Serializable; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; @ManagedBean @SessionScoped public class CarBean implements Serializable { private static final long serialVersionUID = 6081417964063918994L; public List<Car> getCars() throws ClassNotFoundException, SQLException { Connection connect = null; String url = "jdbc:mysql://localhost:3306/cardb"; String username = "hyman"; String password = "hyman123"; try { Class.forName("com.mysql.jdbc.Driver"); connect = DriverManager.getConnection(url, username, password); //System.out.println("Connection established"+connect); } catch (SQLException ex) { System.out.println("in exec"); System.out.println(ex.getMessage()); } List<Car> cars = new ArrayList<Car>(); PreparedStatement pstmt = connect .prepareStatement("select car_id, cname, color, speed, Manufactured_Country from Car"); ResultSet rs = pstmt.executeQuery(); while (rs.next()) { Car car = new Car(); car.setCid(rs.getInt("car_id")); car.setCname(rs.getString("cname")); car.setColor(rs.getString("color")); car.setSpeed(rs.getInt("speed")); car.setMfdctry(rs.getString("Manufactured_Country")); cars.add(car); } //close resources rs.close(); pstmt.close(); connect.close(); return cars; } }
现在创建JSF视图页面car.xhtml
,如下所示。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="https://www.w3.org/1999/xhtml" xmlns:f="https://java.sun.com/jsf/core" xmlns:h="https://java.sun.com/jsf/html"> <h:head> <title>JSF JDBC Integration</title> </h:head> <h:body> <h2>Car Details</h2> <h:dataTable value="#{carBean.cars}" var="car" border="2"> <h:column> <f:facet name="header">Car ID</f:facet> #{car.cid} </h:column> <h:column> <f:facet name="header">Car Name</f:facet> #{car.cname} </h:column> <h:column> <f:facet name="header">Car Color</f:facet> #{car.color} </h:column> <h:column> <f:facet name="header">Car Speed</f:facet> #{car.speed} </h:column> <h:column> <f:facet name="header">Manufactured Country</f:facet> #{car.mfdctry} </h:column> </h:dataTable> </h:body> </html>
注意,我们需要在我们的项目中包括MySQL Connector jar,以获取MySQL数据库连接。
因此,在" pom.xml"文件中添加以下依赖项。
根据您的MySQL安装,添加mysql连接器jar版本。
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.34</version> </dependency>
现在运行该应用程序,您将看到下面的输出响应页面。