mybatis-generator + mysql/ptsql

勿忘初心2018-12-02 13:54

此文已由作者赵计刚薪授权网易云社区发布。

欢迎访问网易云社区,了解更多网易技术产品运营经验。


用了mybatis-generator,我就不再想用注解了,这与我之前说的注解与XML并用是矛盾的,知识嘛,本来就是多元化的,今天喜欢这个,明天喜欢那个,哈哈,看了mybatis-generator下边的作用,再决定用哪个。

mybatis-generator的作用:

  • 生成model、mapper接口、mapper对应的xml文件(包含基本的增删该查与条件不定式的插入、更新和查询)
  • 在项目的设计初期,数据库往往会发生微小的变动,比如添加或者修改一个字段,但是此时我们还没有修改多少mapper和xml,这个时候可以直接使用mybatis-generator重新生成以上三个东西,不需要自己手动去动那三个类(方便数据库的修改)
  • 如果model有很多属性(十个以上),自己亲手去写就有点麻烦了,自动生成会比较快
  • 自己手写的话,一些jdbcType和javaType的对应可能忘记,例如,jdbcType是TIMESTAMP,那么javaType就是Date,如果设置成java8的LocalDateTime就会出错,sqlSessionFactory就无法实例化了

 

一、转自

http://www.cnblogs.com/smileberry/p/4145872.html 描述了怎样使用mybatis-generator

http://www.jianshu.com/p/e09d2370b796 mybatis-generator配置文件详解

二、使用mybatis-generator

2.1、下载

https://github.com/mybatis/generator/releases

2.2、准备目录结构与jar包

  • 配置文件generatorConfig.xml见2.3
  • src目录,建立该目录主要是与generatorConfig.xml的targetProject配置有关
  • 两个jar包
    • mybatis-generator-core-1.3.2.jar(2.1下载的)
    • mysql-connector-java-5.1.37.jar

2.3、编写配置文件generatorConfig.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE generatorConfiguration
 3   PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
 4   "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
 5 <generatorConfiguration>
 6     <!--数据库驱动-->
 7     <classPathEntry    location="mysql-connector-java-5.1.37.jar"/>
 8     <context id="mysql">
 9         <commentGenerator>
10             <property name="suppressDate" value="true"/>
11             <property name="suppressAllComments" value="true"/>
12         </commentGenerator>
13         <!--数据库链接地址账号密码-->
14         <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://ip:3306/dbname" userId="root" password="xxx">
15         </jdbcConnection>
16         <javaTypeResolver>
17             <property name="forceBigDecimals" value="false"/>
18         </javaTypeResolver>
19         <!--生成Model类存放位置-->
20         <javaModelGenerator targetPackage="com.xxx.model" targetProject="src">
21             <property name="enableSubPackages" value="true"/>
22             <property name="trimStrings" value="true"/>
23         </javaModelGenerator>
24         <!--生成映射文件存放位置-->
25         <sqlMapGenerator targetPackage="lcw.mapping" targetProject="src">
26             <property name="enableSubPackages" value="true"/>
27         </sqlMapGenerator>
28         <!--生成mapper类存放位置-->
29         <javaClientGenerator type="XMLMAPPER" targetPackage="com.xxx.mapper" targetProject="src">
30             <property name="enableSubPackages" value="true"/>
31         </javaClientGenerator>
32         <!--生成对应表及类名-->
33 
34         <table tableName="T_USER" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
35 
36     </context>
37 </generatorConfiguration>

注意点:

  • model和mapper的targetPackage属性要设置成正确的目录(即项目中的真实目录),否则可能将这些东西拷贝到项目里之后,还需要手动去改xml的配置。 

如果是ptsql的话,用如下的配置,实际上最本质的地方就是多了一个schema。

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE generatorConfiguration
 3   PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
 4   "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
 5 <generatorConfiguration>
 6     <!--数据库驱动-->
 7     <classPathEntry    location="postgresql-9.1-901.jdbc4.jar"/>
 8     <context id="ptsql">
 9         <!--必须有,否则会生成很多注释-->
10         <commentGenerator>
11             <property name="suppressDate" value="true"/>
12             <property name="suppressAllComments" value="true"/>
13         </commentGenerator>
14         <!--数据库链接地址账号密码-->
15         <jdbcConnection driverClass="org.postgresql.Driver" connectionURL="jdbc:postgresql://ip:5432/ku" userId="username" password="password">
16         </jdbcConnection>
17         <javaTypeResolver>
18             <property name="forceBigDecimals" value="false"/>
19         </javaTypeResolver>
20         <!--生成Model类存放位置-->
21         <javaModelGenerator targetPackage="com.xxx.model" targetProject="src">
22             <property name="enableSubPackages" value="true"/>
23             <property name="trimStrings" value="true"/>
24         </javaModelGenerator>
25         <!--生成映射文件存放位置-->
26         <sqlMapGenerator targetPackage="lcw.mapping" targetProject="src">
27             <property name="enableSubPackages" value="true"/>
28         </sqlMapGenerator>
29         <!--生成mapper接口存放位置-->
30         <javaClientGenerator type="XMLMAPPER" targetPackage="com.xxx.mapper" targetProject="src">
31             <property name="enableSubPackages" value="true"/>
32         </javaClientGenerator>
33         <!--生成对应表及类名-->
34         <table schema="myschema" tableName="t_name" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">
35         </table>
36 
37     </context>
38 </generatorConfiguration>

注意:

  • 生成后的model和mapper的包名是"com.xxx.model.myschema"的形式,所以需要对model/mapper/xml做调整
  • 如果没有主键的话,只会生成insert和insertSelecttive

 

2.4、生成model、mapper和项xml

  • java -jar mybatis-generator-core-1.3.2.jar -configfile generatorConfig.xml -overwrite

2.5、将生成的文件导入项目中相应的位置即可

三、配置文件详解

 View Code


免费体验云安全(易盾)内容安全、验证码等服务

更多网易技术、产品、运营经验分享请点击