关于Mybatis里的mapper映射文件namespace属性及其他属性的知识总结

本文介绍了MyBatis中关键的XML配置标签,包括namespace、resultmap、select、insert、delete、update等,并详细解释了它们的作用及用法。通过本文,读者可以了解如何利用这些标签来实现数据库操作。

在使用mybatis时,我们需要先编写mapper.xml文件,由于对各个标签记忆不太深刻,在这里我做一个简单的总结。

namespace标签

Mapper中的namespace用于绑定Dao接口的,即面向接口编程,它的功能和Dao接口的实现类Impl相当,但是他不用写接口实现类,通过namesapce(命名空间)的绑定直接找到相应方法,执行相应的SQL语句。

resultmap标签

resultType 可以指定 pojo 将查询结果映射为 pojo,但需要 pojo 的属性名和 sql 查询的列
名一致方可映射成功。

如果 sql 查询字段名和 pojo 的属性名不一致,可以通过 resultMap 将字段名和属性名作
一个对应关系 ,resultMap 实质上还需要将查询结果映射到 pojo 对象中。
resultMap 可以实现将查询结果映射为复杂类型的 pojo,比如在查询结果映射对象中包
括 pojo 和 list 实现一对一查询和一对多查询。 

select insert delete update标签

处理对应的SQL语句

id

用来映射对应DAO中的方法名

parameterType(输入类型)

确定该方法输入的参数类型,除了基本数据类型外,还可以传递POJO对象、POJO包装对象以及hashmap。

resultType(输出类型)

确定该方法的返回类型,除了基本数据类型外,还可以输出POJO对象、POJO列表和hashmap

### MyBatis Mapper 映射文件详解 #### 1. XML 文件配置方法 MyBatis 支持通过 XML 文件来定义 SQL 映射语句。Mapper 文件通常位于项目的 `resources` 目录下,文件名一般与接口类同名并以 `.xml` 结尾。 ```xml <mapper namespace="com.example.mapper.UserMapper"> <!-- 定义一个名为 userResultMap 的 resultMap --> <resultMap id="userResultMap" type="com.example.model.User"> <id property="id" column="user_id"/> <result property="username" column="user_name"/> <result property="password" column="user_password"/> </resultMap> <!-- 查询单个用户的 SQL 语句 --> <select id="getUserById" parameterType="int" resultMap="userResultMap"> SELECT * FROM users WHERE user_id = #{userId} </select> </mapper> ``` 这段代码展示了如何创建一个名为 `userResultMap` 的结果映射,并将其用于查询操作中[^1]。 #### 2. Result Map 和 Result Type 在 MyBatis 中可以使用两种方式指定返回类型的映射:`<resultMap>` 和 `resultType` 属性。其中 `<resultMap>` 提供更灵活的方式处理复杂的字段映射关系;而 `resultType` 则适用于简单场景下的直接映射[^2]。 对于较为复杂的数据结构转换需求来说,推荐优先考虑采用 `<resultMap>` 来实现定制化的映射逻辑: ```xml <!-- 复杂关联表映射示例 --> <resultMap id="orderDetailResultMap" type="OrderDetail"> <association property="productInfo" javaType="Product"> <id property="productId" column="prod_id"/> ... </association> <collection property="items" ofType="Item"> <id property="itemId" column="item_id"/> ... </collection> </resultMap> ``` 这展示了一个订单详情 (`OrderDetail`) 对象与其子项列表之间的嵌套映射关系[^4]。 #### 3. 动态 SQL 构建 为了提高灵活性和支持更多业务逻辑变化,在实际开发过程中经常需要用到动态 SQL 特性。可以通过内置标签如 `<if>`, `<choose>`, `<when>`, `<otherwise>` 等构建条件判断式的 SQL 表达式。 例如下面的例子实现了基于不同参数组合生成不同的查询条件的功能: ```xml <select id="findUsersByConditions" parameterType="map" resultType="User"> SELECT * FROM users u <where> <if test="name != null and name != ''"> AND u.name LIKE CONCAT('%',#{name},'%') </if> <if test="age != null"> AND u.age >= #{age} </if> </where> </select> ``` 此片段说明了当传入特定名称或年龄范围作为筛选条件时,能够自动调整最终执行的 SQL 文本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

TDSSS

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值