[英]Using MongoDB driver POJO's with Java
編輯:我可以將POJO 示例與建議的帖子一起使用到 output 控制台中的用戶列表,但沒有Object id
,如下所示。 這是導致 output 沒有顯示到JSP
頁面的問題嗎?
User [email=didi@abc.com, fullName=Didi Dee, password=asdfwle]
User [email=lucy@abc.com, fullName=Lucy Liu, password=lalla]
我期望的結果如下所示,在瀏覽器的每個標題下顯示用戶詳細信息,
這是在DAO class 中列出用戶的新方法
@Override
public List<User> listAll() {
List<User> userList = new ArrayList<User>();
database.getCollection("User", User.class).find().into(userList);
for (User u : userList) {
System.out.println(u.toString());
}
return userList;
}
我的服務 class
public List<User> listUser() {
List<User> userList = userDAO.listAll();
return userList;
}
Controller
UserService userService = new UserService(request, response);
List<User> userList = userService.listUser();
request.setAttribute("userList", userList); // for jsp to get Attribute
String list_user_page = "user_list.jsp";
RequestDispatcher rd = request.getRequestDispatcher(list_user_page);
rd.forward(request, response);
JSP顯示 output。
<c:forEach items="${userList}" var="user" begin="1">
<tr>
<td>${user.userId}</td>
<td>${user.email}</td>
<td>${user.fullName}</td>
<td><a href="edit_user?id=${user.userId}">Edit</a> <a
href="javascript:void(0);" class="deleteLink" id="${user.userId}">Delete</a>
</td>
</tr>
</c:forEach>
假設如下:
你已經包括
CodecRegistry pojoCodecRegistry = fromRegistries(MongoClientSettings.getDefaultCodecRegistry(),
fromProviders(PojoCodecProvider.builder().automatic(true).build()));
您的數據庫包含以下格式的記錄:
> db.User.find().pretty()
{
"_id" : ObjectId("5f7f92c4d91d2c38583dbfba"),
"fullname" : "Stu Dent",
"email" : "student@uni.versity",
"password" : "passWord"
}
{
"_id" : ObjectId("5f7f9497d91d2c38583dbfbb"),
"fullname" : "A. N. Other",
"email" : "another@uni.versity",
"password" : "strongerPassWord_1"
}
用戶被定義為這樣的 bean:
public class User
{
private String fullname;
private String email;
private String password;
public User()
{
// Default bean constructor
}
public String getFullname()
{
return fullname;
}
public void setFullname(String fullname)
{
this.fullname = fullname;
}
public String getEmail()
{
return email;
}
public void setEmail(String email)
{
this.email = email;
}
public String getPassword()
{
return password;
}
public void setPassword(String password)
{
this.password = password;
}
@Override
public String toString()
{
return "User [fullname=" + fullname + ", email=" + email + ", password=" + password + "]";
}
}
下面的代碼會將數據庫中的內容讀入到userList列表中:
List<User> userList = new ArrayList<User>();
db.getCollection("User", User.class).find().into(userList);
到output名單:
for (User u : userList)
{
System.out.println(u.toString());
}
結果:
User [fullname=Stu Dent, email=student@uni.versity, password=passWord]
User [fullname=A. N. Other, email=another@uni.versity, password=strongerPassWord_1]
如果您堅持循環查看各個記錄,那么我建議:
FindIterable<Document> userTbl = db.getCollection("User").find();
for (Document doc: userTbl)
{
User user = new User();
user.setFullname(doc.getString("fullname"));
user.setEmail(doc.getString("email"));
user.setPassword(doc.getString("password"));
System.out.println("User = " + user.toString());
}
哪個產生:
User = User [fullname=Stu Dent, email=student@uni.versity, password=passWord]
User = User [fullname=A. N. Other, email=another@uni.versity, password=strongerPassWord_1]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.