目录
(1)在先前创建的数据库stu中创建表student 2,并插入若干条数据,代码如下:
(2)创建工程mybatis_ResultMap_demo。
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所示

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

被折叠的 条评论
为什么被折叠?



