Mybatis是Java EE中比较主流的一种持久化orm框架,其缺点是不够灵活,需要写的代码较多,包括:

  • 一个sql-map-config.xml
  • 对应每个表的xml文件
  • 对应每个表的实体POJO
  • DAO(数据访问对象)

好在官方提供了mybatis-generator这个组件,经过对官方例子的学习,已经正式在项目中应用了自动化代码,腰不酸腿不疼了,大大提高了生产效率。

如何使用

首先需要准备三个东西:

  • mybatis-generator-core.jar 自动化需要的jar包
  • mybatis-generator.xml 文件,里面需要配置数据源和一系列的自动化规则
  • 执行脚本

一项一项说,mybatis-generator-core.jar 这个jar包,官网上可以下载,作者使用的是1.3.2版本。
做个网盘方便懒人吧:http://pan.baidu.com/s/1dFDhWxN

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>
<classPathEntry
location="/Users/xxxx/workspace/xxx/lib/mysql-connector-java-5.1.5-bin.jar" />
<context id="MysqlContext" targetRuntime="Ibatis2Java2" defaultModelType="flat">
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/> <commentGenerator>
<property name="suppressDate" value="true"/>
</commentGenerator> <jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://xxx.xxx.xxx.xxx:3306/xxx"
userId="your_account"
password="your_password">
</jdbcConnection>
<javaTypeResolver >
<property name="forceBigDecimals" value="false" />
</javaTypeResolver> <javaModelGenerator targetPackage="generate.model" targetProject="/Users/xxxx/workspace/xxxx/src/main/java">
<property name="trimStrings" value="true" />
<property name="enableSubPackages" value="true" />
</javaModelGenerator> <sqlMapGenerator targetPackage="generate" targetProject="/Users/xxxx/workspace/xxxx/src/main/resources/db">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator> <javaClientGenerator type="SPRING" targetPackage="generate.dao" targetProject="/Users/xxxx/workspace/xxxx/src/main/java"/> <table tableName="open_user" domainObjectName="OpenUser"
enableSelectByPrimaryKey="true"
enableSelectByExample="false"
enableDeleteByPrimaryKey="true"
enableDeleteByExample="false"
enableCountByExample="false"
enableUpdateByPrimaryKey="true"
enableUpdateByExample="false"
selectByExampleQueryId="false"
selectByPrimaryKeyQueryId="false"
>
<generatedKey column="id" sqlStatement="Mysql" identity="true"/>
</table>
</context>
</generatorConfiguration>

略微做一些解释:其中项目地址和数据源很清楚,需要正确配置。javaModelGenerator和sqlMapGenerator标签中的targetPackage是需要把自动生成的代码放到什么位置。我的做法是先统一放到一个地方generate文件夹,然后根据需要挪到目标文件夹,这样不用每次修改这个targetPackage。每次只需要修改tableName即可。

其次就是table中的一系列属性如enableSelectByPrimaryKey,含义是是否需要某某方法。这里如果全部是true,将会生成一个非常长的sqlmap文件,很不清晰,我这里只把最基本的CRUD操作放了出来,复杂查询还是后续自己手工写。

另外,项目使用的是Spring+Mybatis,所以使用的是Spring的SqlMapClientTemplate,所以javaClientGenerator是type="SPRING"。

还有context中targetRuntime这儿是跟你的Mybatis版本有关,作者使用的是古老的ibatis2.3.4,比较稳定(后来的Mybatis会有一些新引入的问题,这里不赘述了),所以这里用的是Ibatis2Java2。

最后,执行脚本的话是这样的:

java -jar ~/workspace/xxxx/lib/mybatis-generator-core-1.3.2.jar -configfile ~/workspace/xxxx/src/main/resources/db/generator.xml -overwrite

作者:纳达丶无忌
链接:https://www.jianshu.com/p/11e7629938c1
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

