mybatis逆向工程与sqlserver数据库的关系

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>


上面那个哥们给出的在oracle中逆向应该这样写:
<jdbcConnection driverClass="com.microsoft.sqlserver.jdbc.SQLServerDriver"
			connectionURL="jdbc:sqlserver://127.0.0.1:1433/test?characterEncoding=utf8"
			userId="sa" password="123456">
		</jdbcConnection>



存疑,未验证。



默哀十分钟!!!



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值