node.js

node.js mybatis-mapper + mysql 연동하기 DB 연동

YagSill 2023. 6. 11. 02:13
728x90

안녕하세요 yagsill 입니다.

 

오늘은 mybatis 와 mysql을 사용해서 db를 연동해 보겠습니다.

 

npm install mybatis-mapper
npm install mysql

 

api 호출하는 js 파일 내부에 선언해놨습니다.

공통 사용을 위해서 따로 파일을 빼서 사용하시는걸 추천드려요

const express = require("express")
const router = express.Router();
const mysql = require("mysql"); //RDBMS
const mybatisMapper = require("mybatis-mapper"); //설치한 Mybatis lib 맵핑


const connection = mysql.createConnection({
  //커넥션 생성
  host: "127.0.0.1", // 로컬이기 때문에 127이고 실제 서버는 서버 IP를 넣어주세요
  database: "데이터베이스 이름", // DB 이름입니다
  user: "유저아이디", // DB 권한이 있는 사용자 입니다.
  password: "비밀번호", // 사용자의 패스워드 입니다
});

router.post("/login", function (req, res) {
  //mapper 경로
  mybatisMapper.createMapper(["./mapper/web.xml"]);

  var param = {
    user_id: req.body.user_id,
    user_pw: req.body.user_pw,
  };

});

module.exports = router;

간단하게 DB 내에 있는 아이디 정보를 가져와볼게요

mapper를 이용해 xml파일을 델꼬옵니다.

 

router.post("/login", function (req, res) {
  //mapper 경로
  mybatisMapper.createMapper(["./mapper/web.xml"]);

  var param = {
    user_id: req.body.user_id,
    user_pw: req.body.user_pw,
  };

  var format = { language: "sql", indent: "  " };
  var query = mybatisMapper.getStatement(
    "web",
    "selectUserInfo",
    param,
    format
  );
});

module.exports = router;

이제 sql의 포멧을 설정하고 쿼리를 날려보죠!

 

"web" => xml의 이름입니다.

"selectUserInfo" => 쿼리를 호출하는 xml의 키입니다. 이거를 기준으로 쿼리를 읽어들인다고 생각하시면 됩니다.

param => 요청 시 보내는 파라미터 입니다

format => 위에서 정의한 포멧입니다.

 

전체코드

router.post("/login", function (req, res) {
  //mapper 경로
  mybatisMapper.createMapper(["./mapper/web.xml"]);

  var param = {
    user_id: req.body.user_id,
    user_pw: req.body.user_pw,
  };

  var format = { language: "sql", indent: "  " };
  var query = mybatisMapper.getStatement(
    "web",
    "selectUserInfo",
    param,
    format
  );

  // 로그인 비밀번호 입력 받는거 부터 ㄱ_ㄱ
  // 이후 회원가입단 시작

  connection.connect();
  connection.query(query, [], function (error, results, fields) {
    //전달
    if (error) {
      console.log(error);
    }

    return res.json({
      resultCode: 200,
      resultMsg: "성공",
      data: results,
    });
  });

  connection.end();
});

module.exports = router;

 

web.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="web">  

  <select id="selectUserInfo">
    SELECT
      user_id,
      user_pw
    FROM
      user_info 
    WHERE
      user_id = #{user_id}
  </select>
</mapper>

 

이전에 var query 로 "web", "selectUserInfo", param, format을 넣었죠??

xml에서 #{   } 은 파라미터값입니다. 저는 파라미터값에 user_id와 user_pw를 넣었으니 xml에서 #{user_id} 라고 꺼내서 쓰면 됩니다.

 

간단하게 아이디를 찾아봅시다.

짠! 너무쉽죠??

 

 

728x90