E:\workspace\GeneratorProject>Java -jar mybatis-generator-core-1.3.2.jar -config
file generatorConfig.xml -overwrite
网上关于ssm框架整合的文章很多,大多数是摘抄和转抄,在逆向工程部分多为使用mysql数据库,也有少量关于oracle的,而很少有使用sqlserver数据库的。
今天需要连接sqlserver数据库并逆向得到javabean,顺便总结在这种情况下如何编写配置文件。
问题:连接sqlserver数据库,需要逆向数据库的表为javabean,逆向工程运行完后没有任何日志(已经配置了log4j)。偶尔修改出来问题,也是语焉不详,我只好有撤销修改。
文件内容主要有两点:
1.如何找到问题的。
2.如何解决问题的。
关于1.鉴于myeclipse的日志比较鸡肋,所以我尽量多用命令行方式来执行操作。尤其是那些运行完后得不到结果还不打印错误日志的情况,还有打印了错误日志却完全一头雾水找不到问题根结所在的情况。
直接在myeclipse运行时,打印的日志。
2017-11-21 14:17:03 [ main:0 ] - [ DEBUG ] Retrieving column information for table "employee"
逆向工程没有任何变化。
我直接以上面的日志作为关键字搜索,发现正常的打印结果应该是:
2017-11-21 15:36:57 [ main:0 ] - [ DEBUG ] Retrieving column information for table "tb_student"
2017-11-21 15:36:57 [ main:140 ] - [ DEBUG ] Found column "id", data type 4, in table "master.dbo.tb_student"
2017-11-21 15:36:57 [ main:140 ] - [ DEBUG ] Found column "name", data type 1, in table "master.dbo.tb_student"
2017-11-21 15:36:57 [ main:140 ] - [ DEBUG ] Found column "acount", data type 4, in table "master.dbo.tb_student"
于是我就使用命令行去逆向Sqlserver,希望能知道为什么我运行的日志里,没有打印任何错误,而且日志也和别人不一样。
mybatis逆向工程命令:
E:\workspace\GeneratorProject>Java -jar mybatis-generator-core-1.3.2.jar -config
file generatorConfig.xml -overwrite
当然,先要cd到mybatis-generator-core-1.3.2.jar目录,该jar包目录还要有逆向工程的配置文件。配置文件最后放。
运行后果然看到了不同的结果:
Table configuration with catalog null, schema null, and table TB_STUDENT did not
resolve to any tables
MyBatis Generator finished successfully, there were warnings.
于是我又以did not resolve to any tables为关键字搜索,才找到了接近正确答案的解决方法。
这个人总结很全,谢谢你。
https://www.cnblogs.com/JAVA-STUDYER/p/7110155.html
但是他依然没有明确说明Sqlserver逆向失败的问题症结。
下面贴出逆向工程配置然后说明:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<!--数据库驱动,最好不要有中文字符,不然会找不到 -->
<classPathEntry location="E:/sqljdbc4.jar" />
<!-- <context id="DB2Tables" targetRuntime="MyBatis3"> -->
<context id="DB2Tables" targetRuntime="MyBatis3"
defaultModelType="flat">
<commentGenerator>
<property name="suppressDate" value="true" />
<property name="suppressAllComments" value="true" />
</commentGenerator>
<!--数据库链接地址账号密码 -->
<jdbcConnection driverClass="com.microsoft.sqlserver.jdbc.SQLServerDriver"
connectionURL="jdbc:sqlserver://127.0.0.1:1433;test?characterEncoding=utf8"
userId="sa" password="123456">
</jdbcConnection>
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!--生成Model类存放位置 -->
<javaModelGenerator targetPackage="com.ryzh0310.controllor"
targetProject=".\src">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!--生成映射文件存放位置 -->
<sqlMapGenerator targetPackage="com.ryzh0310.controllor"
targetProject=".\src">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!--生成DaoMapper类存放位置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.ryzh0310.mapper" targetProject=".\src">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!--生成对应表及类名,需要记住的一点是逆向工程无法生成关联关系,只能生成单表操作 -->
<table tableName="tb_student" domainObjectName="Student"
></table>
</context>
</generatorConfiguration>
问题就在jdbcConnection这个节点:
原来的写法是:
<jdbcConnection driverClass="com.microsoft.sqlserver.jdbc.SQLServerDriver"
connectionURL="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=test"
userId="sa" password="123456">
</jdbcConnection>
<jdbcConnection driverClass="com.microsoft.sqlserver.jdbc.SQLServerDriver"
connectionURL="jdbc:sqlserver://127.0.0.1:1433/test?characterEncoding=utf8"
userId="sa" password="123456">
</jdbcConnection>
存疑,未验证。
默哀十分钟!!!