【Mybatis】XML映射文件

这篇博客详细介绍了MyBatis中XML映射文件的使用,包括select、insert、update、delete等元素的配置,以及parameters和resultMap的详细应用,强调了resultMap在映射结果集到JavaBean时的重要性。

目录

 11.3XML映射文件

        1.select

         2.insert、update、delete

        3.Sql 

        4.parameters(参数) 

        5.resultMap

        6.resultMap 使用示例 

        (1)在先前创建的数据库stu中创建表student 2,并插入若干条数据,代码如下:

        (2)创建工程mybatis_ResultMap_demo。 

        (3)创建实体对象映射数据库表。 

        (4)创建映射接口和映射文件。

        (5)测试。


 11.3XML映射文件

        

        xml和dtd 部分是必须填写且不需要配置的部分每次使用时,只需要将这部分复制到文件顶部即可。

        mapper 元素是整个映射文件的容器,所有的SQL映射都包含在这个元素中,mapper本身有一个参数namespace,即命名空间这个命名空间就是文件所对应的接口文件的Java类只有当这个命名空间被配置时,才可以直接通过访问Java接口的方法实现SOL调用。

        映射器是MyBatis最复杂且最重要的组件它由一个接口加上XML文件(或者注解)组成。在映射器中可以配置参数、SOL 语句、存储过程、缓存等内容,并且通过简易的映射规则映射到指定的POJO或者其他对象上,映射器能有效消除JDBC底层的代码。

        MyBatis的映射器也可以使用注解完成,但可读性较差,企业中应用不广,官方亦不推荐使用。

        1.select

        

查询语句是 MyBatis 中最常用的元素之一,多数应用也都是查询比修改要频繁。对每个插入、更新或删除操作,通常对应多个查询操作。这是 MyBatis 的基本原则之一,也是将焦点和精力放到查询和结果映射的原因。对简单类别的查询元素是非常简单的。例如:

<select id="selectPerson" parameterType="int" resultType="hashmap">

        SELECT *FROM PERSON WHERE ID=#{id}

</select>

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

        注意参数标识 #{id},其告诉 MyBatis创建一个PreparedStatement (预处理语)参数使用JDBC,这样的一个参数在SOL中会由一个“?”来标识,并被传递到一个新的预处理语句中,类似于以下的JDBC代码(不是MyBatis的代码):

String selectPerson ="SELECT* FROM PERSON WHEREID=?";

PreparedStatement ps = conn.prepareStatement(selectPerson); ps.setInt(1,id);

        当然,这需要很多单独的JDBC 的代码来提取结果并将它们映射到对象实例中,这就是MyBatis 节省时间的原因。我们需要深入了解参数和结果映射。select 元素有很多属性允许用户配置,以决定每条语句的作用细节。关于select元素主要属性的描述参见表11-2。

                                        表11-2select元素的主要属性描述

属性

描述

id

在命名空间中唯一的标识符,可以被用来引用这条语句

parameterType

将会传入这条语句的参数类的完全限定名或别名。这个属性是可选的,因为 MyBatis 可以通过TypeHandler 推断出具体传入语句的参数,默认值为unset

resultMap

外部resultMap的命名引用。结果集的映射是MyBatis 最强大的特性若能对其有一个很好地理解则许多复杂映射的情形都能迎刃而解。可以使用resultMap或resultType,但不能同时使用

flushCache

如果设置为true,则任何时候只要语句被调用,都会导致本地缓存和二级缓存被清空,默认值为false

useCache

如果设置为true,则将会导致本条语句的结果被二级缓存,select元素默认值为true

timeout

这个设置是在抛出异常之前,驱动程序等待数据库返回请求结果的秒数。默认值为unset(依赖驱动)

fetchSize

这是尝试影响驱动程序每次批量返回的结果行数和这个设置值相等。默认值为 unset(依赖驱动)

statementType

值为STATEMENT、PREPARED或CALLABLE之一。这会让MyBatis分别使用JDBC中的

Statement、PreparedStatement 或CallableStatement,默认值为PREPARED

resultSetType

值为FORWARDONLY、SCROLL SENSITIVE 或SCROLL INSENSITIVE 之一默认值为 umset(依赖驱动),是结果集的类型

databaseld

如果配置了databaseIdProvider,则MyBatis会加载所有的不带databaseId 或匹配当前databaseId语句;如果带或者不带databaseId的语句都有,则不带的会被忽略

         2.insert、update、delete

        数据操纵语句 insert、update 和 delete 在它们的实现中非常相似。

        

<insert Id=“insertAuthor” parameterType=“domain.blogAuthor” flushCache=“true” 

statementType=“PREPARED”keyProperty=“”keyColumn=“”useGeneratedKeys=“”

utimeout=“20”>

<update id=“updateAuthor” parameterType=“domain.blog.Author” flushCache=“true”

statementType=“PREPARED” timeout=“20”>

<delete id=“deleteAuthorr” parameterType=“domain.blog.Author” flushCache=“true”

statementType=“PREPARED” timeout=“20”>

         

        insert、update和delete元素的主要属性描述如表11-3所示

  

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

真题OK撒

你的打赏将是我最大的创作

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值