使用mybatis-generator.xml 生成PO 对象

问题是,开发了一个旧项目改造,以前是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类型的,数据库就不会报错了

原文地址:https://www.cnblogs.com/zytcomeon/p/15484829.html