The Data
- The database (an example)
create database TestDB;
use TestDB;
CREATE TABLE TestDB.`users` (
`userid` int(11) NOT NULL AUTO_INCREMENT,
`firstname` varchar(45) DEFAULT NULL,
`lastname` varchar(45) DEFAULT NULL,
`dob` date DEFAULT NULL,
`email` varchar(100) DEFAULT NULL,
PRIMARY KEY (`userid`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8
The handy ORM
public class User {
private int userid;
private String firstName;
private String lastName;
private Date dob;
private String email;
public int getUserid() {
return userid;
}
public void setUserid(int userid) {
this.userid = userid;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public Date getDob() {
return dob;
}
public void setDob(Date dob) {
this.dob = dob;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "User [userid=" + userid + ", firstName=" + firstName
+ ", lastName=" + lastName + ", dob=" + dob + ", email="
+ email + "]";
}
}
- The DAO (insert, select, update, delete)
1
2 package dao;
3
4 import entities.User;
5 import gm.GM;
6 import java.sql.Connection;
7 import java.sql.PreparedStatement;
8 import java.sql.ResultSet;
9 import java.sql.SQLException;
10 import java.sql.Statement;
11 import java.util.ArrayList;
12 import java.util.List;
13 import javax.naming.NamingException;
14
15
16
17 @author
18
19 public class UserDao {
20 public static void addUser(User user) throws SQLException, NamingException {
21 Connection connection = GM.getTestDB().getConnection();
22 PreparedStatement preparedStatement = connection
23 .prepareStatement("insert into users(firstname,lastname,dob,email) values (?, ?, ?, ? )");
24
25 preparedStatement.setString(1, user.getFirstName());
26 preparedStatement.setString(2, user.getLastName());
27 preparedStatement.setDate(3, new java.sql.Date(user.getDob().getTime()));
28 preparedStatement.setString(4, user.getEmail());
29 preparedStatement.executeUpdate();
30
31
32 }
33
34 public static void deleteUser(int userId) throws NamingException, SQLException {
35 Connection connection = GM.getTestDB().getConnection();
36 PreparedStatement preparedStatement = connection
37 .prepareStatement("delete from users where userid=?");
38
39 preparedStatement.setInt(1, userId);
40 preparedStatement.executeUpdate();
41
42 }
43
44 public static void updateUser(User user) throws NamingException, SQLException {
45 Connection connection = GM.getTestDB().getConnection();
46 PreparedStatement preparedStatement = connection
47 .prepareStatement("update users set firstname=?, lastname=?, dob=?, email=?" +
48 "where userid=?");
49
50 preparedStatement.setString(1, user.getFirstName());
51 preparedStatement.setString(2, user.getLastName());
52 preparedStatement.setDate(3, new java.sql.Date(user.getDob().getTime()));
53 preparedStatement.setString(4, user.getEmail());
54 preparedStatement.setInt(5, user.getUserid());
55 preparedStatement.executeUpdate();
56
57
58 }
59
60 public static List<User> getAllUsers() throws NamingException, SQLException {
61 List<User> users = new ArrayList<User>();
62 Connection connection = GM.getTestDB().getConnection();
63 Statement statement = connection.createStatement();
64 ResultSet rs = statement.executeQuery("select * from users");
65 while (rs.next()) {
66 User user = new User();
67 user.setUserid(rs.getInt("userid"));
68 user.setFirstName(rs.getString("firstname"));
69 user.setLastName(rs.getString("lastname"));
70 user.setDob(new java.util.Date(rs.getDate("dob").getTime()));
71 user.setEmail(rs.getString("email"));
72 users.add(user);
73 }
74
75
76 return users;
77 }
78
79 public static User getUserById(int userId) throws NamingException, SQLException {
80 User user = new User();
81 Connection connection = GM.getTestDB().getConnection();
82 PreparedStatement preparedStatement = connection.
83 prepareStatement("select * from users where userid=?");
84 preparedStatement.setInt(1, userId);
85 ResultSet rs = preparedStatement.executeQuery();
86
87 if (rs.next()) {
88 user.setUserid(rs.getInt("userid"));
89 user.setFirstName(rs.getString("firstname"));
90 user.setLastName(rs.getString("lastname"));
91 user.setDob(rs.getDate("dob"));
92 user.setEmail(rs.getString("email"));
93 }
94
95 return user;
96 }
97 }
98
The UI
Create the UserControl managedBean
1 package mb;
2
3 import dao.UserDao;
4 import entities.User;
5 import java.sql.SQLException;
6 import java.util.List;
7 import javax.faces.bean.ManagedBean;
8 import javax.faces.bean.SessionScoped;
9 import javax.naming.NamingException;
10
11
12 A minimal Managed Bean for CRUD 2 attributes
13 one for current User
14 one for the list of users
15 @author
16
17 @ManagedBean
18 @SessionScoped
19 public class UserControl {
20 private User selectedUser;
21 private List<User> lusers;
22
23
24
25 public UserControl() {
26 selectedUser=new User();
27 }
28
29
30 @return
31
32 public User getSelectedUser() {
33 return selectedUser;
34 }
35
36
37 @param selectedUser
38
39 public void setSelectedUser(User selectedUser) {
40 this.selectedUser = selectedUser;
41 }
42
43
44 @return
45
46 public List<User> getLusers() throws NamingException, SQLException {
47 lusers=UserDao.getAllUsers();
48 return lusers;
49 }
50
51
52 @param lusers
53
54 public void setLusers(List<User> lusers) {
55 this.lusers = lusers;
56 }
57
58 public String create() throws SQLException, NamingException {
59 UserDao.addUser(selectedUser);
60
61 return "index";
62
63 }
64 }
Minimal pages : List Users and Create Users
1 <?xml version='1.0' encoding='UTF-8' ?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml"
4 xmlns:h="http://java.sun.com/jsf/html"
5 xmlns:f="http://java.sun.com/jsf/core">
6 <h:head>
7 <title>Facelet Title</title>
8 </h:head>
9 <h:body>
10 <f:view>
11 <h:form>
12 <h:dataTable border="1" value="#{userControl.lusers}" var="item">
13 <h:column>#{item.firstName}</h:column>
14 <h:column>#{item.lastName}</h:column>
15 <h:column>#{item.userid}</h:column>
16 <h:column>#{item.email}</h:column>
17 <h:column>
18 <h:outputText value="#{item.dob}" />
19 </h:column>
20 </h:dataTable>
21 </h:form>
22 </f:view>
23
24 </h:body>
25 </html>
===
1 <?xml version='1.0' encoding='UTF-8' ?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml"
4 xmlns:h="http://java.sun.com/jsf/html"
5 xmlns:f="http://java.sun.com/jsf/core">
6 <h:head>
7 <title>Crud Example : Create a user</title>
8 </h:head>
9 <h:body>
10 <f:view>
11 <h:form>
12 <h:outputLabel value="Nom" for="nom" />
13 <h:inputText id="nom" value="#{userControl.selectedUser.lastName}" />
14 <h:outputLabel value="PreNom" for="prenom" />
15 <h:inputText id="prenom" value="#{userControl.selectedUser.firstName}" />
16 <h:outputLabel value="Email" for="email" />
17 <h:inputText id="email" required="true" label="email" size="40"
18 requiredMessage="Please enter your email address."
19 validatorMessage="Invalid email format"
20 value="#{userControl.selectedUser.email}">
21 <f:validateRegex
22 pattern="^[_A-Za-z0-9-\+]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$" />
23 </h:inputText>
24 <h:message for="email" />
25 <h:inputText value="#{userControl.selectedUser.dob}" >
26 <f:convertDateTime pattern="dd-MM-yyyy" />
27 </h:inputText>
28 <h:commandButton action="#{userControl.create()}" value="Create" />
29 </h:form>
30 </f:view>
31 </h:body>
32 </html>