@Data
@Builder
public class MainDto {
private int result;
private ArrayList<Item> data;
@Data
public static class Item {
String accountTitle; // 계정과목
String assetCode; // 자산코드
String assetName; // 자산명
Dto가 이런 식으로 되어있다고 치고
한 번에 여러 행을 저장하고 싶을 때
Controller에서
public MainDto insert(@RequestBody MainDto dto)
List<MainDto.Item> itemList = dto.getData();
이런식으로 할 수 있다.
getData 할 경우 Dto에다가 data를 ArrayList로 선언했기 때문에 여러 행을 한 번에 받아서 처리할 수 있다.
int result = service.insertAsset(dto.getData());
return MainDto.builder().result(result).build();
이렇게도 가능
한 번에 한 행씩 저장하고 싶을 때
Controller에서
public MainDto insert(@RequestBody MainDto. Item item)
으로 단일 아이템 처리
int result = service.insertAsset(item);
return MainDto.builder().result(result).build();
이 때 Vue 컴포넌트 에서는
// 모달 입력값을 서버로 전송하는 modelRegister
const modalRegister = async () => {
const insertModalData = {
data: [
{
accountTitle: subModal.value,
assetName: nameModal.value,
acqQty: quantityModal.value,
acqDate: regDateModal.value,
acqPrice: priceModal.value,
project: projectModal.value,
userId: userIdModal.value,
useDept: deptModal.value,
vendor: vendorModal.value,
spec: specModal.value,
model: modelModal.value,
remark: remarkModal.value
}
]
}
이런식으로 data: [] 로 보내는 건 List 보내는 것이다
한 행 저장해서 List 보내도 문제될 건 없다.
const insertModalData = {
accountTitle: subModal.value,
assetName: nameModal.value,
acqQty: quantityModal.value,
acqDate: regDateModal.value,
acqPrice: priceModal.value,
project: projectModal.value,
userId: userIdModal.value,
useDept: deptModal.value,
vendor: vendorModal.value,
spec: specModal.value,
model: modelModal.value,
remark: remarkModal.value
}
한 행 저장하려
data 배열에 담지 않고 그냥 이렇게 객체에 담아서 보내면 됨
await axios.post('/main/insertAsset.do', insertModalData)
axois 로 POST 요청 보내기
그리고 mapper.xml에서
지금 DB의 컬럼명과(snake_case) DTO 변수명(camelCase) 다르기 때문에 (코딩 컨벤션..!)
select * from 하면 안 돼요~^-^
<select id="getItems" resultType="dev.kloz.boot.assetsmanager.main.dto.MainDto$Item">
SELECT
asset_code AS assetCode,
user_id AS userId,
account_title AS accountTitle,
asset_name AS assetName,
acq_qty AS acqQty,
acq_date AS acqDate,
acq_price AS acqPrice,
project,
use_dept AS useDept,
vendor,
spec,
model,
remark
FROM tbl_asset
</select>
그리고 INSERT 할 때는 그냥 써주면 돼요 AS 금지 ^-^
'웹 개발 > [KLOZ] 웹 프로젝트' 카테고리의 다른 글
| [KLOZ] JasperStudio 에서 Img 를 파라미터로 보낼 때 (HttpServletRequest사용) (1) | 2025.06.25 |
|---|---|
| [KLOZ] 파비콘 생성 추가 (0) | 2025.06.13 |
| [KLOZ] map -> builder Pattern (0) | 2025.06.04 |
| spring 프로젝트 & vue 프로젝트 연동 및 .bat/.sh 설명 (2) | 2025.05.20 |
| spring boot 서버 실행할 때 나오는 텍스트 변경하기 (0) | 2025.05.20 |