(八)Mybatis当中#{}常用属性的用法

没有检索到摘要

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

这篇文章主要讲述Mybatis当中#{}常用属性的用法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。

#{}占位符的属性

这是他的一些属性,当然本篇文章重点讲解在开发当中我们会用到的一些属性。

javaType、 jdbcType、 mode(存储过程)、 numericScale、
resultMap、 typeHandler、 jdbcTypeName、 expression(未来准备支持的功能);

用法#{age ,jdbcType=TINYINT ,javaType=short}

javaType

通常可以从参数对象中来去确定,这个属性一般很少使用。
如果用的eclipse可以全局搜ctrl+shift+t 搜索JdbcType
这个就是xml当中传值类型映射关系,也就是java当中的类型和jdbc的属性关系。

jdbcType

如果用的orcle数据库假如数据传值为Null的时候就会报错,这个时候可以通过设置这个来进行避免报错。
代码示例:
这是一个新增返回主键的Orcle示例

<insert id="addEmp" databaseId="oracle">
	<selectKey keyProperty="id" order="BEFORE" resultType="Integer">
		select EMPLOYEES_SEQ.nextval from dual 
	</selectKey>
	insert into employees(ID,LAST_NAME,EMAIL) 
	values(#{id},#{lastName},#{email}) 
</insert>

假如last或者email传值为null就会报错,报无效的列类型
在这里插入图片描述
原因:
当传值为Null的时候,mybatis会自动对应jdbcType类当中的other类型,而oracle并不认识这个类型,mysql他不会报错的。
解决方案:
当指定类型之后,他就不会去默认other类型了,这样就可以解决传null值报错问题

insert into employees(ID,LAST_NAME,EMAIL) 
		values(#{id},#{lastName,jdbcType=NULL},#{email,jdbcType=NULL}) 

针对于上面的我们还得遇见null就得加那个属性,Mybatis也给我们提供了一种全局设置,在mybatis-config.xml添加以下配置。

<settings>
	<setting name="jdbcTypeForNull" value="NULL"/>
</settings>

mode调用存储过程

mode 属性允许指定 IN,OUT 或 INOUT 参数
顺便记录一下oracle存储过程创建吧。
存储过程书写要规范(IN 、OUT 参数一定要写上,例如:V_YEAR IN INTEGER),不然JAVA调用有问题,拿不到存储过程返回值

CREATE OR REPLACE PROCEDURE STATIC_DIA_QUARTER(V_YEAR    IN INTEGER,
                                               V_QUARTER IN INTEGER) IS
<select id="getAndSaveHyperReport" statementType="CALLABLE" parameterType="java.util.Map" >
  {call STATIC_HYPER_QUARTER(#{year,mode=IN,jdbcType=INTEGER},#{quarter,mode=IN,jdbcType=INTEGER})}
</select>

numericScale保留小数点几位

#{height,jdbcType=NUMERIC,numericScale=2}) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

怪 咖@

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

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

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

打赏作者

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

抵扣说明:

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

余额充值