<update id="updateUser" parameterType="User"> update web_users set user_password = #{password}, user_enabled = #{enabled}, user_updated_date = sysdate where user_id = #{id} </update>
<select id="getUsers" parameterType="map" resultType="User"> select user_id as id, user_password as password, user_name as name, user_email as email, user_enabled as enabled, user_updated_date as updatedDate, user_created_date as createdDate from web_users <where> <if test="enabled != null"> user_enabled = #{enabled} </if> </where> order by user_created_date desc </select>
<select id="getUserById" parameterType="string" resultType="User"> select user_id as id, user_password as password, user_name as name, user_email as email, user_enabled as enabled, user_updated_date as updatedDate, user_created_date as createdDate from web_users where user_id = #{value} </select>
<select id="getUserByEmail" parameterType="string" resultType="User"> select user_id as id, user_password as password, user_name as name, user_email as email, user_enabled as enabled, user_updated_date as updatedDate, user_created_date as createdDate from web_users where user_email = #{value} </select> </mapper>
4. mybatis-config.xml로 mybatis 환경설정 파일을 작성한다.
5. 스프링 빈 설정파일에 SqlSessionFactory(mybatis 핵심 객체) 객체를 스프링 컨테이너에 등록하기
- MapperScannerConfigurer은 SqlSession객체를 이용해서 Mapper 인스턴스를 생성한다. MapperScannerConfigurer가 Mapper 인스턴스를 생성한다. 마이바티스와 스프링 연동의 핵심객체이다. * 스프링연동 의미 : 스프링 컨테이너에서 그 객체를 갖게 한다는 것이다. 스프링이 그 객체를 갖고 있어야 다른 객체가 필요하면 주입해줄 수 있다. 스프링하고 연동했다고 하면 스프링컨테이너에서 그 객체를 갖고 놀 수 있다는 뜻임.
@Param을 통해서 값을 두개 전달할 수 있다.
UserMapper가 주입된다.
서비스에서 코딩을 하면 재정의 되어 있는게 실행된다.
서비스는 Mapper가 필요하고
컨트롤러는 서비스가 필요하다.
PostMapper를 꺼내 쓸 일이 없다. 조립되려고 쓰는 거다.
Service가 가장 마지막에 구현했으니까 Service를 getBean으로 꺼내 쓰는 것이다.
Controller를 마지막에 구현하면 Controller를 가져다 쓴다.
@Param은 xml에서 parameterType을 안적어줘도 된다.
open="(" close=")" separator="," 뜻은 forEach문 전에는 (를 넣고 forEach문이 끝나면 )를 넣고 값들 사이에 , 를 넣으라는 의미이다.
쿼리문을 아래와 같이 적은 것이다.
delete from web_posts
where post_no in (?,?,?)
=> Service에서 for문으로 실행하는 것보다 쿼리에서 처리하는게 더 경제적인 방법이다.