工作中遇到的一些问题总结(一)

本文详细介绍了Spring与Hibernate整合时的两种方法:HibernateDaoSupport与hibernateTemplate的区别,如何在Spring配置中替代hibernate.cfg.xml文件,利用EL表达式获取项目名称,字符串类型转换为long类型,点击按钮返回上一步的操作,以及如何使用serialVersionUID确保类版本兼容性。同时,阐述了日期显示方式和如何通过查询关联表获取所需信息,并演示了使用c标签进行条件判断以显示不同内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.hiberbate整合spring实现增删改查有两种方法,一是HibernateDaoSupport,二是hibernateTemplate。区别在于HibernateDaoSupport无法使用注解,hibernateTemplate可以使用注解功能。但在xml配置时,HibernateDaoSupport较灵活。

2..hibernate整合spring时就无需再写hibernate.cfg.xml配置文件了。原来的内容都可以添加到applicationContext.xml中。

3.利用el表达式可以获取项目的名称,如可以用

${pageContext.request.contextPath}
来显示。如项目名称为test,则加入该段代码后,页面显示为

/test
而要用java代码显示项目名,则可以用

<%= request.getContextPath() %>
实现类似的功能。

4.String型转换为long型。如从后台接收long型的id,在java中直接接受的为String型,这时就需要转换

long userID = Long.parseLong(request.getParameters("userId"));
5.点击按钮返回上一步,可以用

onclick="history.go(-1)"
或者用javascript;来写

<a href="javascript:history.go(-1)">返回上一步</a>
6.使用

private static final long serialVersionUID = 1L;
serialVersionUID用来表明类的不同版本间的兼容性。就是说java的序列化机制是通过在运行时判断类的serivalVersionUID来验证版本一致性。只有同一次编译生成的class才会生成相同的serivalVersionUID。

7.hibernate的hql语句中“=:”是占位符,表示要赋的值,这个和占位符“?”作用相同,只是用法略有差别。注意“=:”两边不能有空格。如

String hql ="from Cart as a where a.member=:member and a.cartStatus=0";
中a.member后要传入参数,而这种参数是以键值对形式定义的。可以为setParameter("member",value);

若为"?"的话,则为setParameter(1,value);

8.关于日期的格式问题

如果MySQL中日期格式为dateTime,那么在jsp页面显示的也为dateTime类型,日期接受的为String型。

比如createDate在数据库显示的为2013-11-12 00:00:00,利用${order.createDate}显示的为2013-11-12 00:00:00。这时可以格式化显示,方法也很简单。

在jsp页面引入

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
显示时,可以用

<fmt:formatDate value="${order.createDate}" pattern="yyyy-MM-dd" />
然后显示的只有日期2013-11-12
当然,也可以在从数据库接收时用simpleDateFormate直接格式化时间,但是还得转码,相对来说比较麻烦。

9.两张表order和suppliers,order表存储的是suppliers的id,那么在jsp页面怎么显示suppliers的name属性(即根据order的suppliersId查询出相应的suppliersName)?可以用如下方法

List<Order> list = this.orderManager.getOrderById(id);
for(Order order : list){
	Suppliers suppliers = this.suppliersManager.getSuppliersName(order.getSuppliersId());
	order.setSuppliersName(suppliers.getSuppliersName());
}
而不用另外写什么复杂的方法。
order表存储的只是suppliersId,没有suppliersName。此时为了方便,需要在jsp页面显示suppliersName,而不是suppliersId。就有了该过程,整个流程是先对order对象进行遍历,找出表中存储的suppliersId,根据suppliersId找出suppliersName,再把suppliersName这个属性set进order对象即可。

10.jsp页面做判断,根据不同的值显示不同的内容。

比如说“状态”,数据库存储的只是数字,0表示“进行中”,1表示“已完成”。那么为了在页面看着较直观,可以用c标签做判断,而且可以直接用,无需先导入标签库。

<c:choose>
	<c:when test = "${order.orderStatus == 0 }" ><!-- 注意该处写法-->
		<c:out value = "进行中"></c:out>
	</c:when>
	<c:otherwise>
		<c:out value="已完成"></c:out>
	</c:otherwise>
</c:choose>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值