尽量使用代码生成器来生成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
- 生成之后拷贝到项目中,然后删除生成路径上的代码,否则下次生成会直接在mapper.xml后面追加,导致文件错误,项目运行不了
- 使用creatira的like时,要自己传入两个百分号
example.createCriteria().andNameLike("%"+findContent+"%");
配置的gui工具
https://github.com/astarring/mybatis-generator-gui
https://github.com/zhongxintech/generator-web
分页
- 如果没有用代码生成器,就用这个:https://github.com/pagehelper/Mybatis-PageHelper
- 如果用了代码生成器,则继承生成器里的PluginAdapter,让自动生成分页代码:MyBatis Generator实现MySQL分页插件
将自己写的类配置到generatorConfig.xml的context标签下的plugin中即可.
插入时自动给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
网友评论