问题是,开发了一个旧项目改造,以前是jsp,现在改为前后端分离,以前的增删改查还是用的以前的BL,BL是用的Schema生成的,
那么现在进行一次转换
CREATE TABLE `lawagecalelement` ( `RiskCode` varchar(10) NOT NULL, `CalType` char(2) NOT NULL, `F1` varchar(10) DEFAULT NULL, `F2` varchar(10) DEFAULT NULL, `F3` varchar(10) DEFAULT NULL, `F4` varchar(10) DEFAULT NULL, `F5` varchar(10) DEFAULT NULL, `CalCode` varchar(6) DEFAULT NULL, `BranchType` varchar(2) NOT NULL, `BranchType2` varchar(2) NOT NULL, `CalOrder` int(2) DEFAULT NULL, PRIMARY KEY (`RiskCode`,`CalType`,`BranchType`,`BranchType2`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
命名为:mybatis-generator.xml
<?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> <context id="mysql" targetRuntime="MyBatis3"> <commentGenerator> <property name="suppressDate" value="true"/> <!-- 是否去除自动生成的注释 true:是 : false:否 --> <property name="suppressAllComments" value="true"/> </commentGenerator> <!-- 数据库链接信息 --> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://10.253.76.193:3306/product?useUnicode=true" userId="root" password="root"> </jdbcConnection> <javaTypeResolver > <!-- 不需要将数据的小数类型,生成为BigDecimal --> <property name="forceBigDecimals" value="false" /> </javaTypeResolver> <!-- 生成数据库表对应的pojo类 --> <javaModelGenerator targetPackage="com.zyt.po" targetProject="src/main/java"> <property name="enableSubPackages" value="false" /> <property name="trimStrings" value="true" /> </javaModelGenerator> <!-- 生成mapper.xml --> <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources/mapping"> <property name="enableSubPackages" value="false" /> </sqlMapGenerator> <!-- 生成mapper接口 --> <javaClientGenerator type="XMLMAPPER" targetPackage="com.zyt.dao" targetProject="src/main/java"> <property name="enableSubPackages" value="false" /> </javaClientGenerator> <!-- 指定数据库表 schema不用填写 tableName=“表名” domainObjectName=生成的PO的名字 mapperName=生成的mapper的名字--> <table schema="" tableName="lawagecalelementmodel" domainObjectName="lawagecalelementmodel" mapperName="lawagecalelementmodel" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false" > <property name="useActualColumnNames" value="true" /> <columnOverride column="CalOrder" javaType="Integer" /> </table> </context> </generatorConfiguration>
查看生成的文件
package com.zyt.po; public class lawagecalelementmodel { private String modeltype; private String CALTYPE; private String f1; private String f2; private String f3; private String f4; private String f5; private String CALCODE; private String BRANCHTYPE; private String BRANCHTYPE2; private Integer CALORDER; ...}
这个的思考:
这个是数据库中的字段是int 类型的,那么PO正确的应该为Integer,如果是int 肯定不对,因为int的默认值是为0的,
DTO中的字段设计为String类型是勉强的,设计为String类型,就是省事了,但是如果前面传入的为abc 或汉字为varchar类型的,数据库就不会报错了