MyBatis总结(十八)--#{}取值方式时更加丰富的用法

本文内容来自尚硅谷

 

使用方式

 

参数位置支持的属性 
–   javaType、jdbcType、mode、numericScale、 resultMap、typeHandler、jdbcTypeName、expression

 

这里为可能为空的列名指定jdbcType类型。mybatis连接oracle数据库时,当入参对象为null时mybatis默认传给数据库的值不是null而是other则执行时会报错(使用mysql是不会报错的)

junit

	public void test03() throws IOException{
		
		SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
		SqlSession openSession = sqlSessionFactory.openSession();
		
		try{
			EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
			Employee employee = new Employee(null, "jerry4",null, "1");
			mapper.addEmp(employee);
			System.out.println(employee.getId());
			openSession.commit();
		}finally{
			openSession.close();
		}
		
	}

dao

public Long addEmp(Employee employee);

xml

	<insert id="addEmp" databaseId="oracle">
		<selectKey keyProperty="id" order="BEFORE" resultType="Integer">
			select EMPLOYEES_SEQ.nextval from dual
		</selectKey>

		insert into employees(EMPLOYEE_ID,LAST_NAME,EMAIL)
		values(#{id},#{lastName},#{email})
	</insert>

此时连接oracle时回报语法错误。

xml应该如下写法

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

这就是jdbctype的使用实例。意思是当email值为null时将把值设置成null而不是other

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值