如Mybatis 入门示例,我们直接传递简单参数,可以在xml中直接使用。多个参数也可以同样传递。如果要传递复杂参数,我们需要适应select标签的parameterType属性。
传递JavaBean对象参数传递map对象参数parameterType指定参数对象,这里就是Emp对象。
mybatis-config.xml中配置别名这里的parameterType我们只用了map来表示,其实其就是java.util.Map。那么我们上面的Emp对象可以这样表示吗?答案当然可以,但是需要我们在mybatis-config.xml中做些配置。
注意我们添加的typeAliases标签,这里我们别名了一个包,就是Emp对应所在的包。这样我们就可以直接使用emp来作为com.yyoo.mybatis.beans.Emp的替代了。(注意:emp是对应JavaBean的首字母小写名称,这是Mybatis约定的,如果想要改变一个名称请使用@Alias注解在对应的JavaBean来修改,建议是不做修改)
// 将别名定义为myEmp @Alias("myEmp") public class Emp直接别名对应的JavaBean
定义好别名后,我们的xml中用到Emp对象的配置简化如下
查询结果
select标签中结果映射主要使用如下两个属性resultType或resultMap
select * from emp where empno = #{empno}
查询结果会自动映射到Emp对象上
我们前面的Mapper接口的返回值都是Emp对象,但是查询来说,如果不是通过id(主键)查询,一般情况下我们的接口方法都应该是一个集合对象。所以我们的Mapper接口的定义应该如下:
Emp selectEmpByNo(@Param("empno") Long id); ListselectEmp(Emp emp); List selectEmpByMap(Map map);
使用resultType映射规则目前我们的查询是把所有满足条件的数据全部查询出来,当结果数据量特别大的时候这也是个问题,需要进行分页查询,所以此处还不满足我们实际项目中的查询的要求,关于分页,我们将在后续讲解。
- MyBatis 会在幕后自动创建一个 ResultMap,再根据属性名来映射列到 JavaBean 的属性上。
- 数据库字段我们一般是下划线隔开的命名,如:user_name,那么自动映射到JavaBean上的字段名称一般为userName。(如果数据库字段名称和JavaBean字段名称不对应,我们可以在select查询语句中使用sql别名的方式将之对应起来)如下:
select name as userName from emp where empno = #{empno}
综上,我们一般情况下直接使用JavaBean进行自动映射即可,但实际项目中往往比较复杂,JavaBean自动映射,在处理复杂映射关系是还是不够灵活,所以我们还是需要自定义ResultMap来实现。关于ResultMap,我们在下一篇讲解。
上一篇:Mybatis XML映射文件
下一篇:待续
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)