javaweb课件-第十九章mybatis高级应用_第1页
javaweb课件-第十九章mybatis高级应用_第2页
javaweb课件-第十九章mybatis高级应用_第3页
javaweb课件-第十九章mybatis高级应用_第4页
javaweb课件-第十九章mybatis高级应用_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本章目标Mybatis的结构与原理Mybatis配置文件详解SQL

文件详解Mybatis范围与生命周期2MyBatis配置文件3配置文件的元素properties该元素是外部化的、可替代的属性,这些属性也可以配置在典型的Java属性配置文件中,或者通过properties元素的子元素来传递。例如:<properties

resource="

/mybatis/example/perties"><property

name="username"

value="dev_user"/><property

name="password"

value="F2Fa3!33TYyg"/></properties>其中的属性值就可以在整个配置文件中使用,使用可替换的属性来实现动态配置。例如:<dataSource

type="POOLED"><property

name="driver"

value="${driver}"/><property

name="url"

value="${url}"/><property

name="username"

value="${username}"/><property

name="password"

value="${password}"/></dataSource>4Settings该元素是极其重要的参数设置,它们会修改MyBatis在运行时的行为方式。<settings><setting

name="cacheEnabled"

value="true"/><setting

name="lazyLoadingEnabled"

value="true"/><setting

name="multipleResultSe abled"

value="true"/><setting

name="useColumnLabel"

value="true"/><setting

name="useGeneratedKeys"

value="false"/><setting

name="enhancementEnabled"

value="false"/><setting

name="defaultExecutorType"

value="SIMPLE"/><setting

name="defaultStatementTimeout"

value="25000"/></settings>5typeAliases类型别名即为Java类型命名一个短的名称。它仅同XML配置有关,只用于减少类完全限定名的多余部分。.blog.Author"/>.blog.Blog"/>.blog.Post"/>.blog.Section"/>.blog.Tag"/><typeAliases><typeAlias

alias="Author"

type="<typeAlias

alias="Blog"

type="<typeAlias

alias="Commenttype="

ment"/><typeAlias

alias="Post"

type="<typeAlias

alias="Section"

type="<typeAlias

alias="Tag"

type="</typeAliases>6typeHandlers无论是MyBatis在预处理语句中设置一个参数,还是从结果//

ExampleTypeHandler.javapublic

classExampleTypeHandlerimplements

TypeHandler{public

voidsetParameter(PreparedStatement

ps,

int

i,

Objectparameter,JdbcType

jdbcType)

throws

SQLException

{ps.setString(i,

(String)

parameter);}public

Object

getResult(ResultSet

rs,

String

columnName)throws

SQLException

{return

rs.getString(columnName);}public

Object

getResult(CallableStatement

cs,

int

columnIndex)throws

SQLException

{return

cs.getString(columnIndex);}}7environments应用于多种数据MyBatis可以配置多种环境。这便于将SQL库之中;<environments

default="development"><environment

id="development"><transactionManager

type="JDBC"><property

name="..."value="..."/></transactionManager><dataSource

type="POOLED"><property

name="driver"

value="${driver}"/><property

name="url"

value="${url}"/><property

name="username"value="${username}"/><property

name="password"

value="${password}"/></dataSource></environment></environments>8transactionManager

在MyBatis中,有两种事务管理器类型(即type=”[JDBC|MANAGED]”)(1)JDBC:该配置直接简单地使用了JDBC的提交和回滚设置。它依赖于从数据源得到的连接来管理事务范围。(2)MANAGED:该配置几乎无用。它从来不提交或回滚接,且它会让容器来管理事务的整个生命周期(如Spring或JEE应用服务器的上下文)。默认情况下,它会关闭连接。然而一些容器并不希望这样,因此,如果需要从连接中停止它,则需要将closeConnection属性设置为false。9dataSourcedataSource元素使用基本的JDBC数据源接口来配置JDBC连接对象的资源;内建数据源类型(即type=”???”)有以下三种:(1)UNPOOLED(2)POOLED(3)JNDI10mappers既然MyBatis的行为已经由上述元素配置完毕,那么语句。这些语句简单阐述了MyBatis要文件,其余的细节便在每个SQL 文件现在要定义SQL从哪里寻找中;/mybatis/builder/AuthorMapper.xml"/><mappers><mapperresource="<mapperresource="/mybatis/builder/BlogMapper.xml"/><mapper

resource="

/mybatis/builder/PostMapper.xml"/></mappers>11SQL

的XML文件

SQL 文件包括以下几个很少的顶级元素(按照它们应该被定义的顺序排序):cache:配置给定命名空间的缓存。cache-ref:从其

名空间

缓存配置。resultMap:最复杂,也是最有力量的元素,用于描述如何从数据库结果集中加载对象。sql:可重用的SQL块,也可以被其他语句

。insert:update:delete:select:语句。更新语句。删除语句。查询语句。12select

查询语句是使用MyBatis时最常用的元一。当从数据库中取出数据时,会发现将数据在数据库中是很有价值的,所以许多应用程序的查询操作相较更改数据操作更多。<select

id=”select ”

parameterType=”int”resultType=”hashmap”>SELECT

*

FROM WHERE

ID

=#{id}</select>该语句被称为select ,使用一个int(或Integer)类型的参数,并返回一个HashMap类型的对象,其中的键是列名,值是列对应的值13Select中的属性属性描述id在命名空间中唯一的标识符,可以被用于 该语句。parameterType将会传入该语句的参数类的完全限定名或别名。resultType从该语句中返回的期望类型的类的完全限定名或别名。resultMap命名

外部的resultMap。flushCache将其设置为true,无论语句什么时候被调用,都会导致缓存被清空。默认值为false。useCache将其设置为true,将会导致本条语句的结果被缓存。默认值为true。timeout该设置驱动程序等待数据库返回请求结果。fetchSize暗示驱动程序每次批量返回的结果行数。默认不设置(驱动自行处理)statementTypeSTATEMENT、PREPARED或CALLABLE的一种。resultSetTypeFORWARD_ONLY|SCROLL_SENSITIVE|SCROLL_INSENSITIVE

中的一种。默认不设置(驱动自行处理)。14insert、update和delete

数据修改语句insert、update和delete在它们的实现中非常相似;<inserti<deleteid="insertAuthor"parameterType="

.blog.Author"flushCache="true"statementType="PREPARED"timeout="20000">where

id

=

#{id}</update><delete

id="deleteAuthor”

parameterType="int">deletefrom

Author

where

id

=

#{id}</delete>15insert、update和delete的属性属性描述id在命名空间中唯一的标识符,可以被用于 该语句。parameterType将会传入该语句的参数类的完全限定名或别名。flushCache将其设置为true,无论语句什么时候被调用,都会导致缓存被清空。默认值为false。timeout该设置驱动程序等待数据库返回请求结果,并抛出异常时间的最大等待值。默认不设置(驱动自行处理)。statementTypeSTATEMENT、PREPARED或CALLABLE的一种。用于方便MyBatis选择使用Statement、PreparedStatement或CallableStatement。默认值为PREPARED。useGeneratedKeys(仅对insert有用)通知MyBatis使用JDBC的getGeneratedKeys方法来取出由数据(如MySQL和SQLServer的数据库管理系统的自动递增字段)生成的主键。默认值为false。keyProperty(仅对insert有用)标记一个属性,MyBatis会通过getGeneratedKeys或insert语句的selectKey子元素设置其值。默认不设置。16sql该元素可以被用于定义可重用的SQL代码段,可以包含在其他语句中。如:<sql

id=”userColumns”>

id,username,password

</sql>上述SQL片段可以被包含在其他语句中。如:<select

id=”selectUsers”

parameterType=”int”resultType=”hashmap”>select

<include

refid=”userColumns”/>from

some_tablewhere

id

=

#{id}</select>17resultMapresultMap元素是MyBatis中最重要、最强大的元素。解决列名与属性名称不匹配的问题:<resultMap

id="userResultMap"

type="User"><id

property="id"

column="user_id"

/><result

property="username"

column="user_name"/><result

property="password"

column="hashed_password"/></resultMap>其 语句使用resultMap属性即可(注意, 去掉了resultType属性)。例如:<select

id=”selectU

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论