220823 오늘의 훈련 mybatis

(。◠ ◠。)·2022년 8월 22일

국비 개발 훈련 일기

목록 보기
22/35

application.properties

server.port=9000

#JSP
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

#Oracle Set
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@localhost:1521/xe
spring.datasource.username=green01
spring.datasource.password=1234

#Mybatis Set
#mapper의 모든 폴더의 모든 xml파일
mybatis.mapper-locations=classpath:mybatis/mapper/**/**.xml

build.gradle

디펜던시 안에요...

	implementation 'javax.servlet:jstl'
	implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'

xml만들기

<!DOCTYPE mapper
	PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
	"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
	
	
<mapper namespace="com.study.springboot.jdbc.ISImpleBbsDAO">

	<select id="listDao" resultType="com.study.springboot.jdbc.SimpleBbsDTO">
		select * from simpleBbs order by id desc
	</select>	
	
	<select id="viewDao" resultType="com.study.springboot.jdbc.SimpleBbsDTO">
		select * from simpleBbs where id = #{param1}
	</select>
	
	<insert id="writeDao">
		insert into simpleBbs values(simplebbs_seq.nextval, #{param1},#{param2},#{param3})
	</insert>
	
	<delete id="deleteDao">
		delete from simpleBbs where id =#{param1}
	</delete>
    
    <update id="update">
		update simpleBbs set title = #{param1} where id = #{param2}
	</update>

</mapper>

매퍼

@Mapper어노테이션이 있어요

@Mapper
public interface ISImpleBbsDAO {
	public List<SimpleBbsDTO> listDao();
	
	public SimpleBbsDTO viewDao(String id);
	
	public void writeDao(String writer, String title, String content);
	
	public void deleteDao(String id);

	public void update(String title, String id);
}

컨트롤러

@Controller어노테이션이 있고 매퍼 서비스를 불러요 @Autowired

@Autowired
	private ISImpleBbsDAO dao;
	
	@RequestMapping("/")
	public @ResponseBody String root() {
		return "<h1>메인이당</h1>";
	}
	
	@RequestMapping("/list")
	public void userlistPage(Model model) {
		List<SimpleBbsDTO> list = dao.listDao();
		model.addAttribute("list", list);
	}
	
	@RequestMapping("/view")
	public void view(String id, Model model) {
		SimpleBbsDTO dto = dao.viewDao(id);
		model.addAttribute("dto", dto);
	}
	
	@RequestMapping("/writeForm")
	public void writeForm() {
	}
	
	@RequestMapping("/write")
	public String write(String writer, String title, String content) {
		dao.writeDao(writer, title, content);
		return "redirect:list";
	}
	
	@RequestMapping("/delete")
	public String delete(HttpServletRequest request, String id) {
		dao.deleteDao(id);
		return "redirect:list";
	}
	
	@RequestMapping("/update")
	public String update(String title, String id) {
		dao.update(title, id);
		return "redirect:list";
	}

추가로 mapper에 자료형 관련...

<!-- "_int" 반환 타입이 int입니다 / "int"Integer타입 -->
	<select id="countBbs" resultType="_int">
		select count(*) from simpleBbs
	</select>
	
<!-- 	다오에서 <HashMap<String, String> map = new HashMap<>();
		으로 item1이라는 키로 쭉쭉 넣어줬음. 
		허쉬맵은 parameterType="java.util.HashMap" 이렇게 받아옴.-->
	<insert id="writeDao3" parameterType="java.util.HashMap"> 
		insert into simplebbs (id, writer, title, content) values (simplebbs_seq.nextval, #{item1}, #{item2}, #{item3}) 
	</insert>

그리고 자료를 보내줄때 dto형으로 보내주면
#{id}등의 자료형으로 받을 수 있음.... 밑에는 String으로여서..

<insert id="insert">
	insert into simpleBbs values 
    	(simplebbs_seq.nextval,#{param1},#{param2},#{param3})
</insert>

@Param("_id") 라고 변수명을 지정해주면
id = #{_id} 처럼 설정한 변수명으로 받아올 수 있음

IService
public void deleteDao(@Param("_id")String id);

mapper
<delete id="deleteDao"> 
	delete from simplebbs where id = #{_id} 
</delete>
    
    
profile
화이탱!

0개의 댓글