JSPM

  • Created
  • Published
  • Downloads 17
  • Score
    100M100P100Q42162F
  • License MIT

a tool to convert sql to method

Package Exports

  • dsql

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (dsql) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

dsql 简介

dsql(Direct SQL)是一个将sql文件直接转换为数据库访问对象(Dao, Data Access Object)代码的工具,见以下例子: (SQL源文件件为User.sql)

    -- desc: 查询用户列表
    -- name: getList
    select userid, username, mobile from users where age >=(20);
    
    ...
```	
 以上User.sql经过dsql工具,生成以下UserDao.java代码
```	
    class UserDao{
        public static List<UserPo> getList(int agebegin) throws Exception{
          String sql="select userid, username, mobile from users where age >=?"
          ...
        }
        ...
    
    }
```	
    以及相应的UserPo代码
```	
    class UserPo {
      ...
      public int userid  ; 
      public String username;
      public String mobile;
    }
```	
#dql安装
1. 本工具依赖于nodejs,首先安装nodejs,nodejs可从以下官网中下载
https://nodejs.org/

2. 创建目录dsql,打开命令行终端,在dsql目录下执行以下dsql安装命令
npm install dsql

3. dsql下创建并正确配置db.json中的数据库连接地址及用户名密码

4. dsql下创建并配置java.json指定Dao及Po生成模板(暂不包括在当前dsql版本中)
 
#dsql使用
 写sql文件,并生成sql文件对应的dao及po代码,生成命令如下:
 
 dsql   -java projectJavaSourceCodeDirectory  relativeSqlFilePath
 以上命令在本readme.txt文件所在目录下执行。其中relativeSqlFilePath相对于projectJavaSourceCodeDirectory目录
 
例子: 
  dsql -java  ../dsql4sample/src/main/java    com/dsql4sample/sql/Test.sql 

以上例子把sql文件../dsql4sample/src/main/java/com/dsql4sample/sql/Test.sql
生成为dao代码../dsql4sample/src/main/java/com/dsql4sample/dao/TestDao.java

同时生成相应po代码,并存放在以下目录中  
../dsql4sample/src/main/java/com/dsql4sample/po/

以上目录路径均相对于dsql所在目录

    
#dsql的语法
为了能够自动生成Dao代码,dsql在sql基础上叠加了一层dsql语法
##参数名规则
### 条件参数: fieldname compare-operator (value)
  value是字符串或者数值,则 (value)转化为Dao代码时,表示为一个参数,参数名由字段名fieldname与compare-operator比较符决定。  
  1. 大于(或大于等于)比较符情况下, 参数名=fieldname+begin
     例子   age>=(20) 
     (20)表示参数agebegin

  2. 小于(或小于等于)比较符情况下, 参数名=fieldname+end
     例子   age<=(40)
     (40)表示参数ageend
    
  3. 等于比较符情况下, 参数名=fieldname
  例子   age=(20)
     (20)表示参数变量age
  
  3. IN比较符情况下, 参数名=fieldname+s
     例子  userid in ( (1) )
     (1)表示参数userids,userids代表多个userid经过逗号拼接出来的字符串 
  
  4. AS别名符情况下, 参数名=fieldname  
  例子  ('2020-04-05') as sumdate 
     ('2020-04-05')表示参数sumdate 
###重新命名参数 -- rename: parametername
 一行SQL形如: 
 ... (value) ... -- rename: parametername
 则 (value)表示参数parametername
 
 例子  addtime>= ('2010-01-01')  group by userid  -- rename: regtime
     ('2010-01-01')表示参数regtime

##可选条件参数
  如条件参数前面是2个空格,则是可选条件参数,当Dao方法传入该参数为null值时,则误会本条件。
  例子: 
-- name: getList
select userid, username, mobile from users where age >=(20)
  and addtime>=('2020-04-05');
  以上有2个条件参数agebegin 和addtimebegin,其中 addtimebegin是可选参数,如果Dao方法传入的addtimebegin=null,
  则相当于不限定addtime>=的条件
  
##方法名规则
  SQL语句前(须单独一行) -- name: methodname 表示方法名为methodname的方法
  例子:
  -- name: getList
  select ... ;
  表示生成方法名为getList的方法,所有方法均抛异常throws Exception
  
##Dao类名规则
  Dao类名=Sql文件名+Dao	
  例子 User.sql 代码生成为 UserDao.java 
  
##Dao包名规则
  Dao包名=Sql源文件的父目录对应的java包名+.dao
  SQL源代码文件 com/dsqlsample/sql/User.sql 的父目录为com/dsqlsample, UserDao包名为com.dsqlsample.dao
  存放文件为com/dsqlsample/dao/UserDao.java

##持久化对象Po类名规则
  持久化对象Po类名由方法名及文件名决定只针对select语句产生相应的Po对象
  1. Yyy.sql 中形如 getListXxx 或 getItemXxx的方法产生的Po命名为YyyPo.java
  2. getZzzListXxx或或 getZzzItemXxx的方法产生的Po命名为ZzzPo.java
  3. 其他情况methodname的Po命名为methodnamePo