这里是主函数,值已经设置为bean。
package demo.sphbIntegrate;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class App
{
public static void main( String[] args )
{
ApplicationContext context=new ClassPathXmlApplicationContext("sphb.xml");
EmployeeDAO edao=(EmployeeDAO) context.getBean("d");
Employee e=new Employee();
e.setId(1);
e.setName("sourav");
e.setSalary(100000);
edao.saveEmployee(e);
}
}
这是bean类。
package demo.sphbIntegrate;
public class Employee
{
private int id;
private String name;
private int salary;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
}
这是我的刀课。
package demo.sphbIntegrate;
import org.springframework.orm.hibernate5.HibernateTemplate;
public class EmployeeDAO
{
HibernateTemplate template;
public void setTemplate(HibernateTemplate template) {
this.template = template;
}
public void saveEmployee(Employee e)
{
template.saveOrUpdate(e);
}
}
根据代码,必须将记录输入表中。然而,发生了一些奇怪的事情,执行了一个select查询,这在整个程序中没有提到。我不能把我的头围绕着这个异常。ps:我确信,我运行的程序是正确的,所有文件都保存正确,而且整个包中没有编写select查询的代码。
以下是输出:
log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlApplicationContext).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Hibernate: select employee_.ID, employee_.NAME as NAME2_0_, employee_.SALARY as SALARY3_0_ from EMPLOYEE employee_ where employee_.ID=?
1条答案
按热度按时间qco9c6ql1#
在这种情况下没有什么可担心的,因为
saveOrUpdate()
完成保存和更新工作。它首先检查您传递的id是否存在于表中,原因与您看到的select查询相同。如果你仔细观察你的问题
你会看到的
ID
在什么情况下。如果此查询不返回结果,则只插入新记录,否则将进行更新。