MyBatis参数详解:parameterType与传参方式
需积分: 10 102 浏览量
更新于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语句中的条件表达式。
2020-12-14 上传
2022-02-28 上传
2014-04-28 上传
2020-08-27 上传
2021-06-18 上传
2018-05-22 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
清风绿竹_
- 粉丝: 2
- 资源: 21
最新资源
- testlnk-易语言
- 0556、计数器电路应用于自行车.rar
- Sachithanantham-P
- Fizzbuzz-extreme
- react-gifexpertapp:Buscador de Gifs con api Giphy
- 辰曦机器人官网源码含辰曦机器人.zip
- osiris-output:用于可视化Osiris仿真代码结果的脚本
- 易语言3D号码走势分析-易语言
- dos_good_payoff:对以下三个领域的绩效与薪酬之间关系的调查:商业,体育和高等教育
- 用PHP编写HTML到Markdown转换器 Markdownify-开源
- Site_Pessoal
- 0529、人体接近监测.rar
- will-exo2
- Age-Calculator
- GGJ15:2015 年全球游戏果酱
- libOpenSRTP-开源