ScalikeJDBC是一个Scala的JDBC框架,适用于绝大多数RDBMS数据库(关系数据库)
重要的是,在这几天简单的使用了一下,用sqlserver来测试了一下用mysql或者h2的scalikeJDBC,可以得出结果:
- 数据库语言的语法和driver相对应。
- 而scalikeJDBC的代码可通用,多个不同数据库能一起使用,和能够读取相关线程池HikariCP(保持和数据库的连接)的配置文件
- 不同的是线程池内的相关数据库配置文件(包含驱动等相关信息)和不同是数据库语言的语法
当要把scalikeJDBC做成rest-sql,应该考虑的重点是,
- 返回类型转化为Map键值对
- scalikeJDBC与不同的数据库之间的共同关联
- repo对应的方法和JDBCEngine的方法
- 在scalikejdbc内的SQL类内方法
- 考虑到存在批量操作,需要fetchSize参数和是否authcommit,即事务
- 首先,在安装了sqlserver后,简单的使用了数据库语言进行增删改查,能够看到需要的,执行后的结果是:(执行的行数)和(时间)
- 数据库内的DDL和DML,
- DDL(data definition language): DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用
- DML(data manipulation language): 它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言
- rest中的put 、post、get和delete,考虑相对应的数据库内的读写分离,
- scalikeJDBC是把sql语句切分开成为具体sql(SELECT等句子)和参数。===》SQL SERVER =》回来具体的流或者具体的数据。
- 整个数据库和编码的数据格式的转换,例如sql server中没有存在blob格式,不同的数据库要注意mysql或者sqlserver等数据库的数据等格式,其中主要的 是时间戳的TIMESTAMP的格式转换和图片的格式转换。
- scalikeJDBC的engine将scalikeJDBC中的具体执行过程分别成为不同的过程。
//将sql语句执行的固定scalikeJDBC语句 NamedDB(ctx.dbName) localTx { implicit session => }
- 当我用execute能够执行很多数据库内的语言,对表的增删改、索引、视图的增删改等
val createSQL: SQL[Nothing,NoExtractor] =SQL(""" """) createSQL.execute.apply()(NamedAutoSession(dbname))
- 具体拆分sql server语句和参数,通过url+sql语句,而拆分语句和参数,具体执行
- 键值对,_*==>拆分seq等集合,把Seq展开, 变成很多个参数的意思
- 明确
queryTags等具体需求等。。。。。。
- scalikeJDBC的同步与异步。
- 交易控制
-
考虑好反应式流的具体功能与需求