nodejs版的mybatis已经发布了

在java界鼎鼎大名的mybatis,现在已经有了相应的nodejs(14+)版:

es-batis,现在已经支持几乎所有的动态sql标签,并且这些标签可以任意嵌套使用

  1. insert
  2. select
  3. update
  4. delete
  5. sql
  6. where
  7. set
  8. trim
  9. if
  10. foreach
  11. bind
  12. choose/when/otherwise
  13. include

使用示例:

import sqlTemplate, {
  AuroraEntity,
  DBColumn,
  initDaoContext,
  MySqlDaoContext,
} from es-batis
//更详细的参数请看参数类型申明,现在只支持非连接池的方式(因为用于serverless)
//more info for parameter,please refer to the source,only support none connection pool
const dao = new MySqlDaoContext({
  charset: utf8,
  host: mysqlhost,
  user: user,
  password: password,
})
await dao.initialize()
dao = initDaoContext({ dao })

const sql = sqlTemplate`<?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="esbatis.test">

  <select id="selectOne"   >
      SELECT
          t1.bank_name,
          t1.id
      FROM
          bank AS t1
      <where>
        <if test="id != null">
          and t1.id = #{id}
        </if>
      </where>
      ORDER BY
          t1.updated
  </select>
  </mapper>
  `

let sqlResults = await sql.selectOne(esbatis.test.selectOne, { id: 1 })
//example returns:
//sqlResults = {
//   bank_name: bank1,
//   id: 1,
// }

并且在使用typescript(4.4.4)的前提下,还支持和单表ORM结合。

本库,进行了大量的测试,代码覆盖率,除了一些异常分支,基本做到了全覆盖,现在已经在内部项目中使用了,有兴趣的也可以尝试下。

创作本库的背景:

    在nodejs界没有找到好用的和java一样的mybatis库,只有typeORM这些库,个人觉得不是很好用 可以让原来开发java的人员和顺利的使用他们熟悉的mybatis,减少迁移成本
经验分享 程序员 微信小程序 职场和发展