본문 바로가기
목차
Spring (boot) 오류 해결

마이바티스 MySQL TINYINT(boolean)=0,1값과 java Boolean=true,false 변환

by 지각생 2022. 2. 5.
728x90

결론

 

MySQL의 pub컬럼의 기본값이 1인것을 보고 마이바티스 #{pub}은 DBMS에 알맞은 값(true/false or '1','0')으로 변환해준다

 

 


 

 

MySQL에서 Boolean타입을 쓰려면 자동으로 TINTINY라는 타입으로 변경이 된다

이 타입은 0,1만 쓸수 있는거 같다

 

그런데 java에서 boolean의 값은 0,1이 아니라 True와 False 값이 가진다.

 

그래서 동일하지 않다.

 

이 점 때문에 enum타입 클래스 만들어서 값을 0,1만 가지는걸 만들어볼까 했지만

enum타입으로 0,1값을 가질 수는 없는거 같았다

더 깊게 파고 들진 않았지만 대문자 문자만 쓸 수 있는걸까?

다음에 enum 타입은 다시 복습을 해야겠다.

 

다시 본론으로 돌아와서 Mysql과 JAVA bool값 변환은

내 경우에 마이바티스를 쓰면 문제가 되지 않았다.

마이바티스의 경우 

위 글과 같이 알아서 변환해준다.

 

예를 들어

	<select id="getWritingList" resultType="com.MyBlog.Dto.Board">
		select * from board
		<where>
			<if test="query !=null and query != ''">
				${title} like '%${query}%'
			</if>
			and pub = #{pub}
		</where>
		order by date desc
		limit #{offset}, #{size}
	</select>

and pub = #{pub}

위와 같은 select구문을 만들었을때

pub은 boolean타입으로

@Controller 단에서 

pub값으로 true를 줘도

MySQL의 pub컬럼의 기본값이 1인것을 보고 마이바티스 #{pub}은 DBMS에 알맞은 값(true/false or '1','0')으로 변환해준다

728x90

댓글