Mybatis自动化生成代码的更多相关文章

  1. 【MyBatis】MyBatis自动生成代码查询之爬坑记

    前言 项目使用SSM框架搭建Web后台服务,前台后使用restful api,后台使用MyBatisGenerator自动生成代码,在前台使用关键字进行查询时,遇到了一些很宝贵的坑,现记录如下.为展示 ...

  2. Mybatis 自动生成代码,数据库postgresql

    最近做了一个项目,使用Mybatis自动生成代码,下面做一下总结,被以后参考: 一.提前准备: 1.工具类:mybatis-generator-core-1.3.2.jar 2.postgresql驱 ...

  3. springboot mybatis 自动生成代码(maven+IntelliJ IDEA)

    1.在pom文件中加入需要的依赖(mybatis-generator-core) 和 插件(mybatis-generator-maven-plugin) <dependency> < ...

  4. mybatis自动生成代码插件mybatis-generator使用流程(亲测可用)

    mybatis-generator是一款在使用mybatis框架时,自动生成model,dao和mapper的工具,很大程度上减少了业务开发人员的手动编码时间 坐着在idea上用maven构建spri ...

  5. mybatis根据表逆向自动化生成代码(自动生成实体类、mapper文件、mapper.xml文件)

    .personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...

  6. mybatis Generator生成代码及使用方式

    本文原创,转载请注明:http://www.cnblogs.com/fengzheng/p/5889312.html 为什么要有mybatis mybatis 是一个 Java 的 ORM 框架,OR ...

  7. MyBatis自动生成代码示例

    在项目中使用到mybatis时,都会选择自动生成实体类,Mapper,SqlMap这三个东东. 手头上在用的又不方便,找了下网上,其实有很多文章,但有些引用外部文件时不成功,也不方便,所以重新整理了下 ...

  8. mybatis自动生成代码

    使用maven集成mybatis-generator插件生成Mybatis的实体类,DAO接口和Map映射文件 本例中,使用的是mysql数据库 前提:表已经建好  mybatis框架的jar包,数据 ...

  9. mybatis逆向工程生成代码

    1 什么是逆向工程 mybaits需要程序员自己编写sql语句,mybatis官方提供逆向工程 可以针对单表自动生成mybatis执行所需要的代码(mapper.java,mapper.xml.po. ...

随机推荐

  1. 通过量产解决U盘写保护,无法格式化问题

    1.首先下载ChipGenius.地址:http://pan.baidu.com/s/1eQvf1zc 2.解压,双击ChipGenius_v4_00_0027_pre2. 3.能够检測到U盘的主控厂 ...

  2. stm32的ADC左右对齐

  3. IQMath是什么 浮点转定点运算,dsp

    [转帖注明出处:blog.csdn.net/lanmanck] 网上搜了一下没发现非常合适的,特写出来与大家分享. 大家都知道嵌入式系统里带浮点运算指令的CPU都比較少,TI的DSP也是定点的廉价. ...

  4. OpenGL_ES-纹理

    OpenGL_ES2.0 -纹理 一:纹理基础: 1: 纹素的概念: 一个二维纹理在OpenGLES2.0中是非经常见的,二维纹理就是一个二维数组,每一个数据元素称为纹素,详细格式例如以下: GL_R ...

  5. 高并发解决方案--负载均衡(HTTP,DNS,反向代理服务器)(解决大流量,高并发)

    高并发解决方案--负载均衡(HTTP,DNS,反向代理服务器)(解决大流量,高并发) 一.总结 1.什么是负载均衡:当一台服务器的性能达到极限时,我们可以使用服务器集群来提高网站的整体性能.那么,在服 ...

  6. 用strace排查故障的5种简单方法(每日一译)

    原文链接:5 simple ways to troubleshoot using Strace 我很意外大部分人都不知道如何使用strace.strace一直是我的首选debug工具,因为它非常的有效 ...

  7. [Vue] Build Vue.js Apps with the Vue-CLI and Nuxt.js

    The vue-cli allows you to easily start up Vue projects from the command line while Nuxt.js enables a ...

  8. Android 输入框弹出样式

    在androidMainfest.xml文件里 在Activity中设置 [A]stateUnspecified:软键盘的状态并没有指定,系统将选择一个合适的状态或依赖于主题的设置 [B]stateU ...

  9. mysql zip文件安装

    bin目录下执行mysqld -install再执行mysqld --initialize-insecure 启动服务:net start mysql

  10. ets学习

    http://diaocow.iteye.com/blog/1768647 http://www.cnblogs.com/me-sa/archive/2011/08/11/erlang0007.htm ...