博文

目前显示的是 六月, 2012的博文

Torque源码之二

在使用torque的过程中,generator的自动生成代码很是方便,有点遗憾的是每次生成代码之后要手动的替换一些东西,数据库名,和主键自动生成的时候设置主键生成策略,然后才能使用。 为什么框架不能实现的更好一点,一次性生成可用的代码呢? 问题1,generator在执行jdbc这个target过程中,生成的schema文件中database元素的name属性是root,并不是数据库的名,跟踪代码发现这个值是根据配置中的dbUser的值来赋值的,怪不得是root因为数据库连接的用户名是root。 没明白为什么database的name属性是根据dbUser来给数据库name赋值,把它改成dbSchema,然后在作配置的时候,指定schema为数据库名就可以了 201行改为 databaseNode.setAttribute( "name", dbSchema); 问题2,同样是在generator在执行jdbc这个target过程中,数据库中表的主键为自增长的时候,生成的schema文件的database元素要有idMethod=“native”属性值,否则在使用过程中实体的insert方法执行完成后并没有把这条数据的ID带回来,很是不方便。 继续跟踪源代码发现在实现过程中并没有考虑主键生成策略这个因素,无奈自己顺藤摸瓜把这个属性给加上吧。 大致过程是在从数据库中把表结构取出来的时候记录下来表的主键生成策略,如果为自动生成, 在表下增加属性table.setAttribute(“idMethod”, “native”); getColumns方法中 String is_autoincrement = columnSet.getString(23); //。。。 col.add(decimalDigits); col.add(is_autoincrement); columns.add(col); //。。。 剩下就是在组织xml结构的时候把这个属性加上 generateXML方法中增加 boolean isautoincrement = false; if (isautoincrement) { table.setAttribute( "idMethod", "native");...