一、在用動態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())); }