Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

wintertreey 님의 블로그

wmvc 연습. #{}와 ${}의 차이 본문

Spring

wmvc 연습. #{}와 ${}의 차이

wintertreey 2024. 8. 1. 19:46

 

 

테이블 하나 만들어주고

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

 

GitHub - yoonah0327/java_source

Contribute to yoonah0327/java_source development by creating an account on GitHub.

github.com

 


https://velog.io/@ajongs/Mybatis-%EC%99%80-%EC%B0%A8%EC%9D%B4

 

Mybatis #{}와 ${}차이

Mybatis를 사용하면서 value를 전달할 때 나는 오로지 #{}을 사용했었다. db정보를 깃에 올릴때 제외하기 위해서 방법을 알아보던 중 아래처럼 ${}을 사용해서 값을 받아오는 것을 발견하게 되어서 이

velog.io

https://logical-code.tistory.com/25

 

Mybatis 에서 #{} 과 ${}의 차이

Mybatis 에서 #{} 과 ${}의 차이/* * [개정 이력] * 2017.12.01 내용 보충 */ 회사에 취직하고나서, 쿼리문을 작성하는데 이상한 점을 발견했다.바로 Mybatis 를 이용해 XML에 쿼리문을 작성하는데, 파라메터

logical-code.tistory.com

https://cafe.daum.net/flowlife/HqLp/49

 

모델2를 통한 사용자 관리 프로젝트 실습 예제 구조

  모델2 CRUD 사용자 관리 실습 예제 테이블-oraclecreate table userinfo(userid varchar2(10) primary key,password varchar2(10) not null,name varchar2(10) not null,email varchar2(30)); insert into userinfo va

cafe.daum.net

 

'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