MyBatis参数详解:parameterType与传参方式
需积分: 10 60 浏览量
更新于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语句中的条件表达式。
155 浏览量
143 浏览量
点击了解资源详情
2022-02-28 上传
146 浏览量
2021-06-18 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
![](https://profile-avatar.csdnimg.cn/f66dacce66714d6fb40aa7cc6ee42bb6_liyi_502504.jpg!1)
清风绿竹_
- 粉丝: 2
最新资源
- ABB机器人成功刷选项方法的详细分享
- 轻松掌握Easy图形库及使用手册教程
- 全球商店Spigot插件开发实现指南
- 官方实现Android下拉刷新组件SwipeRefreshLayout
- 太空精神病:探索游戏「手机2」的ShaderLab技术
- OK6410开发板的QT移植指南与详细教程
- Jetty 9.4.2 服务器部署与main启动教程
- 数据库直连驱动包:全面兼容版本下载
- 双目视觉图像集的标准模板解析
- 高德地图Web版开发演示:Map-1
- Java测试工程DEMO:my-java-test-master详解
- 创建天气应用项目:掌握JavaScript编程
- 安卓APK反编译工具使用教程
- Android Morphing Material Dialogs 效果展示与实现方法
- Laravel货币工具包:格式化与转换解决方案
- VS2013下CSocket聊天室案例源码调试及问题解决