select元素
自动映射
前提:SQL列名和JavaBean的属性是一致的;
自动映射等级autoMappingBehavior设置为PARTIAL,需要谨慎使用FULL;
使用resultType;
如果列名和JavaBean不一致,但列名符合单词下划线分割,Java是驼峰命名法,
则mapUnderscoreToCamelCase可设置为true;
传递多个查询入参
使用map传递参数;可读性差,导致可维护性和可扩展性差,杜绝使用;
使用注解传递参数;直观明了,当参数较少一般小于5个的时候,建议使用;
接口定义方式:List<TUser> selectByEmailAndSex2(@Param("email")String email,@Param("sex")Byte sex);
使用Java Bean的方式传递参数;当参数大于5个的时候,建议使用;
resultMap元素 属性
resultMap 元素是 MyBatis 中最重要最强大的元素。它可以让你从 90% 的 JDBC ResultSets 数据提取代码中解放出
来,在对复杂语句进行联合映射的时候,它很可能可以代替数千行的同等功能的代码。
ResultMap 的设计思想是,简单的语句不需要明确的结果映射,而复杂一点的语句只需要描述它们的关系就行了。
resultMap元素 子元素
id & result
id 和 result 都将一个列的值映射到一个简单数据类型(字符串,整型,双精度浮点数,日期等)的属性或字段
两者之间的唯一不同是, id 表示的结果将是对象的标识属性,这会在比较对象实例时用到。 这样可以
提高整体的性能,尤其是缓存和嵌套结果映射(也就是联合映射)的时候
constructor
一个pojo不存在没有参数的构造方法,就需要使用constructor;
为了通过名称来引用构造方法参数,你可以添加 @Param 注解,指定参数名称的前提下,以任意顺序编写
arg 元素
<constructor>
<idArg column="id" javaType="int" />
<arg column="user_name" javaType="String" />
</constructor>