myBatis3之SQL映射的XML文件(select元素)
----------
select
对简单类别的查询元素是非常简单的。比如:
<select id="selectPerson" parameterType="int" resultType="hashmap"> SELECT * FROM PERSON WHERE ID = #{id} </select>
这个语句被称作selectPerson,使用一个int(或Integer)类型的参数,并返回一个HashMap类型的对象,其中的键是列名,值是列对应的值。 注意参数注释: #{id}. 这就告诉MyBatis创建一个预处理语句参数。使用JDBC,这样的一个参数在SQL中会由一个"?"来标识,并被传递到一个新的预处理语句中,就像这样:
String selectPerson = "SELECT * FROM PERSON WHERE ID=?";
PreparedStatement ps = conn.prepareStatement(selectPerson);
ps.setInt(1,id);
select元素有很多属性允许你配置,来决定每条语句的作用细节。
<select id=”selectPerson” parameterType=”int” parameterMap=”deprecated” resultType=”hashmap” resultMap=”personResultMap” flushCache=”false” useCache=”true” timeout=”10000” fetchSize=”256” statementType=”PREPARED” resultSetType=”FORWARD_ONLY”>
属性 | 描述 | ||||
id | 在命名空间中唯一的标识符,可以被用来引用这条语句。 | ||||
parameterType | 将会传入这条语句的参数类的完全限定名或别名。 | ||||
resultType | 从这条语句中返回的期望类型的类的完全限定名或别名。注意集合情形,那应该是集合 可以包含的类型,而不能是集合本身。使用 resultType或 resultMap,但不能同时使用。 | ||||
resultMap | 命名引用外部的resultMap。返回map是MyBat is 最具力量的特性,对其有一个很好的理解的话, 许多复杂映射的情形就能被解决了。使用 resultMap 或 resultType,但不能同时使用。 | ||||
flushCache | 将其设置为 true,不论语句什么时候被调用,都会导致缓存被清空。默认值:false。 | ||||
useCache | 将其设置为 true,将会导致本条语句的结果被缓存。默认值:true。 | ||||
timeout | 这个设置驱动程序等待数据库返回请求结果,并抛出异常时间的最大等待值。默认不设置(驱动自行处理) | ||||
fetchSize | 这是暗示驱动程序每次批量返回的结果行数。默认不设置(驱动自行处理) | ||||
statementType | STATEMENT,PREPARED 或 CALLABLE 的一种。这会让 MyBat is使用选择使用Statement, PreparedStatement或 CallableStatement。默认值:PREPARED。 | ||||
resultSetType | FORWARD_ONLY|SCROLL_SENSITIVE|SCROLL_INSENSITIVE中的一种。默认是不设置(驱动自行处理) | ||||