JavaJ2EEmybatis

mybatis Generator最佳实践(数据库:mysql)

2017-06-23  本文已影响2760人  石野小真人

Mybatis Generator最完整配置详解

尽量使用代码生成器来生成mapper代码,能不手写绝不手写.

官网: http://www.mybatis.org/generator/

代码生成器配置

        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.5</version>
        </dependency>

代码路径:MyBatisGen.java
配置文件路径:generatorConfig.xml

example.createCriteria().andNameLike("%"+findContent+"%");

配置的gui工具

https://github.com/astarring/mybatis-generator-gui

https://github.com/zhongxintech/generator-web

分页

插入时自动给id赋值:

默认情况下是没有赋值的.
注意,identity默认为false,此时生成的sql的order为BEFORE.而我们需要的是插入后查询id并给bean赋值,所以需要的是AFTER,所以identity为true.

//generatorConfig.xml里的配置:
<table schema="" tableName="expert">
    <generatedKey column="id" sqlStatement="SELECT LAST_INSERT_ID()" identity="true"/><!--插入时自动生成selectkey,identity为true时,为after-->
</table>

//生成的mapper.xml:
<insert id="insert" parameterType="com.sojson.experts.po.Expert">
    <selectKey keyProperty="id" order="BEFORE" resultType="java.lang.Integer">
      SELECT LAST_INSERT_ID()
    </selectKey>
    insert into expert (Id, name, shortname, 
...

分页时,获取某一查询条件下的总数

默认就有,countbyexample

让生成的sql的字段用反引号括起来,以避免与mysql保留字段冲突:

先在context标签下加上反引号的定义:
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>

然后在table标签的属性里开启delimitAllColumns:

<table schema="" tableName="qxinli_activity_card" delimitAllColumns="true">

text类型 -避免生成blob类型

在table标签内:
<columnOverride column="address" javaType="java.lang.String" jdbcType="VARCHAR" />  

批量插入

参考:mybatis generator一对一映射,一对多映射,批量插入,批量更新
代码:generator插件
https://github.com/itfsw/mybatis-generator-plugin

其他插件库:

https://github.com/handosme/mybatis-generator-plus
https://github.com/search?utf8=%E2%9C%93&q=+mybatis+generator+plugins&type=Repositories

官方插件

http://www.mybatis.org/generator/reference/plugins.html

代码:

https://github.com/hss01248/mybatis-gen

上一篇下一篇

猜你喜欢

热点阅读