Mybatis-select

select

查询语句是使用 MyBatis 时最常用的元素之一。 直到你从数据库取出数据时才会发现将 数据存在数据库中是多么的有价值,所以许多应用程序查询要比更改数据多的多。 对于每次 插入,更新或删除,那也会有很多的查询。这是 MyBatis 的一个基本原则,也是将重心和努 力放到查询和结果映射的原因。对简单类别的查询元素是非常简单的。比如:       

<select id="selectPerson" parameterType="int" resultType="hashmap">
  SELECT * FROM PERSON WHERE ID = #{id}
</select>

这个语句被称作 selectPerson,使用一个 int (或 Integer)类型的参数,并返回一个 HashMap类型的对象,其中的键是列名,值是列对应的值。       

注意参数注释:       

#{id}

这就告诉 MyBatis 创建一个预处理语句参数。 使用 JDBC,这样的一个参数在 SQL 中会 由一个“?”来标识,并被传递到一个新的预处理语句中,就像这样:       

// Similar JDBC code, NOT MyBatis…
String selectPerson = "SELECT * FROM PERSON WHERE ID=?";
PreparedStatement ps = conn.prepareStatement(selectPerson);
ps.setInt(1,id);

当然,这需要很多单独的 JDBC 的代码来提取结果并将它们映射到对象实例中,这就是MyBatis 节省你时间的地方。我们需要深入了解参数和结果映射。那些细节部分我们下面来 了解。       

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">
Select Attributes
属性描述
id在命名空间中唯一的标识符,可以被用来引用这条语句。             
parameterType将会传入这条语句的参数类的完全限定名或别名。             
parameterMap这是引用外部 parameterMap 的已经被废弃的方法。使用内联参数 映射和 parameterType 属性。               
resultType从这条语句中返回的期望类型的类的完全限定名或别名。注意集 合情形,那应该是集合可以包含的类型,而不能是集合本身。使 用 resultType 或 resultMap,但不能同时使用。             
resultMap命名引用外部的 resultMap。 返回 map 是 MyBatis 最具力量的特性,对其有一个很好的理解的话,许多复杂映射的情形就能被解决了。 使用 resultMap 或 resultType,但不能同时使用。             
flushCache将其设置为 true,不论语句什么时候被带哦用,都会导致缓存被 清空。默认值:false。             
useCache将其设置为 true,将会导致本条语句的结果被缓存。 默认值:true。             
timeout这个设置驱动程序等待数据库返回请求结果,并抛出异常时间的 最大等待值。默认不设置(驱动自行处理)             
fetchSize这是暗示驱动程序每次批量返回的结果行数。默认不设置(驱动 自行处理)。             
statementTypeSTA TEMENT,PREPARED 或 CALLABLE 的一种。 这会让 MyBatis使用选择使用 Statement,PreparedStatement 或 CallableStatement。 默认值:PREPARED。             
resultSetTypeFORWARD_ONLY|SCROLL_SENSITIVE|SCROLL_INSENSITIVE中的一种。默认是不设置(驱动自行处理)。             
databaseIdIn case there is a configured databaseIdProvider, MyBatis will load all statements with no databaseId               attribute or with a databaseId that matches the current one. If case the same statement              if found with and without the databaseId the latter will be discarded.             
resultOrderedThis is only applicable for nested result select statements: If this is true, it                is assumed that nested results are contained or grouped together such that when a                new main result row is returned, no references to a previous result row will occur                anymore. This allows nested results to be filled much more memory friendly. Default:                false.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值