Starter 프로젝트 생성

src/main/java → data.mapper 패키지 생성 → MarketMapperInter 인터페이스 생성
src/main/resources → mapper 폴더 생성 → MarketSql.xml 파일 생성
main application에 @MapperScan 추가
@SpringBootApplication
@ComponentScan({"data.*"})
@MapperScan({"data.mapper"})
public class BootMybatisMysqlApplication {
public static void main(String[] args) {
SpringApplication.run(BootMybatisMysqlApplication.class, args);
}
}
yml에 mybatis 설정
mybatis:
type-aliases-package: data.dto,data.mapper
mapper-locations:
- /mapper/**/*.xml
alias 설정 → dto 에 @Alias("")
@Data
@Alias("marketDto")
public class MarketDto {
private String num;
private String sang;
private int dan;
private String photoname;
private Timestamp ipgo;
}
Inter에 @Mapper 어노테이션
@Mapper
public interface MarketMapperInter {
public int getTotalCount(); //mapper의 id 값과 맞춰야함
}
mapper의 id 값과 맞춰야함
MarketSql에 sql문 작성
namespace에 mapper 있는 곳 정확히 적기
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTDMapper3.0//EN" "<http://mybatis.org/dtd/mybatis-3-mapper.dtd>">
<mapper namespace="data.mapper.MarketMapperInter">
<select id="getTotalCount" resultType="int"> //interface의 메서드명과 맞춰야함
select count(*) from market
</select>
</mapper>
interface의 메서드명과 맞춰야함
Controller
@Autowired MarketMapperInter mapper;
@Controller
public class MarketController {
@Autowired
MarketMapperInter mapper;
@GetMapping("/")
public String root() {
return "redirect:market/list";
}
@GetMapping("/market/list")
public ModelAndView list() {
ModelAndView mview = new ModelAndView();
int totalCount = mapper.getTotalCount();
mview.addObject("totalCount", totalCount);
mview.setViewName("marketList");
return mview;
}
}