MyBatis参数详解:parameterType与传参方式
需积分: 10 85 浏览量
更新于2024-09-09
1
收藏 55KB DOC 举报
"mybatis参数解说——讲解MyBatis传入参数与parameterType的使用细节"
在MyBatis框架中,`parameterType`属性是Mapper XML文件中`select`、`insert`、`update`和`delete`元素的一个关键属性,它用于指定与Mapper接口方法相对应的参数类型。这一属性允许我们传递不同类型的参数,包括基本数据类型和复杂对象类型。
1. 简单数据类型
当Mapper接口方法接收一个简单的Java数据类型,如`Integer`、`String`、`Boolean`等时,`parameterType`应该设置为相应的Java类名。例如,以下是一个查询单个用户信息的接口和XML配置:
```java
// Mapper接口
User selectByPrimaryKey(Integer id);
```
```xml
<!-- Mapper XML -->
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer">
select
<include refid="Base_Column_List" />
from base.tb_user
where id = #{id, jdbcType=INTEGER}
</select>
```
在这里,`#{id}`是占位符,用于插入实际传递的`id`值。需要注意的是,虽然可以使用任何名称替换`id`,但使用有意义的名称有助于代码的可读性。
2. 复杂数据类型
对于复杂的对象类型,`parameterType`应设置为对象的全限定类名。例如,如果我们有一个`User`类,我们可以这样做:
```java
// Mapper接口
User selectByUser(User user);
```
```xml
<!-- Mapper XML -->
<select id="selectByUser" resultMap="BaseResultMap" parameterType="com.example.User">
select
<include refid="Base_Column_List" />
from base.tb_user
where id = #{id, jdbcType=INTEGER} and name = #{name, jdbcType=VARCHAR}
</select>
```
在这种情况下,MyBatis会自动将`User`对象的属性映射到SQL语句中的占位符。
3. 多参数处理
当需要传递多个参数时,可以使用`@Param`注解将它们封装到一个Map对象中,或者创建一个专门的DTO(Data Transfer Object)类来承载这些参数。例如:
```java
// Mapper接口
User selectByParams(@Param("id") Integer id, @Param("name") String name);
```
```xml
<!-- Mapper XML -->
<select id="selectByParams" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from base.tb_user
where id = #{id, jdbcType=INTEGER} and name = #{name, jdbcType=VARCHAR}
</select>
```
4. 动态SQL
在动态SQL语句中,如`<if>`或`<choose>`元素内,通常需要引用整个参数对象,此时使用`_parameter`来引用传递进来的参数。例如:
```xml
<if test="_parameter!=null">
<if test="id != null">
AND id = #{id, jdbcType=INTEGER}
</if>
<if test="name != null and name != ''">
AND name like #{name, jdbcType=VARCHAR}
</if>
</if>
```
这里的`_parameter`代表了传递进来的整个参数对象,无论它是一个简单的类型还是复杂的对象。
MyBatis的`parameterType`属性在处理参数时提供了极大的灵活性,无论是简单类型还是复杂对象,甚至多个参数,都能通过合理的配置实现数据持久层的灵活操作。同时,通过使用`@Param`注解和`_parameter`关键字,我们可以方便地控制和测试SQL语句中的条件表达式。
683 浏览量
494 浏览量
点击了解资源详情
2022-02-28 上传
148 浏览量
点击了解资源详情
159 浏览量
144 浏览量
点击了解资源详情

清风绿竹_
- 粉丝: 2
最新资源
- 32位TortoiseSVN_1.7.11版本下载指南
- Instant-gnuradio:打造定制化实时图像和虚拟机GNU无线电平台
- PHP源码工具PHProxy v0.5 b2:多技术项目源代码资源
- 最新版PotPlayer单文件播放器: 界面美观且功能全面
- Borland C++ 必备库文件清单与安装指南
- Java工程师招聘笔试题精选
- Copssh:Windows系统的安全远程管理工具
- 开源多平台DimReduction:生物信息学的维度缩减利器
- 探索Novate:基于Retrofit和RxJava的高效Android网络库
- 全面升级!最新仿挖片网源码与多样化电影网站模板发布
- 御剑1.5版新功能——SQL注入检测体验
- OSPF的LSA类型详解:网络协议学习必备
- Unity3D OBB下载插件:简化Android游戏分发流程
- Android网络编程封装教程:Retrofit2与Rxjava2实践
- Android Fragment切换实例教程与实践
- Cocos2d-x西游主题《黄金矿工》源码解析