본문 바로가기
Web Programming/Java

[SpringBoot] Controller, Service, Dao 등과 Mapper(Mybatis) 의 type 관계 (오류해결) / CRUD 중 R이 예시

by jaey0ng 2023. 11. 28.

먼저.. 제가 오류가 난 상황을 설명드리겠습니다

Controller, Service, Dao에

public String selGridList() {
        return gridService.selGridList();
}

 

이런식으로 String으로 선언을 해줬습니다

 

하지만 Mapper에는....

<select id="selGridList" resultType="Map" parameterType="String">

 

제가 이런식으로 선언을 했더군요....

 

Mapper의 resultType과 Controller, Service, Dao의 String 부분의 타입이 같아야했는데

 

아무생각없이 개발하고 있었더라구요..

 

Controller.java

@RequestMapping(value= "/grid", method = RequestMethod.GET)
public Map<String, String> selGridList() {
    return gridService.selGridList();
}

 

Service.java

public Map<String, String> selGridList() {
    return gridDao.selGridList();
}

 

Dao.java

@Autowired
private SqlSessionTemplate sqlSessionTemplate;

public Map<String, String> selGridList() {
    Map<String,String> test = new HashMap<String, String>();
    test = sqlSessionTemplate.selectOne("GridMapper.selGridList");
    return test;
}

 

Mapper.xml

<mapper namespace="GridMapper">
	<select id="selGridList" resultType="Map" parameterType="String">
		SELECT 'test' AS ProductID
		     , 'testNm' AS ProductName
		     , '10000' AS UnitPrice
		     , 'Units' AS UnitsInStock
		     , '123123' AS Discontinued
		  FROM DUAL 
	</select>
</mapper>

 

이렇게 만들어주면..

결과는

 

잘 연동되는 것을 확인할 수 있습니다..

 

이상 typeError가 나왔을 때 의심해야할 부분이였습니다.