public class CustomerServiceImpl implements CustomerService {
@Override
// 添加客户
public void addCustomer(Customer customer) {
// 获取Session对象
Session session = HibernateUtils.getCurrentSession();
// 开启事务
Transaction transaction = session.beginTransaction();
// 业务逻辑
try {
CustomerDAO dao = new CustomerDAOImpl();
dao.addCustomer(customer);
} catch (Exception e) {
// struts2默认异常回滚事务,可以不写
transaction.rollback();
e.printStackTrace();
} finally {
// 无论是否异常都提交事务结束事务
transaction.commit();
}
}
@Override
// 查询所有客户
public List<Customer> findListCustomer() {
// 获取Session对象
Session session = HibernateUtils.getCurrentSession();
// 开启事务
Transaction transaction = session.beginTransaction();
// 业务逻辑
List<Customer> listCustomer = null;
try {
CustomerDAO dao = new CustomerDAOImpl();
listCustomer = dao.findListCustomer();
} catch (Exception e) {
// struts2默认异常回滚事务,可以不写
transaction.rollback();
e.printStackTrace();
} finally {
// 无论是否异常都提交事务结束事务
transaction.commit();
}
return listCustomer;
}
@Override
// 通过id查找客户
public Customer findCustomerById(Long cust_id) {
// 获取Session对象
Session session = HibernateUtils.getCurrentSession();
// 开启事务
Transaction transaction = session.beginTransaction();
// 业务逻辑
Customer customer = null;
try {
CustomerDAO dao = new CustomerDAOImpl();
customer = dao.findCustomerById(cust_id);
} catch (Exception e) {
e.printStackTrace();
} finally {
transaction.commit();
}
return customer;
}
@Override
// 更新客户信息
public void updateCustomer(Customer customer) {
// 获取Session对象
Session session = HibernateUtils.getCurrentSession();
// 开启事务
Transaction transaction = session.beginTransaction();
// 业务逻辑
try {
CustomerDAO dao = new CustomerDAOImpl();
dao.updateCustomer(customer);
} catch (Exception e) {
// Struts2默认异常回滚
transaction.rollback();
e.printStackTrace();
} finally {
// 提交事务
transaction.commit();
}
}
}
1. 添加客户需要先找到其关联的联系人建立关系
2. 持久态的使用
public class CustomerDAOImpl implements CustomerDAO {
@Override
//添加客户
public void addCustomer(Customer customer) {
//获取Session对象
Session session = HibernateUtils.getCurrentSession();
//首先找到客户的联系人
//创建Criteria查询对象
Criteria criteria = session.createCriteria(Linkman.class);
//创建限制条件
Criterion criterion = Restrictions.eq("lkm_name", customer.getCust_linkman());
//添加限制条件
criteria.add(criterion);
//查询联系人
Linkman linkman = (Linkman) criteria.uniqueResult();
if(linkman == null) {
linkman = new Linkman();
linkman.setLkm_name(customer.getCust_linkman());
}
//保存客户到
//建立关系:客户表达与联系人的关系:一个客户有多个联系人
customer.getLinkmans().add(linkman);
//建立关系:联系人表达与客户的关系:一个联系人对应一个客户
linkman.setCustomer(customer);
//将customer变为持久态,配置了级联,会自动级联将linkman也变为持久态
session.save(customer);
}
@Override
//查询所有客户
public List<Customer> findListCustomer() {
//单表查询使用Criteria查询更方便
//获取Session对象
Session session = HibernateUtils.getCurrentSession();
//创建Criteria查询对象
Criteria criteria = session.createCriteria(Customer.class);
//执行查询
return criteria.list();
}
@Override
//通过ID查询客户
public Customer findCustomerById(Long cust_id) {
//获取Session
Session session = HibernateUtils.getCurrentSession();
//get方法获取的Customer已经是持久态无需保存
return session.get(Customer.class, cust_id);
}
@Override
//更新客户信息
public void updateCustomer(Customer customer) {
//获取Session对象
Session session = HibernateUtils.getCurrentSession();
//修改客户
session.update(customer);
}
}
<!-- 神奇的request先从request中找,找不到就走值栈的默认查找机制,因此也能查找到存入值栈的list -->
<c:forEach items="${list }" var="customer">
<TR style="FONT-WEIGHT: normal; FONT-STYLE: normal; BACKGROUND-COLOR: white; TEXT-DECORATION: none">
<TD>${customer.cust_name }</TD>
<TD>${customer.cust_level }</TD>
<TD>${customer.cust_source }</TD>
<TD>${customer.cust_linkman }</TD>
<TD>${customer.cust_phone }</TD>
<TD>${customer.cust_mobile }</TD>
<TD>
<a href="${pageContext.request.contextPath }/customer_showEdit.action?cust_id=${customer.cust_id}">修改</a>
</TD>
form表单action请求地址:
action="${pageContext.request.contextPath }/customer_update.action"
//隐藏域提交客户id,从而找到该客户进行数据更新
<s:textfield name="cust_id" value="%{customer.cust_id}" type="hidden" />
客户名称:<s:textfield name="cust_name" value="%{customer.cust_name}" />
客户级别:<s:textfield name="cust_level" value="%{customer.cust_level}" />
信息来源:<s:textfield name="cust_source" value="%{customer.cust_source}" />
联系人:<s:textfield name="cust_linkman" value="%{customer.cust_linkman}" />
固定电话 :<s:textfield name="cust_phone" value="%{customer.cust_phone}" />
移动电话 :<s:textfield name="cust_mobile" value="%{customer.cust_mobile}" />
结果图:

img17.png

img18.png

img19.png
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-115359-3.html
希望下一代能做好
备好导弹时刻准备着