Mybaits框架的parameterType详解

本文详细解析MyBatis框架中parameterType配置项的作用及使用方法,介绍如何使用别名简化参数类型的声明,并提供自定义别名的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mybaits框架的parameterType详解

2016年12月01日 15:26:54

阅读数:1090

用过Mybatis框架的都见过下面的一个xml配置

这里写图片描述

显而易见,我们需要的参数类型分别为:java.lang.Integerjava.lang.String

我们写成全名肯定是不会错的,但这里都把包名全省略了,不禁发问,错了吗?又有人连首字母都小写了,如integer、string,错了吗?

我现在要告诉你的是上述写法都是可以的,又有什么依据呢,那我乱写一个岂不是都可以,这肯定不行,答案会在下面公布。

那我要是想传入一个集合java.util.HashMap,除了写全类名,我们又能用什么省略名去写呢,我们做个设想,去掉包名可以吗?现在公布答案,可以,那都是在哪定义的。

答案

准确来说省略的parameterType参数名其实叫做映射类型的别名(alias)

被定义在类:org.apache.ibatis.type.TypeAliasRegistry

一起看看重要的源代码
这里写图片描述
这里写图片描述
这里写图片描述

是否有一种豁然开朗的感觉,以后映射类型的别名都知道怎么去写了吧,不要再去写那么长的类名了。
并且别名是不区分大小写的,下面的代码可以得到诠释。

这里写图片描述

最后有些人可能会说,一些常见的JDK提供的类,mybaits确实已经帮我们封装好了别名,如果是我们自定义的类呢,我在配置中觉得长了,频繁的写不太爽,也想用别名的方式。

Mybatis当然考虑到了,配置如下:

这里写图片描述

小伙伴们,是否get了呢,get的话,下面点个赞吧。

### MyBatis 框架使用教程 #### 一、环境搭建 为了能够顺利运行基于 MyBatis 的应用程序,需先配置好开发环境。通常情况下,在 Maven 或 Gradle 构建工具的支持下引入必要的依赖项来完成这一过程。 对于 Maven 用户来说,可以在 `pom.xml` 文件内加入如下片段以添加 MyBatis 及其与 Spring Boot 集成所需的库: ```xml <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.2.0</version> </dependency> ``` #### 二、编写 Mapper 接口 创建接口类用于定义数据访问层的方法签名,这些方法对应着 SQL 查询操作。例如,假设有一个名为 User 的实体对象,则相应的 UserDao 应该像这样设计[^2]: ```java public interface UserDao { @Select("SELECT * FROM users WHERE id=#{id}") User selectById(int id); } ``` #### 三、映射文件配置 除了通过注解的方式指定 SQL 语句外,还可以利用 XML 映射文档来进行更复杂的查询构建工作。下面是一个简单的例子展示如何设置 `<select>` 节点并关联到上面提到的 DAO 方法上: ```xml <mapper namespace="com.example.dao.UserDao"> <!-- 定义SQL查询 --> <select id="selectById" resultType="User"> SELECT * FROM users u WHERE u.id = #{id}; </select> </mapper> ``` #### 四、处理动态 SQL 当面对多变的数据筛选需求时,MyBatis 支持灵活运用诸如 `<if>` 和 `<choose>(when/otherwise)` 等标签构造条件性的 SQL 片段。虽然缺少显式的 else 结构,但是可以通过组合不同的逻辑判断达成相似目的[^1]。 ```xml <select id="findActiveUsersByCriteria" parameterType="map" resultMap="BaseResultMap"> SELECT ... FROM t_user tu <where> <if test="name != null and name != '' "> AND tu.name LIKE CONCAT('%',#{name},'%') </if> <if test="age != null "> AND tu.age >= #{age} </if> <choose> <when test="status == 'ACTIVE'">AND status='A'</when> <otherwise>AND status='I'</otherwise> </choose> </where> </select> ``` #### 五、事务管理 在实际应用中往往涉及到多个数据库表之间的联合更新动作,这时就需要考虑采用合适的事务策略确保整个业务流程的一致性和可靠性。MyBatis 允许开发者自定义 `<transactionManager/>` 元素中的 type 属性值为 "JDBC" 或者 "MANAGED"[^3],前者意味着由程序内部控制提交或回滚行为;后者则表示将此职责委派给外部容器(比如 WebSphere)去执行。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值