使用slick 3.2 codegen 和mysql connector 6自动生成代码
2017-06-20 19:05
281 查看
slick官网上面关于codegen的部分的代码如下:
其中,profile是profile类的全限定名,比如
然而由于版本升级的原因,slick codegen的代码老是运行出错,我在网上找到的代码出现各种各样的错误,主要有两种,一种是显示Driver找不到:
可知需要把
这也是由于mysql connector版本升级的原因,mysql connector在5.x版本的时候参数
slick.codegen.SourceCodeGenerator.main( Array(profile, jdbcDriver, url, outputFolder, pkg, user, password) )
其中,profile是profile类的全限定名,比如
slick.jdbc.H2Profile,是和数据库种类相关的;jdbcDriver是jdbc驱动类的全限定名,比如
org.h2.Driver;url就是jdbc的url,通俗点理解就是你的数据库的地址,比如
jdbc:postgresql://localhost/test;outputFolder是你想要把生成的代码输出的位置;pkg是生成代码需要放置在哪个scala包里面;user和password就是数据库的账号密码。
然而由于版本升级的原因,slick codegen的代码老是运行出错,我在网上找到的代码出现各种各样的错误,主要有两种,一种是显示Driver找不到:
java.lang.ClassNotFoundException: slick.driver.MySQLDriver$。这时看一下
slick.driver.driver里面对应的MySQL的部分:
@deprecated("Use type `slick.jdbc.MySQLProfile` instead of `slick.driver.MySQLDriver`", "3.2") type MySQLDriver = slick.jdbc.MySQLProfile @deprecated("Use object `slick.jdbc.MySQLProfile` instead of `slick.driver.MySQLDriver`", "3.2") val MySQLDriver = slick.jdbc.MySQLProfile
可知需要把
profile换成
slick.driver.MySQLDriver,另外由于mysql connector已经从5.x升级到6.x系列,所以
jdbcDriver需要换成
com.mysql.cj.jdbc.Driver。之后还出现一个错误是
Exception in thread "main" java.sql.SQLException: Table name pattern can not be NULL or empty. at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:545) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:513) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:505) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:479) at com.mysql.cj.jdbc.DatabaseMetaData.getTables(DatabaseMetaData.java:3836) at slick.jdbc.meta.MTable$$anonfun$getTables$1.apply(MTable.scala:28) at slick.jdbc.meta.MTable$$anonfun$getTables$1.apply(MTable.scala:28) at slick.jdbc.ResultSetInvoker$$anon$4.createResultSet(ResultSetInvoker.scala:36) at slick.jdbc.ResultSetInvoker.iteratorTo(ResultSetInvoker.scala:19) at slick.jdbc.Invoker$class.foreach(Invoker.scala:48) at slick.jdbc.ResultSetInvoker.foreach(ResultSetInvoker.scala:14) at slick.jdbc.StreamingInvokerAction$class.run(StreamingInvokerAction.scala:22) at slick.jdbc.ResultSetAction$$anon$1.run(ResultSetInvoker.scala:42) at slick.jdbc.ResultSetAction$$anon$1.run(ResultSetInvoker.scala:42) at slick.basic.BasicBackend$DatabaseDef$$anon$2.liftedTree1$1(BasicBackend.scala:240) at slick.basic.BasicBackend$DatabaseDef$$anon$2.run(BasicBackend.scala:240) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)
这也是由于mysql connector版本升级的原因,mysql connector在5.x版本的时候参数
nullNamePatternMatchesAll的默认值是
true,然而到了6.x版本的时候它的值变成了
false,所以需要在
jdbc url的字符串里面加上
nullNamePatternMatchesAll=true。总的代码如下:
object CodeGenenerator extends App { slick.codegen.SourceCodeGenerator.main( Array("slick.jdbc.MySQLProfile", "com.mysql.cj.jdbc.Driver", "jdbc:mysql://×××.××.×××.×××/×××?nullNamePatternMatchesAll=true", "××××/app/", "××××", "root", "×××××") ) }
相关文章推荐
- 使用Eclipse3.2(MyEclipse)+ abator自动生成iBatis代码以及配置文件的方法
- swagger-codegen自动生成代码工具的介绍与使用
- C#分析数据库结构,使用XSL模板自动生成代码
- C#分析数据库结构,使用XSL模板自动生成代码
- 使用CodeSmith根据数据库中的表自动生成WinUI界面(使用TableLayoutPanel布局)的代码.
- 在自动生成的代码中使用partial关键字
- 基于JavaScript的代码自动生成工具 JavaScript Based Code Generator - codegen
- [导入]C#分析数据库结构,使用XSL模板自动生成代码
- 如何高效地使用XCodeFactory自动生成的数据层代码(二)
- ibatis - 自动代码生成工具abator 使用介绍
- C#分析数据库结构,使用XSL模板自动生成代码 - 清清月儿 .NET万花筒 Asp.net技术 Asp.net教程 Asp.net源码 Asp.net基础 Asp.net控件 Asp.net入门 - CSDNBlog
- 使用Visual Studio宏来自动生成代码 [ Visual Studio | 宏 | 自动生成代码 ]
- C#分析数据库结构,使用XSL模板自动生成代码
- ibatis - 自动代码生成工具abator 使用介绍
- AutoCode (vs插件)自动生成代码插件 下载及使用教程(C#版)
- C#分析数据库结构,使用XSL模板自动生成代码
- ibatis - 自动代码生成工具abator 使用介绍
- C#分析数据库结构,使用XSL模板自动生成代码
- 使用Visual Studio宏来自动生成代码 [ Visual Studio | 宏 | 自动生成代码 ]
- 如何高效地使用XCodeFactory自动生成的数据层代码(一)