본문 바로가기
javascript

[Javascript] node.js에서 mybatis..

by dyyoo 2019. 11. 9.

어제 면접을 봤는데, node.js에서 DB연동을 할때 mybatis를 썼냐는 질문에 

 

안쓰고  db별로 제공하는 모듈을 썼다고 하니 고개를 갸우뚱하셔서.. 그때 질문을 못하고 끝나고 와서 공부했다.

 

es6에선 Template String이 지원되니 따로 모듈로 빼서 관리를 했는데..

 

아직 이유는 모르겠지만 상황에 맞게 쓰면 되지않을까 싶다.

 

우선. mybatis모듈은 mybatis-mapper를 썼다.

 

사용법은 java에서 사용한것과 거의 비슷하다. 

 

npm install --save mybatis-mapper

 

아래 예제는 https://www.npmjs.com/package/mybatis-mapper

<?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="fruit">  
  <select id="testBasic">
    SELECT
      name,
      category,
      price
    FROM
      fruits 
    WHERE
      category = 'apple' AND
      <![CDATA[ price < 500 ]]>
  </select>
</mapper>

 

const mysql = require('mysql2');
const mybatisMapper = require('mybatis-mapper');
 
// create the connection to database
const connection = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  database: 'test'
});
 
// create the myBatisMapper from xml file
mybatisMapper.createMapper([ './fruits.xml' ]);
 
// SQL Parameters
var param = {
    category : 'apple',
    price : 100
}
 
// Get SQL Statement
var format = {language: 'sql', indent: '  '};
var query = mybatisMapper.getStatement('fruit', 'testBasic', param, format);
 
// Do it!
connection.query(query, function(err, results, fields) {
  console.log(results); 
  console.log(fields);
});

 

댓글