天天看点

MyBatis 3.3.1 版本新功能示例 MyBatis 3.3.1版本新功能示例

mybatis3.3.1更新日志: 

https://github.com/mybatis/mybatis-3/issues?q=milestone%3a3.3.1

这里不对更新做翻译或者其他详细介绍。 

这个更新除了一些bug修复,还有两个新增的功能:

增加了对批量插入回写自增主键的功能

增加了注解引用<code>@results</code>的功能

下面通过简单例子来介绍这两个功能,为了例子的简洁,这里都使用注解实现的,没有用xml,批量插入的例子很容易就能变成xml形式的,大家自己尝试。

city表:

city对象:

这里详细说一下这两个新功能的用法。

首先接口参数只能有一个(默认情况下),如果你参数有多个,那么要返回主键的那个<code>list</code>必须加注解<code>@param("list")</code>或者在参数<code>map</code>中对应的<code>key</code>为<code>"list"</code>。这一点很重要,只有看源码才能了解(当然除了<code>"list"</code>还有另外的名字,例如支持数组的<code>"array"</code>),参考<code>jdbc3keygenerator</code>类中的这段代码:

然后就是必须使用<code>usegeneratedkeys</code>的方式,注解使用下面的方式:

xml使用类似下面的方式:

只要注意上面这几点,批量插入应该就能返回自增的值了。

注意:大家应该能理解,自增的不一定是主键,而且一个表中可能有多个自增的值。这些情况下都能获取到,<code>keyproperty</code>需要设置多个属性值,逗号隔开即可。

</h2>

(此功能是否为新增功能,我并不确定,因为我平时不用注解)

用mybatis的人中,使用注解的是少数,但是有些企业由于领导或者别的原因,会限制必须用注解。

这对一些复杂的情况来说,使用起来不如xml的方便,但是不得不用。

以前如果返回一个对象的属性需要配置映射,那么每个对象上都需要这段重复的代码,看起来很乱很麻烦。

在上面的例子中,在<code>selectbycityid</code>上定义了<code>results</code>,在下面的方法<code>selectall</code>上通过<code>@resultmap("cityresult")</code>直接引用的上面的<code>results</code>。这个功能在使用的时候没有特别注意的地方。

写个简单的测试,代码如下:

第一个测试方法输出的部分日志如下:

后两个方法输出的部分日志如下:

注:由于批量插入事务并没有提交,因此这里查询出来的结果就是表中原有的两条数据。

为了方便尝试上面的代码,可以直接查看下面项目的<code>src/test</code>:

mybatis-spring-boot: https://github.com/abel533/mybatis-spring-boot

另外mybatis-spring项目也同时更新到了<code>1.2.4</code>,这个版本对于使用springboot的开发人员非常有用,这个版本解决了mybatis的循环依赖异常,如果你在使用springboot,赶紧升级到最新的版本试试吧。