MyBatis錯誤收集

一、在用動態SQL老一個There is no getter for property named 'id' in 'class java.lang.Integer錯誤 java

<select id="queryUser" parameterType="Integer" resultType="com.accp.TestMybatis.dto.User">
 select * from scott.users
 <if test="id!=null"> 
   where id = #{id}
 </if>
</select>
<!--可是把if去掉如:-->
<select id="queryUser" parameterType="Integer" resultType="com.accp.TestMybatis.dto.User">
   select * from scott.users where id = #{id}
</select>
<!--又正常,很是蛋疼。-->

解決方法: sql

將<if test="id!=null">改成
<if test="_parameter!=null">  
    where id = #{_parameter}
</if>

問題來源:http://bbs.csdn.net/topics/370173955?page=1數據庫

二、在mybatis中使用select top #{top}  *  from tb 語句出現「@P0' 附近有語法錯誤"。mybatis

問題分析:dom

   語句編譯後#{}是預處理狀態,在Java中對數據庫查詢時常用「Select Top ? * From 表名 Where 列名 = 
 ?」的SQL語句,此時的問號是PreparedStatement預編譯對象的參數佔位符,須要使用setXX()系列方法對其賦值後再執行。可是,Top後面是不容許使用問號佔位符的,此處的錯誤就是由此引發的。
ide

解決方法: this

   語句修改成:select top ${top}  *  from tb  spa

問題來源:http://ekekyn.blog.163.com/blog/static/313887320122159632536/.net

三、使用SQL批量添加數據時,出現The incoming tabular data stream (TDS) remote procedure call (RPC) protocol stream is incorrect. Too many parameters were provided in this RPC request. The maximum is 2100.   code

SQL語句:

INSERT INTO [TABLE]([FIELD],[FIELD]...)VALUES([VALUE],[VALUE]...),([VALUE],[VALUE]...)...

解決方法:

public void batchInsert(List<Course> courses) {
   for(int i = 0,s = 0; i < courses.size()/100;i++,s+=100){ 
	sqlSessionTemplate.insert("com.netDragon.domain.Course.batchInsert", courses.subList(s, s+100));
   }
   if(courses.size() - courses.size()/100*100 > 0)
	sqlSessionTemplate.insert("com.netDragon.domain.Course.batchInsert", courses.subList(courses.size()/100*100,courses.size()));
   }
相關文章
相關標籤/搜索