MyBatis 中的 select 用法

使用过 MyBatis 开发过应用程序你,应该都使用过 select 元素吧,select 元素是我们最常用也是功能最强大的 SQL 语句。在使用原生 JDBC 时,需要我们手写查询语句,并且对结果集进行手动处理,将结果映射到对象的属性中。而我们在使用 MyBatis 框架时,只需要在 XML 中添加一个 select 元素和写一条 SQL 语句,同时还需做一些简单配置,就可以将查询的结果直接映射到对象中。在执行 select 语句之前,还需要定义参数,这些参数可以是简单的参数类型,也可是是复杂的参数类型。


select 属性

select 的属性相对比较多,不过也不用全部背下,忘记的时候,可以到 MyBatis 官网查看。

属性 描述
id 它和 Mapper 的命名空间组合起来是唯一的标识符,可以被用来引用这条语句。如果命名空间和 id 组合起来不唯一,MyBatis 将抛出异常。
parameterType 将会传入这条语句的参数的类全限定名或者类的别名,但是使用别名必须是 MyBatis 内部定义或者自定义的。这个属性是可选的,因为 MyBatis 可以通过类型处理器(TypeHandler)推断出具体传入语句的参数,默认值为未设置。可以选择 JavaBean、Map 等复杂的参数类型传递给 SQL。
parameterMap 用于引用外部 parameterMap 的属性,目前已被废弃。请使用行内参数映射和 parameterType 属性。
resultType 期望从这条语句中返回结果的类全限定名或别名。 注意,如果返回的是集合,那应该设置为集合包含的类型,而不是集合本身的类型。 resultType 和 resultMap 之间只能同时使用一个。
resultMap 对外部 resultMap 的命名引用。结果映射是 MyBatis 最强大的特性,如果你对其理解透彻,许多复杂的映射问题都能迎刃而解,resultMap 可以给予我们自定义映射规则、级联、typeHandler 等。 resultType 和 resultMap 之间只能同时使用一个。
flushCache 是否清空调用 SQL 后的本地缓存和二级缓存,默认值:false。
useCache 开启二级缓存的开关,默认值: true。
timeout 设置超时参数,这个设置是在抛出异常之前,驱动程序等待数据库返回请求结果的时长,单位为秒。默认值为未设置(依赖数据库驱动)。
fetchSize 设定获取记录的总数条。这是一个给驱动的建议值,尝试让驱动程序每次批量返回的结果行数等于这个设置值。 默认值为未设置(依赖驱动)。
statementType 告诉 MyBatis 使用哪个 JDBC 的 Statement 工作。可选 STATEMENT,PREPARED 或 CALLABLE。这会让 MyBatis 分别使用 Statement,PreparedStatement 或 CallableStatement,默认值:PREPARED。
resultSetType 这个是对 JDBC 的 result 接口而言,它的值包括 FORWARD_ONLY(游标允许向前访问),SCROLL_SENSITIVE(双向滚动,但不及时更新,就是如果数据库里的数据修改过,并不在 resultSet 中反映出来),, SCROLL_INSENSITIVE(双向滚动,并及时跟踪数据库的更新,以便更改 resultSet 中的数据) 或 DEFAULT(等价于 unset) 中的一个,默认值为 unset (依赖数据库驱动),默认值是数据库厂商提供的 JDBC 驱动所设置的。
databaseId 如果配置了数据库厂商标识(databaseIdProvider),MyBatis 会加载所有不带 databaseId 或匹配当前 databaseId 的语句;如果带和不带的语句都有,则不带的会被忽略。
resultOrdered 这个设置仅针对嵌套结果 select 语句:如果为 true,将会假设包含了嵌套结果集或者是分组,当返回一个主结果行时,就不会产生对前面结果集的引用。 这就确保了在获取嵌套结果集的时候不至于内存不够用。布尔值,默认值:false。
resultSets 这个设置仅适用于多结果集的情况。它将列出语句执行后返回的结果集并赋予每个结果集一个名称,多个名称之间以逗号分隔。很少使用。

你可能感兴趣的:(MyBatis,专栏,java,MyBatis)