《ibatis sql map api》
SQL Map API提供4个功能:配置一个SQL Map,执行SQL update操作,执行查询语句以取得一个对象,以及执行查询语句取得一个对象的List
SqlMapClient根据di调用sql
Map Statements 定义一个sql语句
*<![CDATA[ ]]> 中可以包含XML中本不合法的sql特殊符号
parameter-class 参数类名(比如在插入一个对象数据时使用)
parameter-map 很少使用(责任将javaBean属性映射成Map Statements参数)
*inline parameter 通常使用(设置为true后可以#id:NUMERIC:-9999使用内嵌参数映射)
基本类型输入参数 直接使用包装类(Integer)
Map类型输入参数 map_KEY为sql中的#id# map_val为sql参数具体值
*result-map 极其重要的组件,在执行查询Mapped Statement时result-map负责将结果集的列值映射成javaBean的属性值
1、可继承
2、属性的映射按它们在result-map中定义的顺序进行
3、Property type属性按字段的数据库数据类型
4、Property null指定数据库中NULL的替代值
5、Property mapped-statement描述对象之间的关系,并自动装入复杂类型
6、Property lazy-load使用mapped-statement装入复杂类型属性的集合时启动/停用lazy loading
7、隐式Result Map
通过设定result-class属性来隐式指定Result Map
要保证返回的ResultSet的字段名称(或标签或别名)和javaBean中可写入属性名称匹配
缺点是无法指定字段的数据类型
对大小写不敏感
对性能有轻微不理影响,因为读取ResultSetMetaData信息会使某些JDBC Driver变慢
支持包装类
Map类型Result
*复杂类型属性 用以表示在数据库中相互关系为一对一 一对多的数据
对于一对多的数据关系,拥有复杂类型属性的类作为“多”的一方,而复杂属性本身为“一”的一方
细读2.5.5的代码例子
*复杂类型集合属性 用以表示在数据库中相互关系为多对多 一对多的数据
细读2.5.6的代码例子
cache-model缓存Mapped Statement Result
动态Mapped Statement 在配置中根据if判断动态生成不同的sql
条件元素 一元<isNotNull>/二元<isEqual>/其他<isParameterPresent>检查是否存在参数对象
批处理 sqlMap.startBatch()/sqlMap.endBatch()