购物车页面——>跳转到结算页面总结:
因为需要: 传 chart购物车信息和人地址信息从订单界面到付款界面 , 传的data是人信息+ 商品信息1+商品信息2+… (数据库存的时候按顺序)
- 整体思路:
非常重要
非常重要
在购物车页面跳转到—>结算页面
- 编写: com.demo.po创建类文件 CartVo.java ——创建集合, 通过购物车的ids字符串 得到很多个对象(很多个数据行), 添加get 、set方法.
- 编写: com.demo.dao创建接口文件BuyerDao.java——写方法, 通过id得到购买者对象的集合map
- 编写:com.demo.mapper创建xml文件—— BuyerMapper.xml实现接口, 具体通过此方法想要查找出的sql信息
- 编写: com.demo.dao创建接口文件CartDao.java——写方法, 通过购物车对象的id值得到每个购物车对象map类型的list集合
- 编写:com.demo.mapper创建xml文件—— CartMapper.xml实现接口, 具体通过此方法想要查找出每个购物车对象的sql信息
- 编写:com.demo.service创建接口文件OrderService.java——写方法,通过购物车对象和购买者的id值输出一个map类型的list集合
- 编写:com.demo.service创建类文件——OrderServiceImpl.java实现接口, 初始化两个Dao对象(CartDao和BuyerDao),将它们存在一个map类型的list集合中,并返回这个集合
- 编写com.demo.action创建java文件——OrderController.java, 初始化Orderservice对象, 创建方法,输入ids和服务器请求, 将ids字符串通过,分割变成字符串数组再转换成int格式, 存入到CartVo对象的id中, 并将CartVo对象输入给service.getInfoForOrder 方法, 得到一个map类型的list集合, 将此集合给“data”, 并返回给jsp界面
- 编写Cart.jsp——使其获取到ids, 并将其提交给OrderController.java
以下为具体实践步骤及代码
-
CartVo.java ——传ids, ids是界面上的购物车所有购买信息, 有setIds和getIds方法
package com.demo.po; import java.util.ArrayList; import java.util.List; public class CartVo { List<Integer> ids=new ArrayList<Integer>(); public List<Integer> getIds() { return ids; } public void setIds(List<Integer> ids) this.ids = ids; } }
-
BuyerDao.java—— 通过id传map类型的购买者信息, 需要用id为getById函数传递
package com.demo.dao;
import java.util.Map;
public interface BuyerDao {
public Map<String, Object> getById(Integer id);
}
- BuyerMapper.xml——写sql语句,与BuyerDao.java搭配写 id、parameterType、resultType、sql语句. ——从bbs_buyer表中找到id的对应的全部信息
注意: Mybatis的动态sql: 可以借鉴此博客: https://www.cnblogs.com/ysocean/p/7289529.html
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper SYSTEM "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.demo.dao.BuyerDao">
<select id="getById" parameterType="int" resultType="map" >
select * from bbs_buyer where id=#{id}
</select>
</mapper>
- CartDao.java——写接口, 传过来购物车所有购买信息,得到一串数组,数组里面的内容是map(包含一个个购物车信息)
package com.demo.dao;
import java.util.List;//util
import java.util.Map;
import com.demo.po.Cart;
import com.demo.po.CartVo;
public interface CartDao {
//只选部分id查询, 查询
public List<Map<String, Object>> getByIds(CartVo v);
}
- CartMapper.xml——写sql语句,与BuyerDao.java搭配写 id、parameterType、resultType、sql语句. ——(mybatis动态SQL语句), 接收界面上选中的购物车商品的id,并从数据库中找出对应的一条信息
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper SYSTEM "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.demo.dao.CartDao">
<!-- mybatis动动态sql -->
<select id="getByIds" parameterType="com.demo.po.CartVo" resultType="map" >
select * from bbs_cart
<where>
<foreach collection="ids" item="id" open="id in(" close=")" separator=",">
#{id}
</foreach>
</where>
</select>
</mapper>
- OrderService.java——对数据进行处理,如何操作数据库——写接口, 接收CartVo v,Integer buyerid 参数, getInfoForOrder 函数得到List<Map<String, Object>>, 一个数组,里面是map类型的人的数据+购物车数据
package com.demo.service;
import java.util.List;
import java.util.Map;
import com.demo.po.CartVo;
import com.sun.corba.se.spi.ior.ObjectKey;
public interface OrderService {
//返回chart购物车和人 订单-> 付款界面 List存有序数列 List<map map map >
//人信息+ 商品信息1+商品信息2+...
public List<Map<String, Object>> getInfoForOrder(CartVo v,Integer buyerid);
}
- OrderServiceImpl.java——一个实现类,实现OrderService.java接口中的方法
(其中用到CartDao 、BuyerDao :
BuyerDao.java—— getByIds 方法; 通过id传map类型的购买者信息
, 需要用id为getById函数传递
CartDao.java——getById 方法; 写接口, 传过来购物车所有购买信息,得到一串数组,数组里面的内容是 map
(包含一个个购物车信息)
)
package com.demo.service;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.demo.dao.BuyerDao;
import com.demo.dao.CartDao;
import com.demo.po.Cart;
import com.demo.po.CartVo;
@Service
public class OrderServiceImpl implements OrderService {
@Autowired
CartDao dao1;
@Autowired
BuyerDao dao2;
@Override
public List<Map<String, Object>> getInfoForOrder(CartVo v, Integer buyerid) {
// TODO Auto-generated method stub
List<Map<String, Object>> list=dao1.getByIds(v);
list.add(0,dao2.getById(buyerid));
return list;
}
}
- OrderController.java——(接到请求决定调用哪个业务,
( OrderService.java中函数: getInfoForOrder——传CartVo v,Integer buyerid返回 List<Map<String, Object>>一个数组,里面是map类型的人的数据+购物车数据 )
package com.demo.action;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.demo.po.CartVo;
import com.demo.service.OrderService;
@Controller
@RequestMapping("/order")
public class OrderController {
@Autowired
OrderService service;
@RequestMapping("/getorder")
public String getorder(String ids,HttpServletRequest request)
{
System.out.println("——————————ids:"+ids);
String[] tmp=ids.split(",");
CartVo v=new CartVo();
List<Integer> list=v.getIds();
for(String s:tmp)
{
list.add(Integer.parseInt(s));
}
List<Map<String,Object>> l=service.getInfoForOrder(v, 1);
request.setAttribute("data", l);
return ids;
}
}
- Order.jsp——显示数据
${data}
- Cart.jsp——结算 页面的显示
<script type="text/javascript">
function trueBuy(){
var ids="";
var a=$("input[type=checkbox]");
for(var i=1;i<a.length;i++)
{
if($(a[i]).prop("checked")==true){
ids+=$(a[i]).val()+",";
}
}
ids=ids.substring(0,ids.length-1);
window.location.href="<%=basePath%>order/getorder?ids="+ids;
}
</script>