之前已经讲到通过 mybatis-generator 生成mapper映射接口和相关的映射配置文件:

下面我们将详细的讲解具体内容
首先我们新建映射接口文档 sysUserExtMapper.java,同时新增相关配置文件sysUserExtMapper.xml。通过操作这两个类我们来讲解具体内容。
MyBatis提供了多种元素来配置不同类型的语句,如SELECT,INSERT,UPDATE,DELETE。接下来让我们看看如何具体配置映射语句。
一个INSERT SQL语句可以在<insert>元素在sysUserExtMapper.xml中配置,如下所示:
View Code
同时在 sysUserExtMapper.java接口中添加相应的方法
增加相对应单元测试查看相关效果
执行效果
【自动生成主键】
在上述的INSERT语句中,我们为可以自动生成(auto-generated)主键的列 id 插入值。
我们可以使用useGeneratedKeys 和 keyProperty属性让数据库生成AUTO_INCREMENT列的值,并将生成的值设置到其中一个输入对象属性内,如下所示:
有些数据库如Oracle并不支持 AUTO_INCREMENT 列,其使用序列(SEQUENCE),或者其他查询(uuid)来生成主键值,如下所示:
一个UPDATE SQL语句可以在<update>元素在映射器XML配置文件中配置,如下所示:
同时在映射器接口中添加相应的方法
测试效果
一个DELETE SQL语句可以在<delete>元素在映射器XML配置文件中配置,如下所示:
一个SELECT SQL语句可以在<select>元素在映射器XML配置文件中配置,如下所示:
在<select>语句中,我们使用了resultMap属性,而不是resultType来引用映射。
当<select>语句中配置了resutlMap属性,MyBatis会使用此数据库列名与对象属性映射关系来填充JavaBean中的属性。
让我们来看另外一个<select>映射语句定义的例子,怎样将查询结果填充到HashMap中。如下所示:
在上述的<select>语句中,我们将resultType配置成map,即java.util.HashMap的别名。在这种情况下,结果集的列名将会作为Map中的key值,而列值将作为Map的value值。
映射器接口中添加相应的方法
让我们再看一个 使用resultType=”map”,返回多行结果的例子:
首先我们要在 sys_User中增加 sys_user_info对象。下面同理
我们可以从从另外一个<resultMap>,拓展出一个新的<resultMap>,这样,原先的属性映射可以继承过来,以实现。
扩展方法来使用它
在我们的域模型样例中,每一个用户都有一个与之关联的用户扩展信息。表sys_user有一个id列,是sys_user_info表的外键。我们定义一个resultMap中,sys_user_info的属性使用了圆点记法被赋上了对应列的值。
上述样例展示了一对一关联映射的一种方法。然而,使用这种方式映射,如果sysuserinfo结果需要在其他的SELECT映射语句中映射成Address对象,我们需要为每一个语句重复这种映射关系。MyBatis提供了更好地实现一对一关联映射的方法:嵌套结果ResultMap和嵌套select查询语句。
嵌套结果ResultMap
相对应的扩展方法来使用它
元素<association>被用来导入“有一个”(has-one)类型的关联。在上述的例子中,我们使用了<association>元素引用了另外的在同一个XML文件中定义的<resultMap>。也可以使用<association>定义内联的resultMap。
嵌套select查询语句
我们创建一张机构表一个机构包含多个用户。在sys_org中增加sys_user对象。
级联查询的时候,主表和从表有一样的字段名的时候,在mysql上命令查询是没问题的。但在mybatis中主从表需要为相同字段名设置别名。
<collection>元素被用来将多行结果映射成一个对象的一个集合。