===Kết nối Database bằng JPA Entity Database===
=>> Tự tạo Connection
=>> Tự tạo Method Insert, Update, Delete
https://giai-ma.blogspot.com/2016/09/jpa-jsp-servlet-java-entity-database.html
Entity: Shop.java
=>> Tự tạo Connection
=>> Tự tạo Method Insert, Update, Delete
Database Mysql Workbench
Hiển thi và Phân trang
Bài 2: Hiển thị và Nút phân trang > index.jsp
Java 2016
====================<Phần hiển thị>===================== <table class="data"> //Hiển thị 6 sản phẩm ra ngoai màn hình <tr class="data"> <th class="data">Mã Danh Mục</th> <th class="data">Tên Danh Mục</th> <th colspan="2" class="data">URL Ảnh</th> <th class="data">Giá Tiền</th> <th colspan="2" class="data">Tùy Chọn</th> </tr> <% ShopJpaController sdao = new ShopJpaController(); int first = 0, last = 0, pages = 1; //Neu "index.jsp?pages=" pages ko co bo nho hoac rong thi lay ra pages if (request.getParameter("pages") != null) { pages = (int) Integer.parseInt(request.getParameter("pages")); } //Lấy tổng số lượng sản phẩm có trong data bằng kết nối data kiểu JPA Entity Database int total = sdao.getShopCount(); //Neu number total = 3 if (total <= 6) { first = 0; //first =0 last = total; //last =3 } else { first = (pages - 1) * 6; last = 6; } //Lấy danh sách san phẩm từ a đến b List<Shop> list = sdao.findShopEntities(last, first); for (Shop item : list) { %> <tr> <td class="data" id="id"><%=item.getId()%></td> <td class="data"><%=item.getName()%></td> <td class="data"><%=item.getImage()%></td> <td class="data"><img class="img-danhmuc" src="<%=request.getContextPath()%>/images/<%=item.getImage()%>"/></td> <td class="data"><%=item.getPrice()%> $</td> <td class="data"><a href="update-shop.jsp?id=<%=item.getId()%>"> <img src="../mos-css/img/Text-Edit-icon.png"/></a> -|- <a href="<%=request.getContextPath()%>/ShopDeleteServlet?id=<%=item.getId()%>" onclick="return confirm('Are you sure delete?')"> <img src="../mos-css/img/delete-file-icon.png"/></a></td> </tr> <%}%> </table> =============<Phần xử lý phân trang>================= <ul class="pagination"> //Nút phân trang có next - previous - số <% //Button Previous int back = 0; if (pages == 0 || pages == 1) { back = 1;//Luon la page 1 } else { back = pages - 1;//Neu pages tu 2 tro len thi back tru 1 } %> <li><a href="product.jsp?pages=<%=back%>">«</a></li> <% //Button Number pages int loop = 0, num = 0; if ((total / 6) % 2 == 0) { num = total / 6; } else { num = (total + 1) / 6; } //Nếu total lẻ thêm 1 if (total % 2 != 0) { loop = (total / 6) + 1; } else { //Nếu total chẵn nhỏ hơn fullpage và # fullPage thì thêm 1 if (total < (num * 6) + 6 && total != num * 6) { loop = (total / 6) + 1; } else { //Nếu bằng fullPage thì không thêm loop = (total / 6); } } //Lap so pages for (int i = 1; i <= loop; i++) {%> <% if (pages == i) {%> <li><a class="active" href="product.jsp?pages=<%=i%>"><%=i%></a></li> <%} else {%> <li><a href="product.jsp?pages=<%=i%>"><%=i%></a> </li> <%} }%> <% //Button Next int next = 0; //Nếu total lẻ if (total % 2 != 0) { if (pages == (total / 6) + 1) { next = pages;//Khong next } else { next = pages + 1;//Co next } } else { //Nếu total chẵn nhỏ hơn fullpage //Và không fullPage thì thêm 1 if (total < (num * 6) + 6 && total != num * 6) { if (pages == (total / 6) + 1) { next = pages;//Khong next } else { next = pages + 1;//Co next } } else { //Nếu fullPage đến trang cuối dừng //Chưa tới trang cuối thì được next if (pages == (total / 6)) { next = pages;//Khong next } else { next = pages + 1;//Co next } } } %> <li><a href="product.jsp?pages=<%=next%>">»</a></li> </ul> </div>Để tạo được Entity và JPA ShopJpaController.java & Shop.jsp vui lòng xem lại từ đầu bài này
https://giai-ma.blogspot.com/2016/09/jpa-jsp-servlet-java-entity-database.html
JPA: ShopJpaController.java
Java 2016
public class ShopJpaController implements Serializable { //Khi mới tạo JPA xong các bạn cần khai báo và tạo constructor như dưới đây //Khai báo private EntityManagerFactory emf; private EntityManager em; //Constructor luôn chạy emf public ShopJpaController() throws Exception { emf = Persistence.createEntityManagerFactory("Shop_BonfirePU"); //Shop_BonfirePU tên đặt trong persistence.xml } public void create(Shop shop) throws PreexistingEntityException, RollbackFailureException, Exception { //em = emf.createEntityManager(); luôn tạo mới em trong các method cần đến em //Chú ý: Nếu có utx thì thay bằng em.getTransaction() //Xóa code cho gọn những phần này không liên quan ví dụ này } public void edit(Shop shop) throws NonexistentEntityException, RollbackFailureException, Exception { //Xóa code cho gọn những phần này không liên quan ví dụ này } public void destroy(Integer id) throws NonexistentEntityException, RollbackFailureException, Exception { } public List<Shop> findShopEntities() { //Xóa code cho gọn những phần này không liên quan ví dụ này } public List<Shop> findShopEntities(int maxResults, int firstResult) { return findShopEntities(false, maxResults, firstResult); } private List<Shop> findShopEntities(boolean all, int maxResults, int firstResult) { try { em = emf.createEntityManager(); CriteriaQuery cq = em.getCriteriaBuilder().createQuery(); cq.select(cq.from(Shop.class)); Query q = em.createQuery(cq); if (!all) { q.setMaxResults(maxResults); q.setFirstResult(firstResult); } return q.getResultList(); } finally { em.close(); } } public Shop findShop(Integer id) { //Xóa code cho gọn những phần này không liên quan ví dụ này } public int getShopCount() { try { em = emf.createEntityManager(); CriteriaQuery cq = em.getCriteriaBuilder().createQuery(); Root<Shop> rt = cq.from(Shop.class); cq.select(em.getCriteriaBuilder().count(rt)); Query q = em.createQuery(cq); return ((Long) q.getSingleResult()).intValue(); } finally { em.close(); } } public List<Shop> findAll() { //Xóa code cho gọn những phần này không liên quan ví dụ này } }
Entity: Shop.java
Java 2016
package Entty;
import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
/**
*
* @author Lonely
*/
@Entity
@Table(name = "shop")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "Shop.findAll", query = "SELECT s FROM Shop s"),
@NamedQuery(name = "Shop.findById", query = "SELECT s FROM Shop s WHERE s.id = :id"),
@NamedQuery(name = "Shop.findByName", query = "SELECT s FROM Shop s WHERE s.name = :name"),
@NamedQuery(name = "Shop.findByImage", query = "SELECT s FROM Shop s WHERE s.image = :image"),
@NamedQuery(name = "Shop.findByPrice", query = "SELECT s FROM Shop s WHERE s.price = :price")})
public class Shop implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@NotNull
@Column(name = "id")
private Integer id;
@Size(max = 45)
@Column(name = "name")
private String name;
@Size(max = 45)
@Column(name = "image")
private String image;
@Size(max = 45)
@Column(name = "price")
private String price;
public Shop() {
}
public Shop(Integer id) {
this.id = id;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Shop)) {
return false;
}
Shop other = (Shop) object;
if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
return false;
}
return true;
}
@Override
public String toString() {
return "Entty.Shop[ id=" + id + " ]";
}
}
0 nhận xét:
Post a Comment