MyBatis總結(十八)--#{}取值方式時更加豐富的用法
阿新 • • 發佈:2018-12-09
本文內容來自尚矽谷
使用方式
引數位置支援的屬性 – 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