1.
关于请求转发和重定向:如果地址栏没有变,那就是请求转发。
eg: return “/index/index”;,
如果地址栏改变,那就是重定向。
eg: return “redirect:/index/index”;
转发是指当你对A请求某个资源时,A没有,但是A去其他地方请求得到,然后再返回给你,在这个过程中,地址栏并不会改变;重定向是指当你对A请求某个资源时,A没有,它会直接让你去另一个地方请求,所以地址栏会改变。
2.
关于resultMap里面的,可以通过下面的方式:设置select属性的值来调用mapper包里某个接口的方法。
<association column="type_id" property="type" fetchType="lazy"
select="com.lanou.yoyoshop.mapper.TypeMapper.selectTypeById">
</association>
3.
在商城项目里,要注意在下单时,数据库中必须记录有用户购买商品付款的金额,以免在发生退款情况时退款金额错乱。
4.
session、request中通过getAttribute返回的都是object;
eg:以下操作必须进行强转
User user = (User)session.getAttribute("user");
5.
关于java类库中SimpleDateFormat的使用:
//获取时间
Date date = new Date();
//java中把一个日期转换成字符串的类
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String systime = sdf.format(date);//把日期转换为符合格式的字符串
6.
关于书写SQL语句时,需要注意
order
在数据库里是关键字,如果有个表名是order,那么要用着重号(``),这样就不会把order当关键字来处理了。
eg:
SELECT * FROM `order`
WHERE id = #{id} AND status != 0
7.
列表中无元素和null是不一样的,null是空,new ArrayList<>()是一个新列表,只是列表中无元素。
8.
批量向数据库中插入item,使用mybatis动态SQL中的foreach标签。
<!--批量添加item-->
<insert id="insertItems">
INSERT INTO item(price,amount,good_id,order_id)
VALUES
<foreach collection="itemList" item="item" separator=",">
(#{item.price},#{item.amount},#{item.goodId},#{item.orderId})
</foreach>
</insert>
循环这个collection=“itmeList”,item的每一项起名位item(也可以叫a、b),可以用(名字.属性)来使用它的属性;注意加上"."。
注意:在这里,如果不在循环里面加(),那么只有一种商品时不会报错;商品种数大于等于2的时候会报错,因为循环里面没有括号,多种商品就会报错了;在循环里面加上括号就不会有这些问题了。
9.
注意并发修改异常,一边遍历集合,一边add/remove,会抛出异常,一般是因为快速失效机制(fail-fast)。
10.
当通过from表单传递过来数据时,并且不使用注解时,属性名要一样。