BasketVO.java
<hide/>
package com.g3.domain;
import java.sql.Date;
public class BasketVO {
private int b_num; // 장바구니 번호
private String u_id; // 회원아이디
private int b_p_num; // 상품번호
private int b_p_amount; // 상품수량
private String b_p_option; // 상품옵션
private String b_p_price; // 상품가격
private Date b_date; // 장반구니담은날짜
public int getB_num() {
return b_num;
}
public void setB_num(int b_num) {
this.b_num = b_num;
}
public String getU_id() {
return u_id;
}
public void setU_id(String u_id) {
this.u_id = u_id;
}
public int getB_p_num() {
return b_p_num;
}
public void setB_p_num(int b_p_num) {
this.b_p_num = b_p_num;
}
public int getB_p_amount() {
return b_p_amount;
}
public void setB_p_amount(int b_p_amount) {
this.b_p_amount = b_p_amount;
}
public String getB_p_option() {
return b_p_option;
}
public void setB_p_option(String b_p_option) {
this.b_p_option = b_p_option;
}
public String getB_p_price() {
return b_p_price;
}
public void setB_p_price(String b_p_price) {
this.b_p_price = b_p_price;
}
public Date getB_date() {
return b_date;
}
public void setB_date(Date b_date) {
this.b_date = b_date;
}
@Override
public String toString() {
return "BasketVO [b_num=" + b_num + ", u_id=" + u_id + ", b_p_num=" + b_p_num + ", b_p_amount=" + b_p_amount
+ ", b_p_option=" + b_p_option + ", b_p_price=" + b_p_price + ", b_date=" + b_date + "]";
}
}
BasketService.java(interface)
package com.g3.service;
import java.util.List;
import com.g3.domain.Ad_ProductVO;
public interface BasketService {
//새 장바구니 추가
public void insertProductInBasket(Ad_ProductVO prod, String id);
//장바구니 목록 조회(VasketVO + p_image(g3_product))
public List basketList(String id);
//찜목록 조회 (
public List<Ad_ProductVO> getLikeList(String id);
}
BasketServiceImpl.java
package com.g3.service;
import java.util.List;
import javax.inject.Inject;
import org.springframework.stereotype.Service;
import com.g3.domain.Ad_ProductVO;
import com.g3.domain.BasketVO;
import com.g3.persistence.BasketDAO;
@Service
public class BasketServiceImpl implements BasketService{
@Inject
private BasketDAO bdao;
//새로운 장바구니 담기
@Override
public void insertProductInBasket(Ad_ProductVO prod, String id) {
// 장바구니 담기전 체크
BasketVO bvo = bdao.checkBasket(prod, id);
if(bvo.getB_p_amount()==0) { //장바구니에 상품&&옵션 없을시
bdao.insertProductInBasket(prod, bdao.getNewBasketNumber(), id);
}else if(bvo.getB_p_amount()>0){ //장바구니에 상품&&옵션 있을시
bdao.updateAmountProductInBasket(prod, bvo);
}
}
//장바구니 목록 조회(VasketVO + p_image(g3_product))
@Override
public List basketList(String id) {
List basketList = bdao.getBasketList(id);
return basketList;
}
//찜목록 조회
@Override
public List<Ad_ProductVO> getLikeList(String id) {
// g3_user - u_like 컬럼 가져오기 (X)
// image,price List
List<Ad_ProductVO> likeList = bdao.getLike(id);
return likeList;
}
}
BasketDAO.java(interface)
package com.g3.persistence;
import java.util.List;
import com.g3.domain.Ad_ProductVO;
import com.g3.domain.BasketVO;
public interface BasketDAO {
//새로운 장바구니 번호
public int getNewBasketNumber();
//장바구니 담기전 체크
public BasketVO checkBasket(Ad_ProductVO prod, String id);
//새로운 장바구니 추가
public void insertProductInBasket(Ad_ProductVO prod, int newNumber, String id);
//장바구니 수량추가
public void updateAmountProductInBasket(Ad_ProductVO prod, BasketVO bvo);
//장바구니 목록 조회(VasketVO + p_image(g3_product))
public List getBasketList(String id);
// g3_user - u_like 컬럼 가져오기 (X)
// image,price List
public List<Ad_ProductVO> getLike(String id);
}
BasketDAOImpl.java
package com.g3.persistence;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Repository;
import com.g3.domain.Ad_ProductVO;
import com.g3.domain.BasketVO;
@Repository
public class BasketDAOImpl implements BasketDAO{
// 디비연결 => 객체 의존주입 (root-context.xml)
@Inject
private SqlSession sqlSession;
// basketMapper.xml 파일에 접근가능한 이름(주소)
private static final String namespace = "com.g3.mapper.basketMapper.xml";
//새로운 장바구니 번호
@Override
public int getNewBasketNumber() {
// 현재 장바구니 b_num 의 최댓값을 받아와 +1 값으로 리턴하여
// 새로운 basket row 생성
int result = sqlSession.selectOne(namespace+".getNewBasketNumber");
return result+1;
}
//장바구니 담기전 체크 (b_num, b_p_amount return)
@Override
public BasketVO checkBasket(Ad_ProductVO prod, String id) {
BasketVO bvo = sqlSession.selectOne(namespace+".checkBasket");
return bvo;
}
//새로운 장바구니 추가
@Override
public void insertProductInBasket(Ad_ProductVO prod, int newNumber, String id) {
sqlSession.insert(namespace+".insertProductInBasket");
}
//장바구니 수량추가
@Override
public void updateAmountProductInBasket(Ad_ProductVO prod, BasketVO bvo) {
sqlSession.insert(namespace+".updateAmountProductInBasket");
}
//장바구니 목록 조회(VasketVO + p_image(g3_product))
@Override
public List getBasketList(String id) {
List basketList = sqlSession.selectList(namespace+".basketList", id);
return basketList;
}
//g3_user - u_like 컬럼 가져오기 였으나
// 코드지운거 주석처리 깜빡함
// 첨에는 likeArr배열에 차례대로 p_num,p_image,p_price
// 저렇게 가져와서 split(",") 하려고 했는데
// p_num 이 리턴해도 뷰페이지에서 필요하지않아
// List 반환 해서 그대로 사용키로 변경
@Override
public List<Ad_ProductVO> getLike(String id) {
String like = sqlSession.selectOne(namespace+".getLike",id);
String[] likeArr = like.split(",");
List<Ad_ProductVO> likeList = new ArrayList();
for(int i=0 ; i<likeArr.length ; i++) {
likeList.add(sqlSession.selectOne(namespace+"getImagePriceFromProduct",likeArr[i]));
}
return likeList;
}
}
BasketMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.g3.mapper.BasketMapper">
<!-- 새로운 장바구니 번호 -->
<select id="getNewBasketNumber" resultType="int">
select max(b_num)
from g3_basket
</select>
<!-- 장바구니 체크 -->
<select id="checkBasket" resultType= "com.g3.domain.BasketVO">
select b_num, b_p_amount from g3_basket
where u_id=#{u_id},b_p_num=#{prod.p_num}, b_p_option=#{prod.p_option}
</select>
<!-- 새로운 장바구니 추가 -->
<insert id="insertProductInBasket">
insert into g3_basket(b_num, u_id, b_p_num, b_p_amount, b_p_option, b_date)
values(#{newBasketNumber}, #{u_id}, #{prod.p_num}, #{@@@@@@@@@@@@@@@AmounT}, #{prod.option}, now())
</insert>
<!-- amount tag name 'amount' 수정해야됨 amount 일지도? -->
<!-- -->
<update id= "updateAmountProductInBasket">
update g3_basket
set b_p_amount=b_p_amount+#{bvo.b_p_amount}
where b_num=#{b_num}
</update>
<!-- 장바구니 목록 조회 -->
<select id="basketList" resultType="List">
select p.p_image, b.b_num, b.u_id, b_p_num, b_p_amount, b_p_option, b_p_price, b_date
from g3_basket AS b
join g3_product AS p
on p.p_num = b.b_p_num
where b.u_id = #{u_id}
</select>
<!-- like 컬럼 가져오기 -->
<select id="getLike" resultType="string">
select u_like from g3_user
where u_id=#{u_id}
</select>
<!-- like 이미지 가격 가져오기 -->
<select id= "getImagePriceFromProduct" resultType="ProductVO">
select p_image,p_price from g3_product
where p_num=#{likeArr}
</select>
</mapper>
ㄹㅇ머리털 다 빠지겠습니다... 첫 스프링 프로젝트
그래도 재밌게하고있습니다.
다 쓰고보니 controller 하나도 안했네요..
G3 로고 진짜 멋있게 잘 만든듯
아래는 저장용
<script>
function ABCD(AAA) {
$.ajax({
type : "post",
async : false,
url : "#{contextPath}/콘트롤러 주소",
data : { AAA : AAA }, // ?여기는 모르겟음 아마도 태그네임? 태그밸류?일듯
success : function(data, textStatus) {
if(data.trim()=='insert메시지'{
alert('장바구니에 추가 되었습니다');
}else if(data.trim()=='이미 장바구니 테이블에 있는 메시지'){
alert('이미 장바구니에 등록된 ~~~');
}
}
});
}
</script>
'ㆍSpring & JSP' 카테고리의 다른 글
[스프링/log] 로그 확인- log4j.xml (0) | 2021.09.15 |
---|---|
[jsp] 회원가입- id 유효성/중복 검사-db연동-ajax (0) | 2021.09.12 |
[spring/스프링] pom.xml 부터 DB디비/테스트 세팅 (0) | 2021.09.09 |
[jsp] fmt:formatDate 날짜/시간/화폐/소수점 포맷format (0) | 2021.09.05 |
[JSP] EL표현식 / c:forEach 문 ㅡ 자바for문과 비교하기 (0) | 2021.09.05 |