yhbatis
Version:
Like Mybatis for nodejs By YYH.
62 lines (59 loc) • 1.85 kB
JavaScript
var analysisMapper = [];
function analysis () {}
var analysisObject = new analysis();
analysis.prototype.mappingSection = function(jsMapper){
for(var i = 0 ; i < jsMapper.length ; ++ i){
for(var key in jsMapper[i].MAPPER){
if(key.toUpperCase() == "INSERT" || key.toUpperCase() == "UPDATE" || key.toUpperCase() == "SELECT" || key.toUpperCase() == "DELETE"){
if(jsMapper[i].MAPPER[key].length == null)
analysisMapper[jsMapper[i].MAPPER[key]["ID"]] = jsMapper[i].MAPPER[key]["_text"];
else{
for(var j = 0 ; j < jsMapper[i].MAPPER[key].length ; ++j){
analysisMapper[jsMapper[i].MAPPER[key][j]["ID"]] = jsMapper[i].MAPPER[key][j]["_text"];
}
}
}
}
}
}
analysis.prototype.sqlSection = function(section,dto,pool,callback){
var copyMapper = new String(analysisMapper[section]);
if(dto!=null){
if(dto!=""){
if(Object.keys(dto).length !=0){
for(var key in dto)
{
var reg = new RegExp("#{"+key+".*?}","g");
var tempDtoKey = (dto[key]+"").replace(/"/g, "\\\"");
tempDtoKey = tempDtoKey.replace(/'/g, "\\\'");
copyMapper = copyMapper.replace(reg,"'"+tempDtoKey+"'");
}
if((/#{.*?}/g).test(copyMapper)){
throw new Error("dto failure "+copyMapper.match(/#{.*?}/g));
}
}
}
}
copyMapper = copyMapper.toString();
baseDataBase('error '+section,function(connection){
connection.query(copyMapper, function(err, rows) {
if (err) {
console.error('error '+ section + err.stack);
connection.release();
return;
}
connection.release();
callback(rows);
});
});
}
exports.analysis = analysisObject;
function baseDataBase (msg,callback){
pool.getConnection(function(err, connection) {
if (err) {
console.error(msg + err.stack);
return;
}
callback(connection);
});
}