我試圖使用HashMap物件來查詢資料庫中的ID和密碼,但我做不到。我只能得到如下的錯誤資訊:
Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException: 無法設定引數for mapping。ParameterMapping{property='name', mode=IN, javaType=class java.lang。 Object, jdbcType=null, numericScale=null, resultMapId='null'/span>, jdbcTypeName='null'/span>, expression='null'/span>}。原因:org.apache.ibatis.type.TypeException。設定null for引數#1與JdbcType OTHER的錯誤。嘗試設定不同的JdbcType for this引數或不同的jdbcTypeForNull配置屬性。原因: java.sql.SQLException: ???? ? ??: 1111。
我將我的MyBatis映射器設定如下:
<select id="selectOneByNTB" parameterType="hashMap" resultType=" custDto">
select * from Customer_info wherecust_name = #{name} and cust_telephone=#{telephone} and cust_birthday=#{birthday}。
</select>
而且,我認為用我的控制器和dao就可以了,但我要附上它。
@RequestMapping(value="/findId", method=RequestMethod.POST)
public String findId(@ModelAttribute Customer_infoDto cuDto, HttpServletResponse response) throws Exception {
HashMap<String, String> map = new HashMap<String, String>()。
map.put("name", cuDto.getCust_name() )。
map.put("telephone", cuDto.getCust_telephone() )。
map.put("date", cuDto.getCust_birthday())。
System.out.println("name: " map.get("name"))。
System.out.println("電話。" map.get("telephone") )。
System.out.println("生日。" map.get("date"))。
String cust_id = cudao.selectOneByNTB(map).getCust_id()。
response.setCharacterEncoding("UTF-8"/span>)。
response.setContentType("text/html; charset=UTF")。
PrintWriter out = response.getWriter()。
out.println("<meta charset='UTF-8'><script>alert('Your ID is " cust_id "); history.go(-1); < /script> ")。
out.flush()。
return "redirect:/findIdAndPw"。
}
public Customer_infoDto selectOneByNTB(HashMap<String, String> map) {
System.out.println("name" ((map.get("cust_name"))));
return ss.selectOne(NameSpace "selectOneByNTB") 。
}
我檢查了控制器中的HashMap變數,dao正確地列印了他們的專案。
。所以,我認為映射器是問題所在。我的映射器有什么問題嗎?或者我的其他代碼有什么問題嗎?
FYI,我把我的 pom.xml dependecies,
<dependencies>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<版本>1.2</version>
</dependency>
<依賴性>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<版本>4.3.30.RELEASE</version>
</dependency>
<依賴性>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<版本>4.3.30.RELEASE</version>
</dependency>
<依賴性>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<版本>4.3.30.RELEASE</version>
</dependency>
<依賴性>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<版本>2.4</version>
</dependency>
<依賴性>
<groupId>commons-pool</groupId>
<artifactId>commons-pool</artifactId>
<版本>1.6</version>
</dependency>
<依賴性>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<版本>1.4</version>
</dependency>
<依賴性>
<groupId>oracle</groupId>
<artifactId>ojdbc6</artifactId>
<版本>11.2.0.3</version>
</dependency>
<依賴性>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<版本>3.5.6</version>
</dependency>
<依賴性>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<版本>2.0.6</version>
</dependency>
<依賴性>
<groupId> aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<版本>1.5.4</version>
</dependency>
<依賴性>
<groupId>javax.injection</groupId>
<artifactId>javax.injection</artifactId>
<版本>1</version>
</dependency>
<依賴性>
<groupId>com.s fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<版本>2.12.3</version>
</dependency>
</dependencies>
uj5u.com熱心網友回復:
在selectOneByNTB()方法中,你需要傳遞HashMap引數作為selectOne()的第二個引數。
public Customer_infoDto selectOneByNTB(HashMap<String, String> map){
System.out.println("name" ((map.get("cust_name"))));
return ss.selectOne(NameSpace "selectOneByNTB", map) 。
}
uj5u.com熱心網友回復:
我沒有得到這個錯誤。 試著修改一下這個代碼:
HashMap<String, String> map = new HashMap<String, String> ();
將HashMap中的第二個引數設為Object,可以輸入String、int型別,而不僅僅是字串型別
。在此代碼中
HashMap<String, Object> map = new HashMap<> ();
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/313463.html
標籤:
