版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本章目标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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 欧亚共同体课程设计
- 自动驾驶技术应用总结
- 体育娱乐行业人力资源总结
- 新媒体行业技术工作概览
- 音响行业演出场地卫生消毒方案
- 食品安全销售总结
- 非公开发行股票认购协议三篇
- 2024年税务师题库(轻巧夺冠)
- 2024年美术教案7篇合集
- 2024年福建开放大学《网络测试与故障维修》形成性考核参考试题库(含答案)
- 中建安全标准化图册图集(上下全集)(全电子版)
- 高一物理必修一思维导图
- 锚索张拉和锁定记录表
- 2016年校本课程--------合唱教案1
- 【原创】《圆柱与圆锥》复习课教教学设计
- 《中国药典》规定中药饮片用量
- 国网合肥供电公司城市新建住宅小区电力建设实施细则
- 初中物理元件实物图及一些常用图形
- 中小学生备战期末迎接期末考试动员班会PPT
- 房测之友BMF用户说明书
- 国自然模板(空白版)
评论
0/150
提交评论