package com.tudou.t1Test;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
@Stateless(mappedName = "StudentDaoBean")
public class StudentDaoBean implements StudentDao {
// 动态生成entityManager
@PersistenceContext
public EntityManager em;
public boolean addStu(Student student) {
try {
em.persist(student);
} catch (Exception e) {
return false;
}
return true;
}
public boolean updateStu(Student student) {
try {
em.merge(student);
} catch (Exception e) {
return false;
}
return true;
}
public boolean delStu(int sid) {
try {
Student s = selectOneById(sid);
em.remove(s);
// Query query = em
// .createQuery("delete from Student as s where s.sid =?1");
// // 占位符从1开始
// query.setParameter(1, sid);
// if (query.executeUpdate() <= 0) {
// return false;
// }
} catch (Exception e) {
return false;
}
return true;
}
// 使用EntityManager获取对象
public Student selectOneById(int id) {
Student s = null;
try {
s = em.find(Student.class, id);
} catch (Exception e) {
return null;
}
return s;
}
// 使用JPQL词句获取对象order by,group by,having,max,min此处不作详细赘述
public Student getOneById(int id) {
Student s = null;
try {
Query query = em
.createQuery("select s from Student as s where sid =?1");
// 占位符从1开始
query.setParameter(1, id);
s = (Student) query.getSingleResult();
} catch (Exception e) {
return null;
}
return s;
}
@SuppressWarnings("unchecked")
public List<Student> queryStudents() {
Query query = em.createQuery("select s from Student as s");
return query.getResultList();
}
}
package com.tudou.t1Test;
import java.io.Serializable;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@SuppressWarnings("serial")
@Entity
@Table(name = "tb_student")
public class Student implements Serializable {
@Id
@GeneratedValue
private int sid;
// optional指定有student时必须有class.立即检索
@ManyToOne(optional = false, cascade = { CascadeType.PERSIST,
CascadeType.PERSIST, CascadeType.REFRESH }, fetch = FetchType.EAGER)
@JoinColumn(name = "cid")
private Classes classes;
private String stuNo;
private String stuName;
private String createDate;
public Student() {
super();
}
public Student(Classes classes, String stuNo, String stuName,
String createDate) {
super();
this.classes = classes;
this.stuNo = stuNo;
this.stuName = stuName;
this.createDate = createDate;
}
public Student(int sid, Classes classes, String stuNo, String stuName,
String createDate) {
super();
this.sid = sid;
this.classes = classes;
this.stuNo = stuNo;
this.stuName = stuName;
this.createDate = createDate;
}
public int getSid() {
return sid;
}
public void setSid(int sid) {
this.sid = sid;
}
public Classes getClasses() {
return classes;
}
public void setClasses(Classes classes) {
this.classes = classes;
}
public String getStuNo() {
return stuNo;
}
public void setStuNo(String stuNo) {
this.stuNo = stuNo;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public String getCreateDate() {
return createDate;
}
public void setCreateDate(String createDate) {
this.createDate = createDate;
}
}