spring + mybatis + mysql + jdbc 설정

pom.xml

    <!-- mysql jdbc connector -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
<!--            <scope>runtime</scope>-->
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <!-- mybatis -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.2</version>
        </dependency>

application.properties

# mybatis
spring.datasource.url=jdbc:mysql://localhost:3306/study_db?characterEncoding=UTF-8&serverTimezone=UTC&SSL=false
spring.datasource.username=root
spring.datasource.password=52273178
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
##MyBatis
mybatis.type-aliases-package=com.example.demo.dto
mybatis.mapper-locations=classpath:mapper/*.xml

/java/<packagename>/<nameApplication>.class

@MapperScan(basePackageClasses = <nameApplication>.class)

추가!  최초 1번만 빌드 해주면 @mapper annotation을 인식한다.

package com.example.demo;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@MapperScan(basePackageClasses = DemoApplication.class)
@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

@Controller

package com.example.demo.cont;

import com.example.demo.mapper.Mapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class Cont {
    @Autowired
    public Mapper mapper;
    
    @GetMapping("/")
    public String jsp(Model model) {
        System.err.println(mapper.getUsers().get(0).getUid());
        return "jsp";
    }
}

@Mapper

package com.example.demo.mapper;

import com.example.demo.dto.UserDTO;

import java.util.List;

@org.apache.ibatis.annotations.Mapper
public interface Mapper {
    List<UserDTO> getUsers();
}

DTO.class

package com.example.demo.dto;

public class UserDTO {

    private int num;
    private String uid;
    private String pwd;
    private String name;
    private String birth;
    private String phone;
    private String email;

    public UserDTO() {
    }

    public UserDTO(int num, String uid, String pwd, String name, String birth, String phone, String email) {
        this.num = num;
        this.uid = uid;
        this.pwd = pwd;
        this.name = name;
        this.birth = birth;
        this.phone = phone;
        this.email = email;
    }

    public int getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }

    public String getUid() {
        return uid;
    }

    public void setUid(String uid) {
        this.uid = uid;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getBirth() {
        return birth;
    }

    public void setBirth(String birth) {
        this.birth = birth;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

 

/resources/mapper/Mapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.mapper.Mapper">
    <select id="getUsers" resultType="com.example.demo.dto.UserDTO">
        select
            *
        from
            user
    </select>
</mapper>

 

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.example.libraryweb.mapper 오류

@MapperScan(basePackageClasses = .class) 선언으로 해결

 

 

Comment