mybatis xml 이미지 넣기

이태규·2022년 3월 29일
0

spring

목록 보기
26/64

1. HTML 파일 만들기

<form th:action="@{/item/insert}" method="post" 
    enctype="multipart/form-data">
    물품명<input type="text" name="iname"><br />
    내용<input type="password" name="icontent"><br />
    가격<input type="password" name="iprice"><br />
    수량<input type="text" name="iquantity"><br />
    파일<input type="file" name="iimage2"><br />
    <input type="submit" value="물품등록"><br />
    </form>

enctype = "multipart/form-data"

2. 이미지 파일을 담을 DTO 만들기

    private byte[] iimage;
    private Long imagesize;
    private String imagetype;
    private String imagename;

3. HTML에서 넘어오는 FILE 데이터는 한번에 압축되어서 오기 때문에 DTO랑 바로 매칭시켜줄 수 없다. 빈 변수로 받아서 다시 분배시켜준다.

@PostMapping(value = "insert")
    public String insertPOST(
            HttpSession httpSession,
            @ModelAttribute ItemDTO item,
            @RequestParam(name = "iimage2") MultipartFile file) throws IOException {
        if (file != null) {
            item.setIimage(file.getBytes());
            item.setImagesize(file.getSize());
            item.setImagetype(file.getContentType());
            item.setImagename(file.getOriginalFilename());
            
		item.setUemail((String) httpSession.getAttribute("SESSION_EMAIL"));
        System.out.println(item);
        iService.insertItem(item);
        }

file은 MultipartFile타입이다.

4. 서비스에서 XML로 보내기

@Autowired
    SqlSessionFactory sqlFactory;

    @Override
    public int insertItem(ItemDTO item) {
        return sqlFactory.openSession().insert("Item.insertItemOne", item);

    }

5. XML에서 쿼리문 작성하기

<mapper namespace="Item">
    <insert id = "insertItemOne" 
        parameterType="com.example.dto.ItemDTO">
        INSERT INTO ITEM( ICODE, INAME, ICONTENT, IPRICE, 
        IQUANTITY, IREGDATE, IIMAGE,IIMAGESIZE, IIMAGETYPE, IIMAGENAME, UEMAIL )
        VALUES(SEQ_ITEM_ICODE.NEXTVAL, #{iname}, #{icontent}, 
        #{iprice}, #{iquantity}, CURRENT_DATE,
        #{iimage, jdbcType=BLOB}, #{imagesize}, #{imagetype}, 
        #{imagename}, #{uemail})
    </insert>
</mapper>
profile
한 걸음씩 나아가자

0개의 댓글