wintertreey 님의 블로그
wmvc 연습. #{}와 ${}의 차이 본문
테이블 하나 만들어주고
create table userinfo(
userid varchar(10) primary key,
password varchar(10) not null,
name varchar(10) not null,
email varchar(30));
작업을 위해 값 넣어주기.
insert into userinfo values('admin','admin','관리자','admin@admin.co.kr');
insert into userinfo values('korea','kor','책임자','korea@admin.co.kr');
폴더들을 보며 틀을 잡아보자.
폴더별 구분 | 파일의 용도 |
VIEW webapp내 html파일 |
사용자가 값을 입력 |
VIEW WEB-INF 내 jsp파일 |
사용자에게 결과물 출력 |
Controller 중개자 |
UserForm: form(데이터저장소) ModelAndView: 파일호출방식(리다이렉트, 포워드)- 불요. 스프링연습용. (값을 받아온 후 보낼경로 지정) Controller: 인터페이스 Insert, List, Login, Logout, UpdateForm: 각 목적의 컨트롤러 클라스들(다형성관련. 실 기능들이 담겨있다) ++ update, delete file UserServlet: 메인작업공간 |
Model db연동 |
UserDto: dto(데이터저장소) SqlMapConfig: sql명령실행용 UserDaoModel: DB 연동처리 UserManager: 메인작업공간 Dao 클래스관리. |
Mybatis 드라이버연동 및 SQL문 |
Configuration.xml: 드라이브 연동 db.propertis: db 정보(보안) DataMapper.xml : sql문 |
Mybatis 부터 들여다보자.
DataMapper.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="dev">
<select id="selectDataAll" resultType="dto">
select * from userinfo
</select>
<select id="findUser" resultType="dto" parameterType="string">
select * from userinfo where userid=#{userid}
</select>
<insert id="insertData" parameterType="form">
insert into userinfo values(#{userid}, #{password}, #{name}, #{email})
</insert>
<update id="updateData" parameterType="form">
update userinfo set password=${password}, name=${name}, email=${email} where userid=#{userid}
</update>
<delete id="deleteData" parameterType="string">
delete from userinfo where userid=#{userid}
</delete>
</mapper>
update구문 부분만 $을 쓰는걸 알 수 있다.
#{}와 ${}의 차이
# { }
- 값에 ' '가 자동으로 붙음
- PreparedStatement 통해 악의적인 쿼리주입을 예방할 수 있음
- 보차원에서 유리
- 주로 사용자의 입력을 전달할때 사용
$ { }
- ' '가 자동으로 붙지않음
- Statement 방법으로 파라매터가 출력되어서 전달됌
- 의도적인 쿼리주입을 막을 수 없음
- SQL injection 보안 위험 발생 가능
- 주로 table명 column명 전달시 사용
전체 소스코드는 깃허브 wmvc5 프로젝를 참고하자.
https://github.com/yoonah0327/java_source.git
https://velog.io/@ajongs/Mybatis-%EC%99%80-%EC%B0%A8%EC%9D%B4
https://logical-code.tistory.com/25
https://cafe.daum.net/flowlife/HqLp/49
'백엔드 > Spring' 카테고리의 다른 글
entity와 dto의 분리 (0) | 2024.08.07 |
---|---|
JPQL연습_미니게시판 (0) | 2024.08.01 |
aspectJ pointcut 표현식 (0) | 2024.08.01 |
리덕스 Redux. 구조분해 연산자. (1) | 2024.08.01 |
@MVC - MyBatis : 미니게시판 (1) | 2024.07.22 |