技术CTO-关注编程入门知识,提供编程入门教程

您的位置: 首页 > 网络编程 > java开发 > 正文

hibernate查询数据库,将结果传入java文件

来源: 技术CTO 阅读:

我的网站用的是jsf+spring+hibernate+mySQL的结构,我现在有DAO和Service可以查询一张表的所有信息并显示在网页上,我现在是想在一个测试的java文件中,得到这张表的所有数据,并且打印在控制台,我把代码贴在下面,求帮助!!

在网页上显示的文件流程:(hbm什么我就不写了)

表名是reservation

Class:
public class Reservation extends NamedEntity {

private Date reservationDate;

private ReservationDepartment department;

private Patient patient;

private String required_time;

private int reservation_time;

private int rearrangeable;

private int hospital_id;
}
NamedEntity里面就一个name

DAO:
@Transactional(readOnly = true)
@SuppressWarnings("unchecked")
public Collection<Reservation> getReservations() {
return this.em.createQuery("SELECT reservation FROM Reservation reservation").getResultList();
}

Service:
private ClinicDAO dao;
@Transactional(readOnly = true)
public Collection<Reservation> getReservations() {
Collection<Reservation> reservations = dao.getReservations();
//do something else here
return reservations;
}

Bean:
public class ViewHospitalsBean {
private ClinicService clinic;
private Hospitals hospitals;
public void setClinic(ClinicService clinic) {
this.clinic = clinic;
}

public ClinicService getClinic() {
return clinic;
}
public Hospitals getHospitals() {
return hospitals;
}
public void setHospitals(Hospitals hospitals) {
this.hospitals = hospitals;
}
public String setup() {
Hospitals vs = new Hospitals();
vs.getHospitalList().addAll(this.clinic.getHospitals());
this.setHospitals(vs);
return "viewHospitals";
}





viewHospitals是显示reservation表的网页:
 <c:forEach var="reservation" items="#{viewReservations.reservations.reservationList}">
    <tr>
      <td>${reservation.name}</td>
      <td>${reservation.reservationDate} </td>
      <td>${reservation.department.name} </td>
      <td>${reservation.patient.firstName}${reservation.patient.lastName} </td>
      <td>${reservation.required_time} </td>
  <td>${reservation.hospital_id} </td>
      <td>${reservation.reservation_time} </td>
      <td>${reservation.rearrangeable} </td>
          </tr>
  </c:forEach>



以上是网页输出数据库信息的流程,我想用一个test.java文件,得到reservation表的内容,比如用List<Reservation>之类的(我要拿来做运算),然后输出在控制台(以便于我测试),我不知道该怎么去弄,调用Service里面的getReservations()方法吗?求大神帮忙,我试了好几天了




没玩过  JSF  

顶一个
 <c:forEach var="reservation" items="#{viewReservations.reservations.reservationList}">这个地方不是有一个后台传入的集合吗,你在后台直接取到不就完事了?
你可以在Controller中写一个测试方法,然后输出到控制台;如果不想启动server直接运行main方法的话,需要手动去加载相关的配置文件
在JDBC语句执行SQL的时候 打印出来
不太懂JSF。。。不过service可以取到数据的话,不能写单元测试调用service么?
不好意思大家,bean的代码我贴错了,hospital那个请忽略,正确的在下面(居然不能修改帖子)


private ClinicService clinic;
private Reservations reservations;

public void setClinic(ClinicService clinic) {
this.clinic = clinic;
}

public ClinicService getClinic() {
return clinic;
}

/**
 * @return the hospitals
 */
public Reservations getReservations() {
return reservations;
}

/**
 * @param hospitals
 *            the hospitals to set
 */
public void setReservations(Reservations reservations) {
this.reservations = reservations;
}

public String setup() {
Reservations vs = new Reservations();
vs.getReservationList().addAll(this.clinic.getReservations());
this.setReservations(vs);
return "viewReservations";
}
引用 2 楼 sinat_31535993 的回复:
 <c:forEach var="reservation" items="#{viewReservations.reservations.reservationList}">这个地方不是有一个后台传入的集合吗,你在后台直接取到不就完事了?


后台传入的代码是这个
public String setup() {
Reservations vs = new Reservations();
vs.getReservationList().addAll(this.clinic.getReservations());
this.setReservations(vs);
return "viewReservations";
}
可是这个方法最后return到了viewReservations.xhtml,传进了网页,我想把数据存在一个测试类里面,不想放进网页,不知道怎么弄啊,求指点


引用 3 楼 star_xing1 的回复:
你可以在Controller中写一个测试方法,然后输出到控制台;如果不想启动server直接运行main方法的话,需要手动去加载相关的配置文件



我是新手,能说得具体一点吗?谢谢啊
引用 8 楼 daifeng17 的回复:
Quote: 引用 3 楼 star_xing1 的回复:

你可以在Controller中写一个测试方法,然后输出到控制台;如果不想启动server直接运行main方法的话,需要手动去加载相关的配置文件



我是新手,能说得具体一点吗?谢谢啊



public static void main(String[] args) {
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
IPersonService ips = (IPersonService) ac.getBean("personService");
ips.sayHelloToSpring();
}
引用 4 楼 zhe_noob 的回复:
在JDBC语句执行SQL的时候 打印出来



是指在测试类中调用DAO,然后直接循环System.out.print(ResultList())?
引用 10 楼 daifeng17 的回复:
Quote: 引用 4 楼 zhe_noob 的回复:

在JDBC语句执行SQL的时候 打印出来



是指在测试类中调用DAO,然后直接循环System.out.print(ResultList())?
差不多是这么个意思
引用 4 楼 zhe_noob 的回复:
在JDBC语句执行SQL的时候 打印出来



我测试了一天,还是弄不出来,能帮我写一下这个测试类该怎么弄吗?我把我写的代码贴出来你看看

public class test {



private ClinicDAO dao;

public void setClinicDAO(ClinicDAO dao) {
this.dao = dao;
}

public ClinicDAO getClinicDAO() {
return dao;
}

public Collection<Reservation> getReservations() {
Collection<Reservation> reservations = dao.getReservations();
// do something else here
return reservations;
}

public static void main(String[] args) {
test ts = new test();
ts.getReservations();
我不知道这里怎么

}
}
控制器直接输出啊,在你传到页面的方法里肯定有拿到数据的,直接输出,或者另外写个测试类,在main方法里写你控制器方法里的一样,或者用Junit。

^_^ 如果您热爱技术、热爱编程,想与更多的朋友一起交流学习,欢迎加入本站官方QQ群:345733473 ^_^